highVulnerability

GHSA-rm43-82j9-r4mj

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`).

Properties

ghsa_id
GHSA-rm43-82j9-r4mj
severity
high
summary
atomic-agents-stack: Dashboard HTTP server path traversal allows arbitrary file read
cve_id
GHSA-rm43-82j9-r4mj
is_ghsa_only
true
ghsa_published
2026-08-13T14:17:13Z
source_url
https://github.com/advisories/GHSA-rm43-82j9-r4mj
ghsa_updated
2026-08-13T14:17:14Z

Related Entities (4)

VULNERABLE_TO (1)

[Software]pip/atomic-agents-stack

AFFECTS (1)

[Software]pip/atomic-agents-stack

HAS_WEAKNESS (1)

[Weakness]Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

REPORTED_BY (1)

[Source]GitHub Advisory Database

Explore deeper with Ninja Signal's threat intelligence graph

GHSA-rm43-82j9-r4mj — Ninja Signal Threat Intelligence | Ninja Signal