// threat brief
29 mcp-atlassian vulnerabilities fixed in 0.22.0: HTTP authentication bypass, server file exfiltration, SSRF, token file permissions and more
- CVSS
- 10.0 CRITICAL
- CISA KEV
- Not listed
- Weakness
- CWE-287 · CWE-303 · CWE-306 · CWE-862 · CWE-863 · CWE-22 · CWE-73 · CWE-94 · CWE-918 · CWE-367 · CWE-732 · CWE-312 · CWE-79
- Topics
- AI security
AI review 2026-09-28 (not human-reviewed)Command tests: none yetReproduced: not yetVerification record ↓
mcp-atlassian 0.22.0 fixed 29 CVEs: an HTTP mode that skipped identity checks, attachment tools that leak server files, SSRF gaps and loose OAuth token files.
| Who is affected | All versions before 0.22.0. The highest risk is for deployments serving over the network in HTTP mode (streamable-http or SSE), especially with server-side global Jira/Confluence credentials and read-only mode off. Local stdio users are still affected by the attachment file read (for example when the AI is prompt-injected) and by the OAuth token file permissions. |
|---|---|
| What happens | At worst, an attacker with no account can read and write Jira and Confluence as the operator and carry off server files (such as environment variables holding API tokens) by uploading them as attachments. Other flaws let people who can already call tools get past tool and project restrictions, make the server connect into internal networks for an attacker, or let other users on the same machine read OAuth tokens. |
| What to do now | Upgrade mcp-atlassian to 0.22.0 or later (if you use the SSE transport, the maintainer advisory GHSA-5j8j-256g-vvp5 requires at least 0.23.1), and do not enable ALLOW_GLOBAL_CRED_FALLBACK on a server that untrusted callers can reach.View evidence(1)
|
| Affected versions | All versions before 0.22.0 (OSV lists tagged releases v0.1.4 through v0.21.1); all 29 CVE records say < 0.22.0, but 4 advisories word the range differently in their text: CVE-2026-77271 says 0.17.0 through 0.21.0, CVE-2026-77262 says 0.17.0 and later up to HEAD at the time, CVE-2026-77267 says all versions before fix commit 5cd697dfce91, and CVE-2026-77260 says the main branch as of 2026-04-21View evidence(3)
|
| Fixed versions | 0.22.0 or later (a similar SSE transport issue was fixed separately in 0.23.1)View evidence(4)
|
| CVSS vector | Show full vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N |
| Timeline |
|
| CISA KEV | Not listed(Not being in KEV does not mean it has not been exploited)View evidence(1)
|
Blue team playbook
Check, fix / mitigate, respond, harden. Matching the affected versions does not mean you were compromised, and a check that finds nothing does not prove you are safe; each item says what it can and cannot show. Tagged steps point to where the attack flow below can be stopped.
- 01Check your version
All 29 CVEs are fixed in 0.22.0; any version below that is affected by all of them. Run the command inside the environment that actually runs mcp-atlassian (its container or virtualenv) to see the version the service uses.
Read-only checkpip show mcp-atlassian | grep -i '^version' - 02Take stock of transports, exposed tools and settings
Check whether the service uses stdio, streamable-http or SSE; whether the HTTP endpoint is reachable; whether global Jira/Confluence credentials are configured; whether READ_ONLY_MODE is on; whether you rely on ENABLED_TOOLS/TOOLSETS or JIRA_PROJECTS_FILTER/CONFLUENCE_SPACES_FILTER to limit scope (all bypassable before 0.22.0); and whether you accept the multi-user mode where request headers name the Jira/Confluence URL. After upgrading, setting ALLOW_GLOBAL_CRED_FALLBACK=true brings back unauthenticated use of the operator's credentials. Check the environment of the process running mcp-atlassian (its container or service configuration); your own login shell may not have the same variables.
Read-only checkenv | grep -iE 'ALLOW_GLOBAL_CRED_FALLBACK|READ_ONLY_MODE|ENABLED_TOOLS|TOOLSETS|PROJECTS_FILTER|SPACES_FILTER|TRANSPORT' - 03Review activity and attachments on the Atlassian side
PlainCVE's suggestion: review reads and writes by the operator account in Jira and Confluence that you don't recognise, especially attachments. The file-read flaws upload server files as attachments, so look closely at attachments named like system, key or config files (for example environ, passwd, id_rsa, .env, credentials). Because the log names the operator, compare against what the operator actually did.
- 04Check the OAuth token file permissions
On machines that used OAuth, versions before 0.22.0 leave a plaintext token backup in the .mcp-atlassian folder in the home directory, possibly readable by the group or by everyone. The release notes say 0.22.0 writes it owner-only, but don't say whether an existing file is fixed on upgrade, so check it yourself.
Read-only checkls -la ~/.mcp-atlassian/
- 01Upgrade to 0.22.0 or later
The vendor fix rejects unauthenticated streamable-http requests with 401, confines attachment paths to the working directory, applies SSRF checks to every connection, enforces tool and project filters at call time, writes token files owner-only and HTML-escapes the OAuth callback page. If you use the SSE transport, the maintainer's separate advisory GHSA-5j8j-256g-vvp5 lists 0.23.0 and earlier as affected, so upgrade to 0.23.1.
Changes your environmentpip install -U "mcp-atlassian>=0.22.0" - 02Can't upgrade yet: restrict who can reach the HTTP endpoint and turn on read-only mode
No official workaround exists for versions before 0.22.0. Restricting network access reduces exposure; advisory GHSA-vc25-24vv-fxxm notes that READ_ONLY_MODE=true blocks the attachment upload tools. Both are PlainCVE's reasoning, not official workarounds, and neither stops the SSRF or token file issues.
- 01Rotate the operator's Atlassian credentials and other server secrets
PlainCVE's suggestion: if you suspect outsiders used the HTTP endpoint, or you find attachments you don't recognise, replace the Jira/Confluence credentials configured on the server and any other secrets the service process can read (environment variables, .env, cloud credentials, SSH keys), and review content changes made by that account. Several advisories note that the files read can contain these secrets.
- 02Revoke OAuth tokens if the token file was readable by others
PlainCVE's suggestion: if the token backup file was group- or world-readable on a machine with other users or processes, treat the tokens as leaked: revoke and re-authorise, then make the file owner-only. The advisories note that a refresh token keeps granting access until revoked or expired.
- 01Don't expose the MCP server's HTTP endpoint to untrusted networks
The documentation site also warns to enable the global-credential fallback only when the server is not exposed to untrusted callers. PlainCVE also recommends running the OAuth setup wizard only on a trusted network.
- 02Give the server's account least privilege, and use read-only mode if you don't need writes
PlainCVE's suggestion: the impact equals that account's permissions, so the fewer it has, the less a bypass can do.
- 03Keep secrets out of the service's working directory
PlainCVE's analysis: from 0.22.0, attachment paths are confined to the working directory, so files outside it can't be read, but files inside it can still be uploaded. Keeping .env files and keys outside the working directory further limits what a misused attachment tool can reach.
Full remediation steps and notes
| Your setup | Suggested version |
|---|---|
| streamable-http or stdio | 0.22.0 or later |
| SSE transport | 0.23.1 or later (per maintainer advisory GHSA-5j8j-256g-vvp5) |
- Upgrade:
pip install -U "mcp-atlassian>=0.22.0"(use>=0.23.1for SSE). The SSE advisory also lists workarounds: switch to streamable-http; if SSE is required, put it behind a reverse proxy or auth gateway that authenticates requests first, and leave ALLOW_GLOBAL_CRED_FALLBACK unset. - Behavior changes after upgrading: the release notes say paths passed to the attachment tools must now be inside the server’s working directory, so workflows that upload files from elsewhere will fail; the same release adds a
content_base64parameter for uploading content directly. The project/space filters also become a hard limit. - Check the switch after upgrading: from 0.22.0, ALLOW_GLOBAL_CRED_FALLBACK is off by default. The documentation site (linked as the homepage of the maintainer’s GitHub repo) warns to enable it only when the server is not exposed to untrusted callers.
- If you can’t upgrade right away: there is no official workaround; the GitLab database simply says to upgrade to 0.22.0 or above. Restricting who can reach the HTTP endpoint and setting READ_ONLY_MODE=true (advisory GHSA-vc25-24vv-fxxm notes it blocks the attachment upload tools) reduce exposure, but that is our reasoning, not an official workaround, and it doesn’t stop the SSRF or token file issues.
- If you may have been exposed: rotate the operator’s Atlassian credentials and any other secrets the server process can read; if the token backup file was readable by others, revoke the OAuth tokens, re-authorise, and make sure the file is owner-only (PlainCVE’s suggestion).
- Deployments with the OAuth proxy enabled: because of the unconfirmed issue above, PlainCVE suggests keeping the endpoint limited to trusted networks even after upgrading.
Attack flow
Read left to right: this is the order the attack happens in. A blue shield means the step can be stopped; the earlier, the better. Click an icon for details.
Read top to bottom: this is the order the attack happens in. A blue shield means the step can be stopped; the earlier, the better. Tap an icon for details.
- Attacker
The attacker reaches the mcp-atlassian HTTP endpoint
This flow shows the most severe of the 29 flaws, CVE-2026-77244 (HTTP authentication bypass). No account, credentials or privileged position is needed; being able to reach the endpoint is enough.
Defense: PlainCVE's suggestion: restrict the HTTP endpoint to trusted networks with a firewall or reverse proxy (not listed as an official workaround).
- Your system
The HTTP transport does not verify who is calling
Older versions of the HTTP transport accept requests without a verified user identity; the advisory title also says the token verifier accepts any non-empty token.
Defense: Upgrade to 0.22.0 or later: the vendor says unauthenticated requests are now rejected with 401 at the transport boundary.
- Your system
The server falls back to the operator's global credentials
With no per-user credentials, the code falls back to the Jira or Confluence account the operator configured on the server.
Defense: From 0.22.0 this fallback is off by default and only enabled via ALLOW_GLOBAL_CRED_FALLBACK; don't enable it on an exposed server.
- External
The attacker reads and writes Jira and Confluence as the operator
What they can do equals every read and write operation that account can perform. The advisory for CVE-2026-77248, from the same batch, also describes chaining this step with the attachment upload tools to read files on the server.
Defense: PlainCVE's suggestion: give the Atlassian account used by the server only the permissions it needs; if you can't upgrade yet, READ_ONLY_MODE blocks write tools such as attachment upload.
- External
The audit trail names the operator
According to the advisory, the audit trail names the operator. In PlainCVE's view, this can make the attacker's actions hard to tell apart.
Who is affected
All 29 CVE records list versions before 0.22.0 as affected. The matching 29 GitHub security advisories (GHSAs) were all published by the maintainer on 2026-07-10, the day 0.22.0 was released, and the CVEs were published together on 2026-09-22. The release notes say this release resolved 37 advisories from a security audit; this page covers the 29 that received CVE-2026-772xx IDs. The maintainer’s advisory list also has 3 CVEs fixed in 0.22.0 but published earlier (CVE-2026-73496, CVE-2026-73497, CVE-2026-73498), plus GHSA-6rrj-86cw-gg9j, which has no CVE record yet; those are outside the scope of this page.
Which deployments are most at risk depends on the transport and settings:
| Condition | Which problems apply |
|---|---|
| Before 0.22.0 + HTTP transport (streamable-http) + global Jira/Confluence credentials configured + endpoint reachable | The worst case: tools can be used as the operator with no account (HTTP authentication bypass), and advisories describe chaining it with attachment file read. This is the default deployment when the OAuth proxy is not enabled |
| Before 0.22.0 + HTTP multi-user mode (Jira/Confluence URL given in request headers) | Also affected by the SSRF group (6 CVEs): 2 advisories (CVE-2026-77242, CVE-2026-77249) state no authentication is needed; by the CVSS vectors in the CVE records, 4 need no privileges and 2 (CVE-2026-77261, CVE-2026-77267) need low privileges |
| Before 0.22.0, stdio transport only (local process communication) | The fix notes say the HTTP authentication change does not affect stdio; the attachment file read can still be triggered (for example through prompt injection), and the token file permissions apply if you use OAuth |
| Before 0.22.0 with READ_ONLY_MODE=true | The advisory says the attachment upload tools are blocked; read-only mode does not stop reading data as the operator, SSRF or the token file issues |
| 0.22.0 or later, default settings | All 29 CVEs fixed |
| 0.22.0 or later with ALLOW_GLOBAL_CRED_FALLBACK=true | Unauthenticated requests can use the operator’s credentials again |
| SSE transport | A similar authentication issue is covered by the maintainer advisory GHSA-5j8j-256g-vvp5: 0.23.0 and earlier (including 0.22.0) are affected, fixed in 0.23.1. The advisory says that with ALLOW_GLOBAL_CRED_FALLBACK off (the default) it only causes errors and information disclosure; once it is on, anonymous requests run tools with the operator’s credentials |
| OAuth proxy enabled | Not confirmed whether 0.22.0 fully fixes the HTTP authentication part; see below |
OSV lists affected tagged releases v0.1.4 through v0.21.1 for CVE-2026-77244. The OSV range starts at introduced: "0", which the OSV schema defines as a special value for a version that sorts before any other version; it does not name a specific introducing commit, and the actual point where the flaw was introduced is not confirmed.
All 29 CVEs
CVSS is the CNA score in the CVE record; scores marked “(4.0)” are CVSS 4.0 and the rest are 3.1, and the two versions can’t be compared directly. “Key preconditions” summarises each advisory’s conditions for an attack and is not a full description.
| CVE | Advisory | Category | CVSS | Key preconditions |
|---|---|---|---|---|
| CVE-2026-77244 | GHSA-wrhw-j3f9-8vc6 | HTTP auth bypass | 10.0 | HTTP transport, global credentials on the server, OAuth proxy not enabled; no account needed |
| CVE-2026-77254 | GHSA-vc8m-84rp-53hx | HTTP auth bypass | 9.1 | HTTP transport with global credentials; a request with no Authorization header is enough |
| CVE-2026-77248 | GHSA-cc5h-2pwp-pvcc | HTTP auth bypass | 8.6 | streamable-http with global credentials; the advisory describes chaining it with file read, no account needed |
| CVE-2026-77243 | GHSA-3r68-hf9h-887v | Authorization bypass | 8.8 | Can reach the HTTP endpoint and call tools; ENABLED_TOOLS or TOOLSETS configured |
| CVE-2026-77251 | GHSA-w66g-j6c4-hcfc | Authorization bypass | 8.3 (4.0) | Can call search or board tools (including a prompt-injected AI); project/space filter configured |
| CVE-2026-77252 | GHSA-rqwg-9346-fjjv | Authorization bypass | 6.5 | Can call search tools; filter configured while the account itself can see more |
| CVE-2026-77246 | GHSA-wv8v-v4c5-v75j | File read via attachments | 7.4 | HTTP transport (streamable-http or SSE), read-only mode off; the advisory says no Authorization header is needed and the file goes to a service URL given in request headers |
| CVE-2026-77247 | GHSA-f6pj-qv47-g96w | File read via attachments | 8.3 (4.0) | Can call write/upload tools; stdio is also affected, with higher impact in HTTP deployments |
| CVE-2026-77253 | GHSA-vc25-24vv-fxxm | File read via attachments | 7.1 | Can call write tools; the advisory says READ_ONLY_MODE=true blocks it |
| CVE-2026-77255 | GHSA-2xj6-xx86-cwwc | File read via attachments | 8.6 | The attachments parameter of Jira update_issue; a confused-deputy case when the AI agent has fewer rights than the server process |
| CVE-2026-77257 | GHSA-mrq8-fv7v-hhjg | File read via attachments | 8.3 (4.0) | An authenticated caller or a prompt-injected agent; needs an issue or page it can attach to |
| CVE-2026-77258 | GHSA-93xw-j965-9mx3 | File read via attachments | 7.7 | Can call the Confluence upload tool, including through a prompt-injected agent |
| CVE-2026-77259 | GHSA-6cr4-ccf3-x7h4 | File read via attachments | 7.7 | An authenticated MCP caller who can edit at least one Confluence page |
| CVE-2026-77260 | GHSA-f4p7-qx46-wc5j | File read via attachments | 8.3 (4.0) | Prompt injection; or no authentication in HTTP mode together with the global-credential fallback |
| CVE-2026-77262 | GHSA-p6hp-93wp-fh6p | File read via attachments | 8.6 | Can call the Confluence upload tool; the advisory says the default streamable-http deployment needs no authentication |
| CVE-2026-77266 | GHSA-mfv2-4wvm-9pgp | File read via attachments | 6.5 | An authenticated MCP caller |
| CVE-2026-77269 | GHSA-h7wj-5v37-59r2 | File read via attachments | 6.5 | Can call the Confluence upload tools |
| CVE-2026-77270 | GHSA-f26r-j276-ggg4 | File read via attachments | 6.5 | An authenticated MCP caller or a prompt-injected agent |
| CVE-2026-77271 | GHSA-6vmq-24h2-pj7j | Module overwrite | 8.3 (4.0) | Write access to one Confluence page and network access to the HTTP port; the working directory is the app directory (common in containers); takes effect after a restart |
| CVE-2026-77242 | GHSA-72fm-whvq-jghf | SSRF | 7.5 | Multi-user mode with URLs in request headers; the advisory says no authentication is needed; DNS rebinding |
| CVE-2026-77249 | GHSA-v9m3-wfh8-5646 | SSRF | 5.3 | HTTP multi-user header mode; a redirect reaches an internal address, without seeing the response |
| CVE-2026-77261 | GHSA-6529-c226-h328 | SSRF | 7.1 | Basic auth or OAuth; the connected Atlassian server returns a redirect (attacker-controlled or compromised) |
| CVE-2026-77265 | GHSA-49xv-9743-pw8w | SSRF | 5.9 | Header PAT authentication mode only; DNS rebinding that needs several attempts |
| CVE-2026-77267 | GHSA-5wf4-jqxh-8gm3 | SSRF | 8.3 (4.0) | Header-supplied URLs still reach an unchecked path (incomplete fix of CVE-2026-27826) |
| CVE-2026-77274 | GHSA-hgcf-4mq8-5266 | SSRF | 8.8 (4.0) | Can supply URLs in headers; the validator and the HTTP client read the URL differently |
| CVE-2026-77250 | GHSA-g5xv-mhgm-v5f6 | Token file permissions | 6.1 | OAuth in use; local users in the same group, or processes that can read the home directory |
| CVE-2026-77256 | GHSA-76pr-5669-3xf5 | Token file permissions | 8.3 (4.0) | OAuth in use; with umask 022, any local user on the host can read it |
| CVE-2026-77268 | GHSA-4596-2p6p-28cv | Token file permissions | 5.5 | OAuth in use; other local users on a shared host |
| CVE-2026-77272 | GHSA-g2r2-3j32-j27x | Reflected XSS | 5.4 | The victim is running the OAuth setup wizard and opens a crafted link |
How it works
mcp-atlassian is an MCP server: it lets AI assistants call Jira and Confluence features through the MCP protocol. It can talk to one AI client locally over stdio, or serve several users over HTTP on a network. The 29 flaws fall roughly into seven groups.
1. HTTP authentication bypass (3: CVE-2026-77244, CVE-2026-77254, CVE-2026-77248)
When serving over HTTP, each request is supposed to carry the user’s own proof of identity (a token, a string that proves “who you are”). Older versions had a two-part problem. First, the HTTP transport accepted requests without a verified identity; the vendor advisory’s title also says the token verifier accepted any non-empty token. Second, when a request had no usable user credentials, the code fell back to the global Jira or Confluence account the operator had configured on the server. Put together: anyone who could reach the endpoint, with no account, could read and write data as the operator, and the audit trail would name the operator. The CVE record for CVE-2026-77244 classifies it as CWE-287 (improper authentication) and also lists CWE-303 and CWE-862; CVE-2026-77254 describes the same global-credential fallback (CWE-306), and CVE-2026-77248 is a report that chains it with the attachment file read below.
The flawed approach (conceptual illustration, not the original source code):
Show code example(python)
user_creds = get_user_credentials(request) # may be empty
if not user_creds:
user_creds = GLOBAL_OPERATOR_CREDENTIALS # no identity → borrow the operator's account
client = make_jira_client(user_creds)The fixed approach (0.22.0):
Show code example(python)
user_creds = get_user_credentials(request)
if not user_creds:
if not ALLOW_GLOBAL_CRED_FALLBACK: # off by default
return http_401() # reject at the transport boundary
user_creds = GLOBAL_OPERATOR_CREDENTIALS2. Broken restrictions: tool allowlist and project/space filters (3)
Operators can limit which tools are available with ENABLED_TOOLS and TOOLSETS, and which projects and spaces can be touched with JIRA_PROJECTS_FILTER and CONFLUENCE_SPACES_FILTER. In CVE-2026-77243, the tool limit applied only when tools were listed: a hidden tool didn’t appear in the list but still ran when called by name, including write and delete tools. In CVE-2026-77251 and CVE-2026-77252, the project/space filter used a plain text check to decide whether a query already named a project, so a caller who named another project or space in the query stopped the filter from being added; a call parameter could also replace the operator’s setting, and the board tools had no check at all. The precondition is a caller who can already use these tools (a legitimate user, or a prompt-injected AI) and a server account that can see more than the filter allows. 0.22.0 enforces tool permissions at call time and always adds the filter to queries, so callers can narrow the scope but never widen it.
3. Attachment upload tools reading server files (12)
The Jira and Confluence attachment upload tools (including the attachments parameter of Jira update_issue) take a “file path on the server”; the server process reads that file and uploads it as an attachment. Older versions didn’t restrict the path, so a caller could name any file the server process can read, such as environment variables holding API tokens, .env files, SSH keys or cloud credentials, and have it uploaded to an issue or page they can see. Several advisories call this an incomplete fix of CVE-2026-27825: 0.17.0 added path checks for the “download attachment, write a file” direction but not for “upload attachment, read a file”. The 12 advisories are separate reports of the same root cause from different researchers, and they describe the preconditions differently: most require a caller who can use write tools and has an issue or page to attach to; some note that a prompt-injected AI triggers it and that local stdio mode is affected; others describe a no-account scenario (see “Chaining” below).
The flawed approach (conceptual illustration):
Show code example(python)
path = caller_supplied_path # path chosen by the caller
upload_as_attachment(open(path, "rb")) # reads a file on the server directlyThe fixed approach (0.22.0):
Show code example(python)
path = validate_safe_path(caller_supplied_path) # must be inside the server's working directory, else rejected
upload_as_attachment(open(path, "rb"))4. Incomplete path restriction allowing a module overwrite (1: CVE-2026-77271)
When 0.17.0 fixed CVE-2026-27825, it limited where attachment downloads can be written to the process’s working directory. In common container deployments, though, the working directory is the program’s own directory, so its own Python modules were inside the “allowed” area. The advisory describes how someone with Confluence write access who can reach the HTTP port could overwrite a program file with an attachment, and the replaced code would run the next time the process restarts. The 0.22.0 release notes say this “intra-CWD overwrite” variant is closed.
5. SSRF protection bypasses (6)
SSRF (server-side request forgery) means making the server connect somewhere it shouldn’t for the attacker, such as internal services or a cloud metadata service (which can hand out cloud credentials). The multi-user HTTP mode lets request headers name the Jira/Confluence URL to connect to; 0.17.0 added a check for CVE-2026-27826 that rejects URLs pointing at internal addresses. These 6 CVEs are gaps in that check: the address resolved during the check differs from the one used to connect (DNS rebinding, CVE-2026-77242 and CVE-2026-77265); when the server is redirected to an internal address, some code paths or authentication methods don’t check the redirect (CVE-2026-77249 and CVE-2026-77261); the checker and the code that sends the request see different hosts in the same URL (CVE-2026-77274); and header URLs still reach a path that isn’t checked (CVE-2026-77267). CVE-2026-77261 is about the basic auth and OAuth authentication methods not checking redirects, and requires the connected Atlassian server itself to return a malicious redirect. 0.22.0 checks redirects on every connection, rejects URLs that can be read two ways, and pins the connection to the address that was checked.
6. Overly permissive OAuth token files (3: CVE-2026-77250, CVE-2026-77256, CVE-2026-77268)
With OAuth, the program stores tokens in the system keyring, but it also always writes a plaintext backup with the access token and refresh token in the .mcp-atlassian folder in the home directory. That file is created with default permissions, which in common setups lets the group or every user on the machine read it. On shared hosts, CI machines or containers that mount the home directory, other users or processes can take the tokens, and a refresh token keeps granting access until revoked or expired. 0.22.0 makes the file owner-only (file 0600, folder 0700).
7. Reflected XSS in the OAuth setup page (1: CVE-2026-77272)
While the OAuth setup wizard runs, the program briefly starts a web server to receive the authorisation callback, listening on all network interfaces. The callback page put the error message from the URL straight into its HTML, so a crafted link could run JavaScript in the victim’s browser. The victim has to be running the setup wizard (the advisory says it waits up to 5 minutes) and open the attacker’s link. 0.22.0 HTML-escapes the callback page output.
Chaining
Stated by an advisory: combining the HTTP authentication bypass with the attachment file read lets someone with no account read files on the server. Advisory GHSA-cc5h-2pwp-pvcc (CVE-2026-77248) says: “Chained, an unauthenticated network attacker reads arbitrary files on the MCP server host”, with the preconditions of the streamable-http transport and global operator credentials. GHSA-f4p7-qx46-wc5j (CVE-2026-77260) also describes an HTTP-mode upload with no authentication that borrows the operator’s credentials, and GHSA-wv8v-v4c5-v75j (CVE-2026-77246) describes a case with no Authorization header where the file goes to a service URL given in the request headers. The release notes list GHSA-cc5h-2pwp-pvcc under the HTTP authentication fix, and the attachment path restriction shipped in the same release, so both ends are closed in 0.22.0.
PlainCVE’s analysis: the files read often include the operator’s Atlassian API token or other service credentials, which an attacker can use directly against Atlassian or those services without going through the MCP server, and upgrading does not invalidate them; if you suspect exposure, rotate credentials rather than only upgrading. Also, from 0.22.0 attachment paths are only confined to the working directory; if secrets such as a .env file sit in the working directory, they can still be uploaded by a caller who can use the upload tools (the CVE-2026-77271 advisory uses a .env file in a container’s working directory as an example), and with ALLOW_GLOBAL_CRED_FALLBACK=true on an exposed server, unauthenticated requests can use those tools too.
What is not confirmed (our analysis)
0.22.0 gates the fallback to global credentials. On 2026-07-11, the day after 0.22.0 shipped, the maintainer acknowledged in another PR that the OAuth proxy verifier still accepted any non-empty bearer token; the PR for validating tokens upstream (last updated 2026-09-21) was still unmerged on 2026-09-28. So when the OAuth proxy is enabled, 0.22.0 still has the “accepts any non-empty token” behavior (confirmed by the maintainer); no source says whether later versions fix it.
Timeline
| Date | Event |
|---|---|
| 2026-02-24 | Maintainer publishes CVE-2026-27825 (arbitrary file write via the download path) and CVE-2026-27826 (SSRF via header URLs), fixed in 0.17.0; several CVEs in this batch are gaps in those fixes |
| 2026-07-10 | Maintainer publishes the 29 GHSAs in this batch; the same day adds the fix in PR #1448 and releases v0.22.0 |
| 2026-07-11 | Maintainer confirms the OAuth proxy verifier still accepts any non-empty bearer token (PR #1435) |
| 2026-08-19 | Maintainer publishes GHSA-5j8j-256g-vvp5 for the SSE transport and releases v0.23.1 the same day |
| 2026-08-20 | The 29 CVE IDs are reserved |
| 2026-09-21 | Last ping on the upstream token validation PR, still unmerged (PlainCVE’s analysis; unconfirmed) |
| 2026-09-22 | The 29 CVEs are published; CISA adds SSVC assessments from September 22 onward (3 records still had none on September 28); GitHub reviews GHSA-wrhw-j3f9-8vc6 |
The maintainer advisories and the fix both came about two and a half months before the CVEs were published.
Further reading
- Scoring: the highest is CVE-2026-77244, which the CNA scores CVSS 3.1 10.0 (scope changed, high confidentiality and integrity impact, no availability impact), followed by CVE-2026-77254 at 9.1. For 8 CVEs the CNA score is CVSS 4.0. As of 2026-09-24, NVD is still analysing CVE-2026-77244 and has no score of its own.
- Exploitation: as of 2026-09-24, none of the 29 CVEs is in CISA KEV. In CISA’s SSVC assessments in the CVE records, CVE-2026-77244 is “none” but rated automatable; checking all 29 records on 2026-09-28, 26 have an SSVC assessment (7 “none”, 19 “poc”, meaning a public proof of concept), none is “active”, and 3 (CVE-2026-77262, CVE-2026-77265, CVE-2026-77267) have no assessment yet. Many of the public advisories include reproduction steps the researchers tested in their own test environments. No source reports exploitation in the wild, and there is no information on whether they were exploited before a patch existed. FIRST publishes an EPSS score (an estimate of the chance of exploitation in the next 30 days) of 0.28% for CVE-2026-77244 (2026-09-27).
- Code execution: only the CVE-2026-77271 advisory describes a path to code execution (overwriting a program module, effective after a restart); the others don’t say so. The CVE-2026-77244 advisory only relates it to an earlier, different CVE (CVE-2026-27825) of the same class.
- Related advisory: GHSA-vc8m-84rp-53hx (CVE-2026-77254) describes the same fallback to global credentials and was closed by the same fix.
- Related weakness types: CWE-287, CWE-306, CWE-862, CWE-22, CWE-918, CWE-732, CWE-79; the design principles “deny by default on failure” (fail-closed) and “check permissions when a tool runs, not only when it is listed”.
Verification Checked item by item against sources by AI under our review rules, all passed; not human-reviewed and not yet reproduced in our lab
| AI review | 2026-09-28 · review rules |
|---|
Verification records describe the environment and the result only, never reproduction steps or code that could attack other people’s systems. See our policy.
Sources
- OtherFIRST EPSS API - CVE-2026-77244 · FIRST, 2026-09-27 · accessed 2026-09-28
- CVE / NVD / OSVCVE-2026-77244 Record (CVE Services API) · CVE Program, 2026-09-22 · accessed 2026-09-24
- AdvisoryGHSA-wrhw-j3f9-8vc6 — Authentication bypass in HTTP transport · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- Vendormcp-atlassian security advisories · sooperset (GitHub) · accessed 2026-09-24
- AdvisoryGHSA-vc8m-84rp-53hx — Unauthenticated HTTP MCP requests can use globally configured Jira and Confluence credentials · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-cc5h-2pwp-pvcc — Unauthenticated arbitrary local file read via upload_attachment file_path, chained with missing auth on streamable-http transport · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-3r68-hf9h-887v — ENABLED_TOOLS / Toolset authorization bypass in mcp-atlassian · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-w66g-j6c4-hcfc — Three sub-bugs in JIRA_PROJECTS_FILTER / CONFLUENCE_SPACES_FILTER allow forbidden-project content exfiltration (one LIVE-proven on Atlassian Cloud) · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-rqwg-9346-fjjv — JIRA_PROJECTS_FILTER and CONFLUENCE_SPACES_FILTER can be bypassed in search tools · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-wv8v-v4c5-v75j — MCP HTTP Client Server-Local File Exfiltration via Unvalidated Attachment Upload Path · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-f6pj-qv47-g96w — Arbitrary server-local file upload to Jira/Confluence attachments via unrestricted file_path parameters · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-vc25-24vv-fxxm — Jira and Confluence attachment upload tools can read arbitrary server-local files · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-2xj6-xx86-cwwc — Arbitrary File Read & Exfiltration (Confused Deputy) in JIRA update_issue · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-mrq8-fv7v-hhjg — HTTP upload tools accept arbitrary server-local file paths · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-93xw-j965-9mx3 — Arbitrary file read/exfiltration via upload_attachment missing validate_safe_path() · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-6cr4-ccf3-x7h4 — Arbitrary file read via confluence_upload_attachment allows exfiltration of server credentials · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-f4p7-qx46-wc5j — Arbitrary local file READ via unconstrained file_path in upload_attachment (Confluence + Jira) — mirror of patched CVE-2026-27825 · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-p6hp-93wp-fh6p — Path Traversal / Arbitrary File Read in confluence_upload_attachment MCP tool (incomplete fix of GHSA-xjgw-4wvw-rgm4) · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-mfv2-4wvm-9pgp — Path traversal in upload_attachment allows arbitrary file read and exfiltration via MCP tool call · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-h7wj-5v37-59r2 — Path traversal in upload_attachment allows arbitrary file read (incomplete fix for CVE-2026-27825) · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-f26r-j276-ggg4 — Arbitrary File Read via Upload Attachment Tools · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-6vmq-24h2-pj7j — Incomplete path traversal fix allows intra-CWD module overwrite and RCE (bypass of GHSA-xjgw-4wvw-rgm4) · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-72fm-whvq-jghf — Incomplete fix for CVE-2026-27826: DNS rebinding bypasses SSRF validation (validated IP not pinned) · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-v9m3-wfh8-5646 — Incomplete fix for GHSA-7r34-79r5-rcc9 (CVE-2026-27826): redirect-based SSRF via unhooked requests session in Jira user-permission lookup · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-6529-c226-h328 — SSRF redirect protection missing for basic-auth and OAuth authentication branches · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-49xv-9743-pw8w — SSRF via DNS Rebinding in Header-Based Authentication Flow · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-5wf4-jqxh-8gm3 — Incomplete fix for CVE-2026-27826 in mcp-atlassian · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-hgcf-4mq8-5266 — SSRF Protection Bypass · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-g5xv-mhgm-v5f6 — OAuth fallback token storage writes plaintext access and refresh tokens with group-readable permissions · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-76pr-5669-3xf5 — OAuth refresh-token backup file is world-readable under default Unix umask · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-4596-2p6p-28cv — Insecure File Permissions on OAuth Token Storage · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-g2r2-3j32-j27x — Reflected XSS in OAuth Setup Callback Handler · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- AdvisoryGHSA-xjgw-4wvw-rgm4 — Arbitrary file write via unconstrained download_path (CVE-2026-27825) · sooperset (GitHub), 2026-02-24 · accessed 2026-09-24
- AdvisoryGHSA-7r34-79r5-rcc9 — SSRF via X-Atlassian-Jira-Url / X-Atlassian-Confluence-Url headers (CVE-2026-27826) · sooperset (GitHub), 2026-02-24 · accessed 2026-09-24
- Patch / releasemcp-atlassian v0.22.0 release · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- Patch / releasePull request #1448 (HTTP transport authentication fix) · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
- Patch / releasePull request #1435 (OAuth proxy upstream token validation) · sooperset (GitHub) · accessed 2026-09-24
- Vendormcp-atlassian releases · sooperset (GitHub) · accessed 2026-09-24
- AdvisoryGHSA-5j8j-256g-vvp5 — Unauthenticated tool execution as operator via --transport sse · sooperset (GitHub), 2026-08-19 · accessed 2026-09-24
- CVE / NVD / OSVNVD API - CVE-2026-77244 · NIST · accessed 2026-09-24
- OtherOSV - CVE-2026-77244 · OSV · accessed 2026-09-24
- OtherOSV - GHSA-wrhw-j3f9-8vc6 · OSV, 2026-09-22 · accessed 2026-09-24
- AdvisoryGitLab Advisory Database - mcp-atlassian CVE-2026-77244 · GitLab · accessed 2026-09-24
- OtherMCP Atlassian authentication documentation · mcp-atlassian docs site · accessed 2026-09-24
- OtherCVE-2026-77244 · Strix · accessed 2026-09-24
Press brief
In one sentence
mcp-atlassian is an open-source server that lets AI assistants work with Jira and Confluence through the MCP protocol. On July 10, 2026 the maintainer released version 0.22.0, fixing the findings of a security audit in one go; 29 of them received CVEs published on September 22. The most severe is an HTTP mode that did not check who was calling and fell back to the account the operator had configured on the server (CVSS 10.0). More than ten other advisories say the attachment upload tools would upload any file on the server to Jira or Confluence; the rest cover SSRF protection gaps, tool and project restrictions that could be bypassed, overly permissive OAuth token files and one XSS. No source has reported exploitation in the wild.
Key facts
- Number of CVEs
- 29 (all listed as affecting versions before 0.22.0) github.com
- Highest severity
- CVSS 3.1 10.0 (CVE-2026-77244, CNA; NVD analysis pending) cveawg.mitre.org
- Fixed version
- 0.22.0 (released 2026-07-10) github.com
- CVE published
- 2026-09-22 cveawg.mitre.org
- Vendor advisories
- 29 GHSAs, published by maintainer sooperset on 2026-07-10 github.com
Confirmed
- All 29 CVEs are listed as affecting versions before 0.22.0 and are fixed in 0.22.0.
- Before 0.22.0, the HTTP transport accepts requests without a verified identity and falls back to the operator's global Jira/Confluence credentials.
- The attachment upload tools read a server file named by the caller and upload it as an attachment; advisory GHSA-cc5h-2pwp-pvcc describes chaining this with the HTTP authentication bypass so an attacker with no account can read server files.
- As of 2026-09-24 none are in CISA KEV; none of CISA's SSVC assessments records exploitation as active.
Unconfirmed / disputed
- With the OAuth proxy enabled, no source says whether versions after 0.22.0 fix the 'accepts any non-empty token' behavior (0.22.0 still has it, as the maintainer confirmed).
- No source says whether these flaws were exploited before a patch existed.
- Apart from CVE-2026-77271 (overwriting a program module, effective after a restart), no source says this batch allows code execution.
- NVD has not finished its own scoring; 8 of the CNA scores are CVSS 4.0 and can't be compared directly with 3.1 scores.
Quotable line
The same door was broken in several places at once. It didn't ask who was knocking, it handed over the owner's keys, and it helped pack up what was inside the house.
Images
Download the share image (PNG) · Attack flow diagram (downloadable)
Please credit "PlainCVE" and link to this page. Full citation format is under "How to cite" below. Found a factual error? Report it.
29 mcp-atlassian vulnerabilities fixed in 0.22.0: HTTP authentication bypass, server file exfiltration, SSRF, token file permissions and more mcp-atlassian is an open-source server that lets AI assistants work with Jira and Confluence through the MCP protocol. On July 10, 2026 the maintainer released version 0.22.0, fixing the findings of a security audit in one go; 29 of them received CVEs published on September 22. The most severe is an HTTP mode that did not check who was calling and fell back to the account the operator had configured on the server (CVSS 10.0). More than ten other advisories say the attachment upload tools would upload any file on the server to Jira or Confluence; the rest cover SSRF protection gaps, tool and project restrictions that could be bypassed, overly permissive OAuth token files and one XSS. No source has reported exploitation in the wild. Key facts: - Number of CVEs:29 (all listed as affecting versions before 0.22.0)(https://github.com/sooperset/mcp-atlassian/security/advisories) - Highest severity:CVSS 3.1 10.0 (CVE-2026-77244, CNA; NVD analysis pending)(https://cveawg.mitre.org/api/cve/CVE-2026-77244) - Fixed version:0.22.0 (released 2026-07-10)(https://github.com/sooperset/mcp-atlassian/releases/tag/v0.22.0) - CVE published:2026-09-22(https://cveawg.mitre.org/api/cve/CVE-2026-77244) - Vendor advisories:29 GHSAs, published by maintainer sooperset on 2026-07-10(https://github.com/sooperset/mcp-atlassian/security/advisories) Confirmed: - All 29 CVEs are listed as affecting versions before 0.22.0 and are fixed in 0.22.0. - Before 0.22.0, the HTTP transport accepts requests without a verified identity and falls back to the operator's global Jira/Confluence credentials. - The attachment upload tools read a server file named by the caller and upload it as an attachment; advisory GHSA-cc5h-2pwp-pvcc describes chaining this with the HTTP authentication bypass so an attacker with no account can read server files. - As of 2026-09-24 none are in CISA KEV; none of CISA's SSVC assessments records exploitation as active. Unconfirmed / disputed: - With the OAuth proxy enabled, no source says whether versions after 0.22.0 fix the 'accepts any non-empty token' behavior (0.22.0 still has it, as the maintainer confirmed). - No source says whether these flaws were exploited before a patch existed. - Apart from CVE-2026-77271 (overwriting a program module, effective after a restart), no source says this batch allows code execution. - NVD has not finished its own scoring; 8 of the CNA scores are CVSS 4.0 and can't be compared directly with 3.1 scores. 「The same door was broken in several places at once. It didn't ask who was knocking, it handed over the owner's keys, and it helped pack up what was inside the house.」— PlainCVE https://plaincve.date/en/vulns/cve-2026-77244-mcp-atlassian-http-auth-bypass
How to cite this page
This article is CC BY 4.0. Please keep the attribution and link when republishing.
PlainCVE Team (2026). "29 mcp-atlassian vulnerabilities fixed in 0.22.0: HTTP authentication bypass, server file exfiltration, SSRF, token file permissions and more". PlainCVE. https://plaincve.date/en/vulns/cve-2026-77244-mcp-atlassian-http-auth-bypass (accessed YYYY-MM-DD)BibTeX
@misc{cve202677244mcpatlassianhttpauthbypass2026,
title = {29 mcp-atlassian vulnerabilities fixed in 0.22.0: HTTP authentication bypass, server file exfiltration, SSRF, token file permissions and more},
author = {PlainCVE Team},
year = {2026},
howpublished = {PlainCVE},
url = {https://plaincve.date/en/vulns/cve-2026-77244-mcp-atlassian-http-auth-bypass},
note = {Updated 2026-09-28}
}