CVE-2026-77269: mcp-atlassian: path traversal enables arbitrary file read
GHSA-h7wj-5v37-59r2MEDIUMPoC AVAILABLECISA: TRACK*The mcp-atlassian MCP server, which gives AI agents access to Confluence and Jira, fails to restrict the file_path parameter in its Confluence upload tools. Anyone who can invoke those tools, including an LLM steered by prompt injection, can attach any file the server process can read (SSH keys, .env files, cloud credentials) to a Confluence page and then retrieve it. This is an incomplete fix for CVE-2026-27825, where only the download paths were hardened. Exploitation risk is moderate: EPSS is 0.39% (69th percentile), there is no public exploit, no Nuclei template and no KEV listing, and CISA SSVC says TRACK*. Only 1 downstream dependent is tracked, but the package has 38 prior CVEs, which points to a recurring weakness in input validation. Upgrade to mcp-atlassian 0.22.0 and rotate any credentials stored on hosts that ran the vulnerable version with exposed MCP endpoints.
What is the risk?
Medium (CVSS 6.5). The attack is network-reachable, low complexity, needs low privileges, and requires no user interaction. Impact is high confidentiality loss only, with no integrity or availability effect. Risk rises sharply where the MCP server runs with broad filesystem access or holds cloud keys, or where the agent processes untrusted content that can drive tool calls through prompt injection. Exploitation likelihood is lowish (EPSS 0.39%) and there is no known in-the-wild activity. Because the stolen data lands in an attachment on a Confluence page, the leak may blend in with normal collaboration traffic.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| MCP Atlassian | pip | < 0.22.0 | 0.22.0 |
Do you use MCP Atlassian? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step1) Upgrade mcp-atlassian to 0.22.0 or later, which adds validate_safe_path() to upload operations. 2) Run the MCP server as a low-privilege user or in a container with a minimal filesystem and no mounted credentials. 3) Limit which MCP clients and users can call upload tools, and require human approval for file-upload tool calls. 4) Audit Confluence for unexpected attachments such as id_rsa, .env, credentials or config files, and review MCP tool-call logs for file_path values outside the working directory. 5) If exposure is suspected, rotate SSH keys, API tokens and cloud credentials accessible to the server process. 6) Use scoped, least-privilege Atlassian API tokens.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-77269?
The mcp-atlassian MCP server, which gives AI agents access to Confluence and Jira, fails to restrict the file_path parameter in its Confluence upload tools. Anyone who can invoke those tools, including an LLM steered by prompt injection, can attach any file the server process can read (SSH keys, .env files, cloud credentials) to a Confluence page and then retrieve it. This is an incomplete fix for CVE-2026-27825, where only the download paths were hardened. Exploitation risk is moderate: EPSS is 0.39% (69th percentile), there is no public exploit, no Nuclei template and no KEV listing, and CISA SSVC says TRACK*. Only 1 downstream dependent is tracked, but the package has 38 prior CVEs, which points to a recurring weakness in input validation. Upgrade to mcp-atlassian 0.22.0 and rotate any credentials stored on hosts that ran the vulnerable version with exposed MCP endpoints.
Is CVE-2026-77269 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2026-77269, increasing the risk of exploitation.
How to fix CVE-2026-77269?
1) Upgrade mcp-atlassian to 0.22.0 or later, which adds validate_safe_path() to upload operations. 2) Run the MCP server as a low-privilege user or in a container with a minimal filesystem and no mounted credentials. 3) Limit which MCP clients and users can call upload tools, and require human approval for file-upload tool calls. 4) Audit Confluence for unexpected attachments such as id_rsa, .env, credentials or config files, and review MCP tool-call logs for file_path values outside the working directory. 5) If exposure is suspected, rotate SSH keys, API tokens and cloud credentials accessible to the server process. 6) Use scoped, least-privilege Atlassian API tokens.
What systems are affected by CVE-2026-77269?
This vulnerability affects the following AI/ML architecture patterns: Agent frameworks, MCP servers, Tool-calling LLM assistants, Enterprise knowledge integrations.
What is the CVSS score for CVE-2026-77269?
CVE-2026-77269 has a CVSS v3.1 base score of 6.5 (MEDIUM). The EPSS exploitation probability is 0.43%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0037Data from Local SystemAML.T0051.001IndirectAML.T0053AI Agent Tool InvocationAML.T0055Unsecured CredentialsAML.T0086Exfiltration via AI Agent Tool InvocationCompliance Controls Affected
What are the technical details?
Original Advisory
### Summary The `confluence_upload_attachment` and `confluence_upload_attachments` MCP tools accept a `file_path` parameter and do not validate that the path is confined to an allowed directory before opening the file. An attacker who can call these tools can read any file accessible to the MCP server process (SSH keys, .env files, API credentials) and exfiltrate it by uploading it to Confluence. Note: The Jira `upload_attachment` mixin method in `jira/attachments.py` has the same missing validation, but it is NOT registered as an MCP tool in `servers/jira.py` and is therefore not currently reachable via MCP. It should still be patched to prevent future exposure if Jira upload tools are added. This is an incomplete fix for CVE-2026-27825. That CVE was patched by adding `validate_safe_path()` to download operations (v0.17.0). The same protection was not applied to upload operations. ### Details `validate_safe_path()` is imported in both `confluence/attachments.py` and `jira/attachments.py` and is correctly called in all download functions. It is absent from the Confluence upload functions (which are exposed as MCP tools) and from the Jira upload mixin methods (which are not currently registered as MCP tools but should still be patched). **Download (protected — correctly patched):** ```python # confluence/attachments.py:222-223 validate_safe_path(target_path) # resolves symlinks + checks is_relative_to(cwd) ``` **Upload (vulnerable — not patched):** ```python # confluence/attachments.py:64-79 — NO validate_safe_path() call if not os.path.isabs(file_path): file_path = os.path.abspath(file_path) # normalizes but does NOT restrict # ... files = {"file": (filename, open(file_path, "rb"))} # opens arbitrary file ``` Same pattern in `jira/attachments.py:386`. ### Proof of Concept ```python # Call via MCP client await session.call_tool("confluence_upload_attachment", { "content_id": "12345", "file_path": "/home/user/.ssh/id_rsa" # absolute path — no traversal needed }) # SSH private key is now a Confluence attachment # Retrieve via: confluence_download_attachment or Confluence UI ``` ### Impact Arbitrary file read from the server filesystem. High-value targets: SSH private keys, `.env` files, AWS/GCP credentials, database configuration, source code. ### Fix Add `validate_safe_path(file_path)` call in `confluence/attachments.py:upload_attachment()` (reachable via MCP) and `jira/attachments.py:upload_attachment()` (not currently reachable via MCP, but should be patched preventively), consistent with the existing download protection. No changes to `validate_safe_path()` itself are needed. ```python # Add after os.path.abspath() call: try: validate_safe_path(file_path) except ValueError as e: return {"success": False, "error": str(e)} ```
Exploitation Scenario
An attacker plants a hidden prompt in a Jira ticket or Confluence page that an engineering agent later reads. The injected instruction tells the agent to call confluence_upload_attachment with file_path set to /home/user/.ssh/id_rsa, targeting a page the attacker can view. The MCP server opens the file without path validation and uploads it. The attacker, or anyone with read access to that page, downloads the private key and uses it to reach internal repositories and infrastructure. A direct attacker with MCP client access could do the same without prompt injection.
Weaknesses (CWE)
CWE-22Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')PrimaryCWE-22Improper Limitation of a Pathname to a Restricted DirectoryCWE-22 — Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal'): The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.
- [Implementation] Assume all input is malicious. Use an "accept known good" input validation strategy, i.e., use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does. When performing input validation, consider all potentially relevant properties, including length, type of input, the full range of acceptable values, missing or extra inputs, syntax, consistency across related fields, and conformance to business rules. As an example of business rule logic, "boat" may be syntactically valid because it only contains alphanumeric characters, but it is not valid if the input is only expected to contain colors such as "red" or "blue." Do not rely exclusively on looking for malicious or malformed inputs. This is likely to miss at least one undesirable input, especially if the code's environment changes. This can give attackers enough room to bypass the intended validation. However, denylis
- [Architecture and Design] For any security checks that are performed on the client side, ensure that these checks are duplicated on the server side, in order to avoid CWE-602. Attackers can bypass the client-side checks by modifying values after the checks have been performed, or by changing the client to remove the client-side checks entirely. Then, these modified values would be submitted to the server.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:NReferences
Timeline
Related Vulnerabilities
CVE-2026-7724410.0MCP Atlassian: unauthenticated access to operator Jira/Confluence
Same package: mcp-atlassianCVE-2026-772549.1MCP Atlassian: missing auth exposes Jira/Confluence
Same package: mcp-atlassianCVE-2026-278259.1mcp-atlassian: Path Traversal enables file access
Same package: mcp-atlassianCVE-2026-772438.8MCP Atlassian: missing authz lets clients call hidden tools
Same package: mcp-atlassianCVE-2026-772628.6mcp-atlassian: path traversal enables arbitrary file read
Same package: mcp-atlassian