Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain local account on shared host
-
DeliveryLocate ~/.mcp-atlassian/oauth-<client_id>.json
-
ExploitRead world/group-readable token file
-
ExecutionExtract access and refresh tokens
-
ImpactReuse tokens to access victim's Atlassian data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V14 - Data Protection Encrypted storage of sensitive data
|
| Exploitation Conditions | Requires: (1) an attacker with an existing local account or local process on the same host running mcp-atlassian; (2) a permissive umask so that OAuthConfig._save_tokens writes ~/.mcp-atlassian/oauth-<client_id>.json readable by same-group or other users (process-default permissions, no explicit 0600 restriction pre-0.22.0); and (3) that the OAuth plaintext-fallback token file has actually been created (OAuth flow used rather than keyring/env-only). It is NOT remotely exploitable and NOT exploitable on a single-user host with a restrictive default umask (e.g. 0077). The impact of disclosure extends to durable Atlassian access because the refresh_token is stored, enabling token renewal beyond the initial access_token lifetime. |
| Impact | This is a genuinely LOW-priority issue despite the CVSS 6.1 (Medium) rating. The CVSS vector CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N confirms a purely LOCAL attack vector requiring existing low-privilege access to the host - this is not remotely exploitable. No EPSS score, no CISA KEV listing, and no public exploit code are present, so exploitation status is 'no public exploit identified at time of analysis.' The high confidentiality impact (C:H) is real - plaintext OAuth access AND refresh tokens are disclosed, granting durable reuse of the victim's Atlassian access - but it is entirely gated behind two non-default preconditions: a permissive umask on the host AND a shared/multi-user system where another local account or process can read the file. There is no signal conflict, but note the CVSS itself is vendor/GitHub_M-assigned (GitHub_M advisory), not NVD-analyzed, and the I:L rating reflects downstream Atlassian token reuse rather than direct integrity impact on the host. On a single-user workstation with a default umask this is effectively non-exploitable, which is why the practical priority is low even though token compromise sounds severe. |
| Exploit ScenarioDerived | On a shared Linux host running mcp-atlassian under an operator account with a permissive umask (e.g. 0022 or looser), the server persists a fallback token file at ~/.mcp-atlassian/oauth-<client_id>.json with world- or group-readable permissions. A second local user or a co-tenant process reads the file, extracts the plaintext access_token and refresh_token, and reuses them to impersonate the operator's Confluence/Jira access. No public exploit code is required - reading a readable file is trivial once local access exists. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 22, 2026
Plaintext storage of Atlassian OAuth credentials in MCP Atlassian before 0.22.0 lets any local user or process that can read the persisted token file recover live access and refresh tokens and reuse them against Confluence and Jira. The vulnerable code path is OAuthConfig._save_tokens, which writes ~/.mcp-atlassian/oauth-<client_id>.json using process-default permissions; on a host with a permissive umask, same-group or other local accounts can read it. Exploitation requires a pre-existing local foothold, a permissive umask, and that the OAuth plaintext-fallback file was actually created - it is not remotely exploitable and is not exposed on single-user hosts with a restrictive umask; no public exploit code was identified at time of analysis and this CVE is not in CISA KEV.
RemediationAI
Vendor-released patch: upgrade mcp-atlassian to 0.22.0 (https://github.com/sooperset/mcp-atlassian/releases/tag/v0.22.0, fix commit b041733473f95119dd539542a43c280737a8e460, advisory GHSA-g5xv-mhgm-v5f6); no backport to earlier versions is indicated, so upgrading is the primary action. Because tokens may already have been readable before remediation, treat them as compromised: revoke the affected Atlassian OAuth grants and refresh tokens in the Atlassian account or app authorization settings and re-run the OAuth flow after upgrading, since rotating only the access token leaves the persistent refresh token usable. If immediate upgrade is impossible, the practical compensating controls are to remove or chmod 600 every existing ~/.mcp-atlassian/oauth-*.json file (this blocks further casual reads but does not help if the file was already copied, and the mode will revert on the next token refresh), run the server under an account whose umask is 0077 or stricter (trades off convenience for any files the same process creates), configure the keyring-backed credential store instead of the plaintext fallback so no token file is written at all (requires a working keyring/secret service in the execution environment, which containerized or headless deployments often lack), and on shared hosts restrict the server's user group membership and filesystem ACLs on the home directory so same-group accounts cannot traverse into ~/.mcp-atlassian. Restricting local login to the server account is an effective but operationally heavy boundary control, and blocking network egress for the server is not a relevant mitigation here because the weakness is local credential disclosure rather than remote exploitation.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-312 (Cleartext Storage of Sensitive Information). MCP Atlassian is a Model Context Protocol server that brokers tool calls to Atlassian Confluence and Jira, and it authenticates to those services using OAuth client credentials. When the platform keyring is unavailable or not selected, OAuthConfig falls back to writing tokens to disk via OAuthConfig._save_tokens, serializing access_token and refresh_token into ~/.mcp-atlassian/oauth-<client_id>.json. The defect is not the fallback itself but the file mode: the file is created with process-default permissions rather than an explicit owner-only mode such as 0600, so the effective access control is inherited from the invoking process's umask. Under a permissive umask, the resulting mode permits group and possibly world read. Because the refresh_token is persisted alongside the access token, disclosure yields durable access - an attacker can mint fresh access tokens after the original expires instead of being limited to a short-lived credential window. The CPE entry cpe:2.3:a:sooperset:mcp-atlassian:*:*:*:*:*:*:*:* covers all releases prior to the fixed version. The CVSS vector CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N reflects a local attack path requiring low privileges, no user interaction, and high confidentiality impact with limited integrity impact from misuse of the stolen bearer tokens.
Know when Mcp Atlassian gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
Local file disclosure (AV:L) needing an existing low-priv local account (PR:L); C:H for full access+refresh token exposure; I:L reflects downstream Atlassian token reuse; A:N.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
MCP Atlassian is a Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Prior to 0.22.0, OAuthConfig writes a plaintext fallback file containing access and refresh tokens under the user's .mcp-atlassian directory using process-default permissions. On systems with a permissive umask, same-group or other local users and processes can read the persisted tokens and reuse the associated Atlassian access. The advisory traces the vulnerable input and processing flow through OAuthConfig._save_tokens, ~/.mcp-atlassian/oauth-<client_id>.json, access_token, and refresh_token, which identify the affected entry points, controls, and code paths. This issue is fixed in version 0.22.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Mcp Atlassian
View allServer-side request forgery in MCP Atlassian (the Model Context Protocol server for Confluence and Jira) prior to 0.22.0
MCP Atlassian (sooperset/mcp-atlassian) before 0.22.0 applies its ENABLED_TOOLS and TOOLSETS least-privilege filters onl
Path traversal in MCP Atlassian releases prior to 0.22.0 lets a caller of the confluence_upload_attachment MCP tool read
Unauthenticated arbitrary file read in MCP Atlassian (sooperset/mcp-atlassian) before 0.22.0 lets a remote network calle
Arbitrary local file read leading to data exfiltration affects sooperset's MCP Atlassian server (mcp-atlassian) prior to
Unauthenticated server-local file exfiltration in MCP Atlassian (sooperset/mcp-atlassian) before 0.22.0 allows a remote
Server-side request forgery in MCP Atlassian prior to 0.22.0 lets an attacker who controls or has already compromised th
MCP Atlassian (sooperset/mcp-atlassian) before 0.22.0 lets a low-privileged authenticated MCP caller write attacker-chos
Server-side request forgery in MCP Atlassian (sooperset/mcp-atlassian) before 0.22.0 allows a low-privileged authenticat
Arbitrary local file read in MCP Atlassian (mcp-atlassian) prior to 0.22.0 allows an authenticated MCP caller who can re
Arbitrary server-local file read and exfiltration in MCP Atlassian (sooperset/mcp-atlassian) prior to 0.22.0 lets an aut
Path traversal in the MCP Atlassian server (mcp-atlassian) prior to 0.22.0 allows an authenticated MCP client to read fi
EUVD-2026-84619
GHSA-g5xv-mhgm-v5f6
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB