Résumé
atomic-agents-stack: Parallel helper/delegate batch reserves $0 for models absent from the pricing table, bypassing the cost-cap fan-out guard
Détails de l’avis
_estimate_batch_cost (atomic_agents/agent.py) looks up the per-model output price with PRICING.get(model, {}), returning 0.0 for any model not in the hardcoded pricing table. _check_batch_reservation then early-returns when the reservation is <= 0, skipping the batch reservation entirely. That reservation is the only defense against the documented fan-out race where every parallel helper/delegate reads the identical pre-batch on-disk cost total and each passes its individual check even though the collective spend overruns the configured cap.
Impact: an operator running any model not in the pricing table (self-hosted/Ollama/vLLM, a new provider SKU) with cost_guardrails + daily_cap_usd set believes the cap protects them, but a single parallel batch can blow past the cap. The parallel-helper model argument can also be steered to an unknown id. The sibling dream._estimate_dream_cost does this correctly (PRICING.get(model, _fallback_pricing())), which makes this a clear defect.
Affected: agent.py (_estimate_batch_cost / _check_batch_reservation), all versions through 1.0.0.
Fix: use PRICING.get(model, _costs._fallback_pricing())['output'] (mirror dream/calc_cost). Add a conformance test asserting an unknown-model batch reserves > 0 and that an over-cap unknown-model batch raises CostGuardrailBlocked.
Références
Vulnérabilités liées
Tout Supply chain →- MEDIUMCVE-2026-71486
vLLM: Derender endpoints decode caller-supplied GenerateResponse token IDs without output bounds
- HIGHCVE-2026-79921
amqp091-go has a Potential Memory Exhaustion/Protocol Violation via Broker-Controlled Oversized Payload
- HIGHCVE-2026-67446
Mailpit: Thumbnail generation decodes unbounded image dimensions before scaling
- MEDIUMCVE-2026-82562
qs array-limit bypass via bracket-key comma parsing
- MEDIUMGHSA-8423-8fgw-73vq
tornado: multipart split() creates huge temp list before max_parts check -> memory amplification DoS (httputil.py:34)
- MEDIUMCVE-2026-73228
Django REST framework: Potential bypass of Django `DATA_UPLOAD_MAX_MEMORY_SIZE` when parsing oversized JSON and urlencoded request bodies via DRF `request.data`