GHSA-rm43-82j9-r4mj — atomic-agents-stack
Fix: dep0we/atomic-agents-stack@ec474f4GHSA-rm43-82j9-r4mj is a Path Traversal vulnerability in atomic-agents-stack. A fix is available for atomic-agents-stack — see the affected versions and patch details below.
atomic-agents-stack: Dashboard HTTP server path traversal allows arbitrary file read
Exploitation Status
No confirmed exploitation observed yet
- CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.
- CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.
Exploitation and automatability from CISA’s SSVC triage for GHSA-rm43-82j9-r4mj.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
Real-World Exposure
atomic-agents-stackReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects PyPI packages — download data is not available via public APIs for these ecosystems.
Description
The optional dashboard HTTP server (atomic_agents/dashboard/serve.py) builds filesystem paths directly from the request path and serves them without a containment check. It is the only per-request untrusted-path site in the codebase that does not route through _io.safe_resolve_under. Literal ../ segments survive urlparse and Path joining, so a request can read files outside the intended agents_root (including via the static branch).
Impact: arbitrary file read. The default bind is loopback, but --host is an operator-settable documented flag; binding 0.0.0.0 exposes this to the LAN. Even on loopback it is reachable via DNS-rebinding from a browser or SSRF from a co-located service.
Affected: dashboard/serve.py (DashboardHandler.do_GET / _serve_file), all versions through 1.0.0.
Fix: route every served path through _io.safe_resolve_under against the intended root and return 404 on PathTraversalError; reject ../separators early; optionally refuse a non-loopback --host unless an explicit auth/allow flag is set (matching serve/_app.py).
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐍PyPI | atomic-agents-stack | all versions | 1.1.0pip install --upgrade 'atomic-agents-stack==1.1.0' |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for atomic-agents-stack, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update atomic-agents-stack to 1.1.0 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-rm43-82j9-r4mj is resolved across your whole dependency graph.
Workarounds
Resolve every user-supplied path to its canonical form and reject anything that escapes the intended directory, and run the component under an account that has no read or write access outside the directory it legitimately serves.
Frequently Asked Questions
Is GHSA-rm43-82j9-r4mj in your dependencies?
Find it across PyPI, including transitive dependencies.