Media

zae-limiter: DynamoDB hot partition throttling enables per-entity Denial of Service

  • Publicada: 25.02.2026
  • Actualizado: 11.10.2026 14:17

Summary

All rate limit buckets for a single entity share the same DynamoDB partition key (namespace/ENTITY#{id}). A high-traffic entity can exceed DynamoDB's per-partition throughput limits (~1,000 WCU/sec), causing throttling that degrades service for that entity — and potentially co-located entities in the same partition.

Details

Each acquire() call performs a TransactWriteItems (or UpdateItem in speculative mode) against items sharing the same partition key. For cascade entities, this doubles to 2-4 writes per request (child + parent). At sustained rates above ~500 req/sec for a single entity, DynamoDB's adaptive capacity may not redistribute fast enough, causing ProvisionedThroughputExceededException.

The library has no built-in mitigation:

  • No partition key sharding/salting
  • No write coalescing or batching
  • No client-side admission control before hitting DynamoDB
  • RateLimiterUnavailable is raised but the caller has already been delayed

Impact

  • Availability: High-traffic entities experience elevated latency and rejected requests beyond what their rate limits specify
  • Fairness: Other entities sharing the same DynamoDB partition may experience collateral throttling
  • Multi-tenant risk: In a shared LLM proxy scenario, one tenant's burst traffic could degrade service for others

Reproduction

  1. Create an entity with high rate limits (e.g., 100,000 rpm)
  2. Send sustained traffic at 1,000+ req/sec to a single entity
  3. Observe DynamoDB ThrottledRequests CloudWatch metric increasing
  4. Observe acquire() latency spikes and RateLimiterUnavailable exceptions

Remediation Design: Pre-Shard Buckets

  • Move buckets to PK={ns}/BUCKET#{entity}#{resource}#{shard}, SK=#STATE — one partition per (entity, resource, shard)
  • Auto-inject wcu:1000 reserved limit on every bucket — tracks DynamoDB partition write pressure in-band (name may change during implementation)
  • Shard doubling (1→2→4→8) triggered by client on wcu exhaustion or proactively by aggregator
  • Shard 0 at suffix #0 is source of truth for shard_count. Aggregator propagates to other shards
  • Original limits stored on bucket, effective limits derived: original / shard_count. Infrastructure limits (wcu) not divided
  • Shard selection: random/round-robin. On application limit exhaustion, retry on another shard (max 2 retries)
  • Lazy shard creation on first access
  • Bucket discovery via GSI3 (KEYS_ONLY) + BatchGetItem. GSI2 for resource aggregation unchanged
  • Cascade: parent unaware, protected by own wcu
  • Aggregator: parse new PK format, key by shard_id, effective limits for refill, filter wcu from snapshots
  • Clean break migration: schema version bump, old buckets ignored, new buckets created on first access
  • $0.625/M preserved on hot path

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Python (PyPI) zae-limiter < 0.10.1 0.10.1

Referencias

Puntuación CVSS 4.3/10
Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L
Debilidad (CWE)
CWE-770
Plataforma
Python (PyPI)
Paquete
zae-limiter
Publicada
25.02.2026
Actualizado
11.10.2026 14:17

Fuentes y licencias

OSV / GitHub Advisory Database - PYSEC-2026-3434 - PyPA Advisory Database; CC BY 4.0

OSV / GitHub Advisory Database - GHSA-76rv-2r9v-c5m6 - CC BY 4.0

Historial de vulnerabilidades: zae-limiter

Todas las vulnerabilidades publicadas de este paquete (Python (PyPI)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Esta es la única vulnerabilidad conocida de este paquete.

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.