Summary
CVE-2026-91989 is a high-severity path traversal vulnerability (CVSS 8.7) in the optional dashboard HTTP server of the atomic-agents-stack PyPI package. The flaw allows unauthenticated, remote attackers to read arbitrary files on the host filesystem by sending crafted ../ sequences to the dashboard’s DashboardHandler.do_GET endpoint. All versions of atomic-agents-stack prior to 1.1.0 are affected.
Technical details
- Root cause:
atomic_agents/dashboard/serve.pybuilds filesystem paths directly from the incoming HTTP request path and serves the resulting file without validating that it stays inside the intendedagents_rootdirectory. Unlike other file-access paths in the codebase, this handler does not route through the library’s_io.safe_resolve_undercontainment check. - Trigger conditions: The optional dashboard server must be enabled (it hosts static HTML assets and renders dynamic agent interaction logs). Literal
../segments surviveurlparseandPathjoining, so a request path containing traversal sequences escapes the intended root, including through the static-file serving branch. - Attack vector: Network — the dashboard binds to loopback by default, but the
--hostflag is an operator-settable option; binding to0.0.0.0exposes the server to the LAN. Even a loopback-bound instance can potentially be reached via DNS-rebinding attacks from a browser or SSRF from a co-located service. - Impact: Unauthenticated disclosure of arbitrary files readable by the process running the dashboard (e.g., configuration files, credentials, source code, logs), with no impact to integrity or availability.
Affected software
atomic-agents-stack(PyPI package, vendor: dep0we) — all versions before 1.1.0- Fixed in version 1.1.0 and later
Severity
- CVSS v4.0: 8.7 (High) —
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - CVSS v3.1: 7.5 (High) —
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Mitigation and recommended actions
- Immediate: Upgrade
atomic-agents-stackto version 1.1.0 or later, which routes all dashboard file access through the_io.safe_resolve_undercontainment check and returns a 404 on path traversal attempts. - If immediate patching is not possible:
- Disable the optional dashboard HTTP server if it is not required.
- Ensure the dashboard is not bound to
0.0.0.0or any externally reachable interface; keep it restricted to loopback and avoid exposing it via reverse proxies. - Restrict network access to the dashboard port using firewall rules or network segmentation, and monitor for anomalous requests containing
../traversal sequences.

