CVE-2026-77269: mcp-atlassian: path traversal enables arbitrary file read

GHSA-h7wj-5v37-59r2MEDIUMPoC AVAILABLECISA: TRACK*
Published September 22, 2026
CISO Take

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.

Sources:NVDGitHub AdvisoryEPSSATLASCISA SSVC

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?

Initial Access
Attacker gains MCP client access or plants a prompt injection in Jira/Confluence content that an agent will read.
AML.T0051.001
Tool Invocation
The agent or attacker calls confluence_upload_attachment with an absolute file_path to a sensitive file.
AML.T0053
Local File Collection
The server opens the file without validate_safe_path() and reads SSH keys, .env files or cloud credentials.
AML.T0037
Exfiltration
The file is uploaded as a Confluence attachment and downloaded by the attacker, who then reuses the stolen credentials.
AML.T0086

What systems are affected?

PackageEcosystemVulnerable RangePatched
MCP Atlassianpip< 0.22.00.22.0
2 dependents85% patched~4d to patchFull package profile →

Do you use MCP Atlassian? You're affected.

How severe is it?

CVSS 3.1
6.5 / 10
EPSS
0.4%
chance of exploitation in 30 days
Higher than 37% of all CVEs
Exploitation Status
Exploit Available
Exploitation: MEDIUM
Sophistication
Trivial
Exploitation Confidence
medium
○CISA SSVC: Public PoC
○Public PoC indexed (trickest/cve)
Composite signal derived from CISA KEV, VulnCheck KEV, CISA SSVC, EPSS, Metasploit, Exploit-DB, trickest/cve, Nuclei templates, and inthewild.io exploitation reports.

What is the attack surface?

AVACPRUISCIA
AVNetwork
ACLow
PRLow
UINone
SUnchanged
CHigh
INone
ANone

What should I do?

1 step
  1. 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 does CISA's SSVC say?

DecisionTrack*
Exploitationpoc
AutomatableNo
Technical Impactpartial

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:

EU AI Act
Art. 15-Accuracy, robustness and cybersecurity
ISO 42001
A.6.2.6-AI system operation and monitoring
NIST AI RMF
MANAGE 2.3-Response to previously unknown risks and deployed AI system issues
OWASP LLM Top 10
LLM02-Sensitive Information DisclosureLLM03-Supply ChainLLM06-Excessive Agency

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

Agent frameworksMCP serversTool-calling LLM assistantsEnterprise knowledge integrations

MITRE ATLAS Techniques

AML.T0037Data from Local System
AML.T0051.001Indirect
AML.T0053AI Agent Tool Invocation
AML.T0055Unsecured Credentials
AML.T0086Exfiltration via AI Agent Tool Invocation

Compliance Controls Affected

EU AI Act: Art. 15
ISO 42001: A.6.2.6
NIST AI RMF: MANAGE 2.3
OWASP LLM Top 10: LLM02, LLM03, LLM06

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-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:N

Timeline

Published
September 22, 2026
Last Modified
September 26, 2026
First Seen
September 23, 2026

Related Vulnerabilities