zae-limiter: DynamoDB hot partition throttling enables per-entity Denial of Service
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
RateLimiterUnavailableis 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
- Create an entity with high rate limits (e.g., 100,000 rpm)
- Send sustained traffic at 1,000+ req/sec to a single entity
- Observe DynamoDB
ThrottledRequestsCloudWatch metric increasing - Observe
acquire()latency spikes andRateLimiterUnavailableexceptions
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:1000reserved 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
wcuexhaustion or proactively by aggregator - Shard 0 at suffix
#0is source of truth forshard_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
wcufrom snapshots - Clean break migration: schema version bump, old buckets ignored, new buckets created on first access
- $0.625/M preserved on hot path
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| Python (PyPI) | zae-limiter | < 0.10.1 | 0.10.1 |
Verweise
- https://github.com/zeroae/zae-limiter/security/advisories/GHSA-76rv-2r9v-c5m6
- https://nvd.nist.gov/vuln/detail/CVE-2026-27695
- https://github.com/zeroae/zae-limiter/commit/481ce44d818d66e31d8837bc48519660ce4c267f
- https://github.com/zeroae/zae-limiter
- https://github.com/zeroae/zae-limiter/releases/tag/v0.10.1
- https://pypi.org/project/zae-limiter
- https://github.com/advisories/GHSA-76rv-2r9v-c5m6
- CVSS-Vektor
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L- Schwäche (CWE)
CWE-770- Plattform
- Python (PyPI)
- Paket
zae-limiter- Veröffentlicht
- 25.02.2026
- Aktualisiert
- 11.10.2026 14:17
Quellen und Lizenzen
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
Schwachstellenhistorie: zae-limiter
Alle veröffentlichten Schwachstellen dieses Pakets (Python (PyPI)), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.
Dies ist die einzige bekannte Schwachstelle dieses Pakets.
Erkennen Sie Schwachstellen in Ihrer Anwendung
Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.