// 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

PlainCVE Team · Published 2026-09-28 · AI-assisted · Press brief ↓

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 affectedAll 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 happensAt 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 nowUpgrade 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)
  • Vendor / maintainerIf you can't upgrade yet, advisory GHSA-vc25-24vv-fxxm notes that read-only mode blocks the attachment upload tools (this is the advisory's observation, not an official workaround)The tools are decorated with `@check_write_access`, so `READ_ONLY_MODE=true` blocks them.github.com
Affected versionsAll 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-21
View evidence(3)
  • CVE recordAll 29 CVE records list mcp-atlassian < 0.22.0 as affected (CVE-2026-77244 shown as an example)"version":"< 0.22.0"cveawg.mitre.org
  • Vendor / maintainerThe advisory published by the maintainer (GHSA-cc5h-2pwp-pvcc) says the HTTP authentication bypass can be chained with the attachment file read, letting an attacker with no account read server filesChained, an unauthenticated network attacker reads arbitrary files on the MCP server hostgithub.com
  • Vendor / maintainerThe attachment file read also exists in local stdio mode, with higher impact in HTTP deployments (GHSA-f6pj-qv47-g96w)In local `stdio` deployments, this can expose files readable by the user's MCP process.github.com
Fixed versions0.22.0 or later (a similar SSE transport issue was fixed separately in 0.23.1)
View evidence(4)
  • Vendor / maintainerv0.22.0 release notes: this release resolves 37 advisories from a security auditA security audit (37 advisories, consolidated into root-cause families) was resolved in this release.github.com
  • Vendor / maintainerv0.22.0 release notes: unauthenticated streamable-http requests now get a 401 at the transport boundaryunauthenticated requests are rejected with 401 at the transport boundarygithub.com
  • Vendor / maintainerv0.22.0 release notes: paths passed to the attachment tools must now be inside the server's working directoryNote: paths passed to these tools must now resolve inside the server's working directory.github.com
  • Vendor / maintainerv0.22.0 release notes: OAuth fallback token files are now owner-onlyfallback token files are written owner-only (0600, dir 0700)github.com
CVSS vector
Show full vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
Timeline
  • First public 2026-07-10
CISA KEVNot listed(Not being in KEV does not mean it has not been exploited)
View evidence(1)
  • CERT / governmentIn CISA's SSVC assessment in the CVE-2026-77244 record, exploitation is "none" (the full count across all 29 records is in the text){"Exploitation":"none"}cveawg.mitre.org

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.

DETECTCheckAm I affected? Any signs of compromise?
  1. 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 check
    pip show mcp-atlassian | grep -i '^version'
  2. 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 check
    env | grep -iE 'ALLOW_GLOBAL_CRED_FALLBACK|READ_ONLY_MODE|ENABLED_TOOLS|TOOLSETS|PROJECTS_FILTER|SPACES_FILTER|TRANSPORT'
  3. 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.

  4. 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 check
    ls -la ~/.mcp-atlassian/
MITIGATEFix / mitigatePatch; block it if you cannot patch yet
  1. 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 environment
    pip install -U "mcp-atlassian>=0.22.0"
  2. 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.

RESPONDRespondIf you find signs of compromise
  1. 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.

  2. 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.

HARDENHardenPrevent the next one
  1. 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.

  2. 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.

  3. 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 setupSuggested version
streamable-http or stdio0.22.0 or later
SSE transport0.23.1 or later (per maintainer advisory GHSA-5j8j-256g-vvp5)
  1. Upgrade: pip install -U "mcp-atlassian>=0.22.0" (use >=0.23.1 for 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.
  2. 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_base64 parameter for uploading content directly. The project/space filters also become a hard limit.
  3. 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.
  4. 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.
  5. 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).
  6. 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.

29 mcp-atlassian vulnerabilities fixed in 0.22.0: HTTP authentication bypass, server file exfiltration, SSRF, token file permissions and more: 1. The attacker reaches the mcp-atlassian HTTP endpoint → 2. The HTTP transport does not verify who is calling → 3. The server falls back to the operator's global credentials → 4. The attacker reads and writes Jira and Confluence as the operator → 5. The audit trail names the operatorCVE-2026-77244 · 29 mcp-atlassian vulnerabilities fixed in 0.22.0: HTTP authentication bypass, server fileexfiltration, SSRF, token file permissions and moreAttackerYour systemExternalThe 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. 1The attackerreaches themcp-atlassian HTTPendpointThe 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. 2The HTTP transportdoes not verifywho is callingThe 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. 3The server fallsback to theoperator's globalcredentialsThe 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.4The attacker readsand writes Jiraand Confluence asthe operatorThe 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. 5The audit trailnames the operatorAttack pathCan be stopped herePlainCVE · plaincve.date/en/vulns/cve-2026-77244-mcp-atlassian-http-auth-bypass · CC BY 4.0
29 mcp-atlassian vulnerabilities fixed in 0.22.0: HTTP authentication bypass, server file exfiltration, SSRF, token file permissions and more: 1. The attacker reaches the mcp-atlassian HTTP endpoint → 2. The HTTP transport does not verify who is calling → 3. The server falls back to the operator's global credentials → 4. The attacker reads and writes Jira and Confluence as the operator → 5. The audit trail names the operatorCVE-2026-77244 · 29 mcp-atlassianvulnerabilities fixed in 0.22.0: HTTPauthentication bypass, server fileexfiltration, SSRF, token fil…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. 1AttackerThe attacker reaches themcp-atlassian HTTPendpointThe 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. 2Your systemThe HTTP transport doesnot verify who is callingThe 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. 3Your systemThe server falls back tothe operator's globalcredentialsThe 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.4ExternalThe attacker reads andwrites Jira andConfluence as theoperatorThe 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. 5ExternalThe audit trail namesthe operatorAttack pathCan be stopped herePlainCVE · CC BY 4.0plaincve.date/en/vulns/cve-2026-77244-mcp-atlassian-http-auth-bypass
Free to use in reporting and teaching under CC BY 4.0. Attribution is already on the image.
  1. 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).

  2. 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.

  3. 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.

  4. 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.

  5. 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:

ConditionWhich problems apply
Before 0.22.0 + HTTP transport (streamable-http) + global Jira/Confluence credentials configured + endpoint reachableThe 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=trueThe 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 settingsAll 29 CVEs fixed
0.22.0 or later with ALLOW_GLOBAL_CRED_FALLBACK=trueUnauthenticated requests can use the operator’s credentials again
SSE transportA 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 enabledNot 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.

CVEAdvisoryCategoryCVSSKey preconditions
CVE-2026-77244GHSA-wrhw-j3f9-8vc6HTTP auth bypass10.0HTTP transport, global credentials on the server, OAuth proxy not enabled; no account needed
CVE-2026-77254GHSA-vc8m-84rp-53hxHTTP auth bypass9.1HTTP transport with global credentials; a request with no Authorization header is enough
CVE-2026-77248GHSA-cc5h-2pwp-pvccHTTP auth bypass8.6streamable-http with global credentials; the advisory describes chaining it with file read, no account needed
CVE-2026-77243GHSA-3r68-hf9h-887vAuthorization bypass8.8Can reach the HTTP endpoint and call tools; ENABLED_TOOLS or TOOLSETS configured
CVE-2026-77251GHSA-w66g-j6c4-hcfcAuthorization bypass8.3 (4.0)Can call search or board tools (including a prompt-injected AI); project/space filter configured
CVE-2026-77252GHSA-rqwg-9346-fjjvAuthorization bypass6.5Can call search tools; filter configured while the account itself can see more
CVE-2026-77246GHSA-wv8v-v4c5-v75jFile read via attachments7.4HTTP 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-77247GHSA-f6pj-qv47-g96wFile read via attachments8.3 (4.0)Can call write/upload tools; stdio is also affected, with higher impact in HTTP deployments
CVE-2026-77253GHSA-vc25-24vv-fxxmFile read via attachments7.1Can call write tools; the advisory says READ_ONLY_MODE=true blocks it
CVE-2026-77255GHSA-2xj6-xx86-cwwcFile read via attachments8.6The attachments parameter of Jira update_issue; a confused-deputy case when the AI agent has fewer rights than the server process
CVE-2026-77257GHSA-mrq8-fv7v-hhjgFile read via attachments8.3 (4.0)An authenticated caller or a prompt-injected agent; needs an issue or page it can attach to
CVE-2026-77258GHSA-93xw-j965-9mx3File read via attachments7.7Can call the Confluence upload tool, including through a prompt-injected agent
CVE-2026-77259GHSA-6cr4-ccf3-x7h4File read via attachments7.7An authenticated MCP caller who can edit at least one Confluence page
CVE-2026-77260GHSA-f4p7-qx46-wc5jFile read via attachments8.3 (4.0)Prompt injection; or no authentication in HTTP mode together with the global-credential fallback
CVE-2026-77262GHSA-p6hp-93wp-fh6pFile read via attachments8.6Can call the Confluence upload tool; the advisory says the default streamable-http deployment needs no authentication
CVE-2026-77266GHSA-mfv2-4wvm-9pgpFile read via attachments6.5An authenticated MCP caller
CVE-2026-77269GHSA-h7wj-5v37-59r2File read via attachments6.5Can call the Confluence upload tools
CVE-2026-77270GHSA-f26r-j276-ggg4File read via attachments6.5An authenticated MCP caller or a prompt-injected agent
CVE-2026-77271GHSA-6vmq-24h2-pj7jModule overwrite8.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-77242GHSA-72fm-whvq-jghfSSRF7.5Multi-user mode with URLs in request headers; the advisory says no authentication is needed; DNS rebinding
CVE-2026-77249GHSA-v9m3-wfh8-5646SSRF5.3HTTP multi-user header mode; a redirect reaches an internal address, without seeing the response
CVE-2026-77261GHSA-6529-c226-h328SSRF7.1Basic auth or OAuth; the connected Atlassian server returns a redirect (attacker-controlled or compromised)
CVE-2026-77265GHSA-49xv-9743-pw8wSSRF5.9Header PAT authentication mode only; DNS rebinding that needs several attempts
CVE-2026-77267GHSA-5wf4-jqxh-8gm3SSRF8.3 (4.0)Header-supplied URLs still reach an unchecked path (incomplete fix of CVE-2026-27826)
CVE-2026-77274GHSA-hgcf-4mq8-5266SSRF8.8 (4.0)Can supply URLs in headers; the validator and the HTTP client read the URL differently
CVE-2026-77250GHSA-g5xv-mhgm-v5f6Token file permissions6.1OAuth in use; local users in the same group, or processes that can read the home directory
CVE-2026-77256GHSA-76pr-5669-3xf5Token file permissions8.3 (4.0)OAuth in use; with umask 022, any local user on the host can read it
CVE-2026-77268GHSA-4596-2p6p-28cvToken file permissions5.5OAuth in use; other local users on a shared host
CVE-2026-77272GHSA-g2r2-3j32-j27xReflected XSS5.4The 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_CREDENTIALS

2. 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 directly

The 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

DateEvent
2026-02-24Maintainer 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-10Maintainer publishes the 29 GHSAs in this batch; the same day adds the fix in PR #1448 and releases v0.22.0
2026-07-11Maintainer confirms the OAuth proxy verifier still accepts any non-empty bearer token (PR #1435)
2026-08-19Maintainer publishes GHSA-5j8j-256g-vvp5 for the SSE transport and releases v0.23.1 the same day
2026-08-20The 29 CVE IDs are reserved
2026-09-21Last ping on the upstream token validation PR, still unmerged (PlainCVE’s analysis; unconfirmed)
2026-09-22The 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 review2026-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

  1. OtherFIRST EPSS API - CVE-2026-77244 · FIRST, 2026-09-27 · accessed 2026-09-28
  2. CVE / NVD / OSVCVE-2026-77244 Record (CVE Services API) · CVE Program, 2026-09-22 · accessed 2026-09-24
  3. AdvisoryGHSA-wrhw-j3f9-8vc6 — Authentication bypass in HTTP transport · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  4. Vendormcp-atlassian security advisories · sooperset (GitHub) · accessed 2026-09-24
  5. 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
  6. 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
  7. AdvisoryGHSA-3r68-hf9h-887v — ENABLED_TOOLS / Toolset authorization bypass in mcp-atlassian · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. AdvisoryGHSA-2xj6-xx86-cwwc — Arbitrary File Read & Exfiltration (Confused Deputy) in JIRA update_issue · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  14. AdvisoryGHSA-mrq8-fv7v-hhjg — HTTP upload tools accept arbitrary server-local file paths · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  15. AdvisoryGHSA-93xw-j965-9mx3 — Arbitrary file read/exfiltration via upload_attachment missing validate_safe_path() · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. AdvisoryGHSA-f26r-j276-ggg4 — Arbitrary File Read via Upload Attachment Tools · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  22. 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
  23. 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
  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
  25. AdvisoryGHSA-6529-c226-h328 — SSRF redirect protection missing for basic-auth and OAuth authentication branches · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  26. AdvisoryGHSA-49xv-9743-pw8w — SSRF via DNS Rebinding in Header-Based Authentication Flow · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  27. AdvisoryGHSA-5wf4-jqxh-8gm3 — Incomplete fix for CVE-2026-27826 in mcp-atlassian · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  28. AdvisoryGHSA-hgcf-4mq8-5266 — SSRF Protection Bypass · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  29. 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
  30. 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
  31. AdvisoryGHSA-4596-2p6p-28cv — Insecure File Permissions on OAuth Token Storage · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  32. AdvisoryGHSA-g2r2-3j32-j27x — Reflected XSS in OAuth Setup Callback Handler · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  33. AdvisoryGHSA-xjgw-4wvw-rgm4 — Arbitrary file write via unconstrained download_path (CVE-2026-27825) · sooperset (GitHub), 2026-02-24 · accessed 2026-09-24
  34. 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
  35. Patch / releasemcp-atlassian v0.22.0 release · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  36. Patch / releasePull request #1448 (HTTP transport authentication fix) · sooperset (GitHub), 2026-07-10 · accessed 2026-09-24
  37. Patch / releasePull request #1435 (OAuth proxy upstream token validation) · sooperset (GitHub) · accessed 2026-09-24
  38. Vendormcp-atlassian releases · sooperset (GitHub) · accessed 2026-09-24
  39. AdvisoryGHSA-5j8j-256g-vvp5 — Unauthenticated tool execution as operator via --transport sse · sooperset (GitHub), 2026-08-19 · accessed 2026-09-24
  40. CVE / NVD / OSVNVD API - CVE-2026-77244 · NIST · accessed 2026-09-24
  41. OtherOSV - CVE-2026-77244 · OSV · accessed 2026-09-24
  42. OtherOSV - GHSA-wrhw-j3f9-8vc6 · OSV, 2026-09-22 · accessed 2026-09-24
  43. AdvisoryGitLab Advisory Database - mcp-atlassian CVE-2026-77244 · GitLab · accessed 2026-09-24
  44. OtherMCP Atlassian authentication documentation · mcp-atlassian docs site · accessed 2026-09-24
  45. 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.

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}
}