CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-RM43-82J9-R4MJ

GHSA-RM43-82J9-R4MJ: Path Traversal (Arbitrary File Read) in atomic-agents-stack Dashboard

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 13, 2026·6 min read·2 visits

Executive Summary (TL;DR)

Unauthenticated remote path traversal in atomic-agents-stack dashboard allows arbitrary file read.

A path traversal vulnerability in the optional dashboard server of atomic-agents-stack before version 1.1.0 allows unauthenticated remote attackers to read arbitrary files from the host filesystem.

Vulnerability Overview

The optional dashboard HTTP server included in the atomic-agents-stack Python package exposes an attack surface that permits unauthenticated arbitrary file reads. The affected component is located in atomic_agents/dashboard/serve.py and is implemented via DashboardHandler, a subclass of BaseHTTPRequestHandler. When enabled, this server is designed to host static HTML assets and render dynamic agent interaction logs.

The vulnerability lies within the endpoint routing mechanisms that process incoming HTTP GET requests. Because the server fails to restrict access to the designated static and agent asset directories, any network-adjacent or remote attacker with access to the dashboard port can manipulate file paths. This results in a classic Path Traversal vulnerability (CWE-22) that allows the extraction of sensitive configuration files, system files, and environment specifications.

Exploitation does not require authentication or active session state, elevating the impact to high-severity. Although the server binds to the local loopback interface by default, configuration options permit exposing the service on all network interfaces. Additionally, the service remains susceptible to exploitation via Server-Side Request Forgery or DNS rebinding techniques even when restricted to loopback.

Root Cause Analysis

The root cause of this vulnerability is the insecure resolution of filesystem paths within the do_GET handler of DashboardHandler. Specifically, when requests are directed to the /agents/ or /_dashboard/ paths, the server retrieves file paths by appending the user-supplied URI string directly to the self.agents_root base path. This concatenation is performed using Python's pathlib.Path division operator without sanitizing or canonicalizing the resulting target path.

While pathlib provides structured path representations, appending paths containing directory traversal sequences (such as ../) does not raise an exception. Instead, the traversal sequences remain embedded within the path object. When the handler invokes filesystem methods like exists() or is_file() on the unsanitized Path object, the underlying operating system resolves the relative traversal segments, allowing the path to escape the intended directory boundary.

Because there are no containment checks, an HTTP request pointing to /etc/passwd via traversal escapes the sandbox seamlessly. This dynamic is illustrated in the logical diagram below, showcasing how a validation omission allows the directory escape sequence to interact directly with the host filesystem.

Code Analysis

In vulnerable versions up to and including 1.0.0, the routing logic uses direct string manipulation and unsafe joins. The do_GET method handles requests targeting /agents/ by stripping the prefix and then appending the remaining string directly to self.agents_root. This direct trust in the URL path is demonstrated in the following vulnerable snippet:

if path.startswith("/agents/"):
    agent_name = path[len("/agents/"):].rstrip("/")
    # UNSAFE: Direct concatenation allows traversal via agent_name
    self._serve_file(self.agents_root / agent_name / "dashboard.html", "text/html")
    return

In the patched version 1.1.0 (commit ec474f458122c5c0ca718d0df3078c8080338b2c), the developer implemented a rigorous containment check using a custom helper function named safe_resolve_under. This helper ensures that the resolved target is situated strictly within the expected parent directory. The updated path-resolution flow handles /agents/ requests securely:

if path.startswith("/agents/"):
    agent_name = path[len("/agents/") :].rstrip("/")
    # Early explicit check for path traversal indicators
    if "/" in agent_name or "\\" in agent_name or ".." in agent_name:
        self.send_error(404, "Not found")
        return
    try:
        # Enforces absolute directory containment
        resolved = safe_resolve_under(agent_name, self.agents_root)
    except PathTraversalError:
        self.send_error(404, "Not found")
        return
    self._serve_file_contained(resolved / "dashboard.html", "text/html")
    return

The fix is comprehensive because it combines multiple defense layers. It performs an early rejection of common path separation symbols to minimize side-channel variations, followed by strict canonicalization using safe_resolve_under. This methodology resolves symbolic links before comparing the target path with the base directory, eliminating symlink bypasses.

Exploitation Methodology

An attacker can exploit this vulnerability using basic network utilities such as curl or wget. The exploitation requirements depend on the server configuration and network placement. If the dashboard server is configured to bind to 0.0.0.0, it is directly reachable over the network on port 8765, which allows unauthenticated external access.

To execute the attack, the adversary must construct an HTTP GET request containing directory traversal sequences that target a known system file. Using the --path-as-is flag with curl ensures that the local client does not resolve the relative path segments before transmitting the request to the target server. The target path climbs out of the dashboard directory structure to reach administrative system files.

A typical exploit payload targets the local configuration files or operating system user databases. For instance, sending a request to /_dashboard/../../../../etc/passwd forces the server to traverse up the directory structure and return the contents of the /etc/passwd file. The server processes the request, locates the file, and streams its content back to the client with an HTTP 200 OK status code.

Impact Assessment

The impact of this path traversal flaw is classified as high-severity with a CVSS v4.0 base score of 8.2. Since the server runs with the permissions of the user starting the Python application, an attacker can retrieve any file that this user has read access to. This typically includes sensitive application source code, API keys, private configuration files, database credentials, and local system configurations.

A secondary impact involves the leakage of deployment environment details that can facilitate subsequent attacks. For example, reading files such as /proc/self/environ, .env, or configuration files within the application root exposes cryptographic secret keys and access tokens. These leaked credentials can lead to complete host or API account compromise if the keys are reused elsewhere.

Because the service lacks write capabilities or destructive file actions, the integrity and availability of the host remain unaffected. However, the high confidentiality impact presents significant risk to deployments. This risk is especially elevated in cloud container environments where service account tokens are often stored at predictable filesystem paths.

Remediation and Mitigation

The primary remediation strategy is to upgrade the atomic-agents-stack library to version 1.1.0 or greater. This version incorporates the safe_resolve_under verification utility across all endpoints in the dashboard implementation, which effectively neutralizes path traversal attempts. Upgrades can be performed directly through the Python package installer pip.

In environments where an immediate package upgrade is not feasible, several temporary mitigation techniques can reduce risk. Administrators must ensure the dashboard server is configured to bind strictly to the loopback interface (127.0.0.1) rather than 0.0.0.0, thereby limiting the direct network attack surface. Access control lists or local host firewalls should be implemented to drop traffic to port 8765 from external networks.

Additionally, running the Python process under a dedicated, low-privilege system user account conforms to the principle of least privilege. This configuration prevents the server from reading highly sensitive system files (such as /etc/shadow) even if a path traversal request successfully traverses out of the application root. Developers should also verify that symbolic links within the static asset folders do not point to directories outside the designated root.

Fix Analysis (1)

Technical Appendix

CVSS Score
8.2/ 10
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Affected Systems

atomic-agents-stack

Affected Versions Detail

Product
Affected Versions
Fixed Version
atomic-agents-stack
dep0we
<= 1.0.01.1.0
AttributeDetail
CWE IDCWE-22
Attack VectorNetwork
CVSS v4.08.2 (High)
EPSS ScoreNot Applicable
ImpactArbitrary File Read
Exploit StatusProof of Concept (PoC)
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
CWE-22
Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize sequences such as '..' that can resolve to a location outside of the directory.

Known Exploits & Detection

GitHub Fix Commit Test SuiteComprehensive integration security test suite (test_dashboard_serve_security.py) verifying regression resistance.

Vulnerability Timeline

Security fix committed to master repository
2026-06-10
Security Advisory published
2026-08-13

References & Sources

  • [1]GHSA-RM43-82J9-R4MJ Advisory
  • [2]Vendor Security Advisory
  • [3]Fix Commit

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•19 minutes ago•CVE-2026-54526
9.9

CVE-2026-54526: Strict Template Referencing Bypass and Privilege Escalation in Argo Workflows

A critical security bypass vulnerability in Argo Workflows allows authenticated attackers with workflow submission privileges to bypass 'Strict' or 'Secure' template referencing restrictions. By injecting unvalidated fields into the nested ArtifactGC configuration, attackers can execute arbitrary pod patches, leading to host namespace escape and cluster-wide privilege escalation.

Alon Barad
Alon Barad
0 views•6 min read
•about 1 hour ago•CVE-2026-54249
6.8

CVE-2026-54249: Server-Side Request Forgery via Confused Deputy in Pydantic AI UI Adapters

A Server-Side Request Forgery (SSRF) / Confused Deputy vulnerability has been identified in Pydantic AI UI Adapters (such as VercelAIAdapter). Under certain conditions, a malicious client can supply manipulated message history with provider metadata that forces the server to resolve files within privileged cloud environments (AWS S3, Google Cloud Storage) or model providers. This occurs because the adapters deserialize client-provided metadata structures directly into UploadedFile instances without validation, which are subsequently fetched using high-privilege server credentials.

Alon Barad
Alon Barad
2 views•7 min read
•about 18 hours ago•CVE-2026-9318
5.4

CVE-2026-9318: Stored Cross-Site Scripting via HTML Export in Jazzband tablib

CVE-2026-9318 is a stored cross-site scripting (XSS) vulnerability affecting Jazzband tablib versions prior to 3.10.0. The flaw is located in the HTML export functionality of multi-sheet Databook objects. Due to raw f-string interpolation, unsanitized sheet titles containing malicious script tags are rendered directly as HTML, allowing arbitrary client-side code execution in a victim's browser.

Amit Schendel
Amit Schendel
6 views•8 min read
•about 19 hours ago•CVE-2026-54917
10.0

CVE-2026-54917: Cross-Bucket Path Traversal and Authorization Bypass in SeaweedFS S3 and Iceberg Gateways

CVE-2026-54917 is a critical path traversal and authorization bypass vulnerability affecting the S3 and Iceberg REST catalog gateways in SeaweedFS. By explicitly disabling canonical path cleaning in the gorilla/mux routing system, relative path segments such as '..' are allowed to bypass routing constraints and access control checks. When these paths are collapsed server-side by the backend filer, they resolve to folders outside the authorized bucket boundary, allowing unauthorized cross-bucket access.

Amit Schendel
Amit Schendel
7 views•5 min read
•about 20 hours ago•GHSA-JWJP-4649-V8JP
7.5

GHSA-jwjp-4649-v8jp: Out-of-Bounds Read in SIPSorcery SCTP SACK Chunk Parsing

An out-of-bounds read vulnerability in the SCTP SACK chunk parser of SIPSorcery leads to Denial of Service (DoS) or silent internal state corruption due to lack of boundary validation on incoming chunk elements.

Amit Schendel
Amit Schendel
5 views•6 min read
•about 21 hours ago•GHSA-PFVM-W89X-94JW
7.5

GHSA-pfvm-w89x-94jw: Uncaught Exception in STUN Parser Causes Complete TurnServer Receive Loop Termination

An uncaught exception vulnerability exists in SIPSorcery's TurnServer component, where unauthenticated malformed UDP packets can crash the core UDP receive loop, resulting in a persistent Denial of Service.

Amit Schendel
Amit Schendel
7 views•6 min read