CVE-2026-77267
mediumpriority · track · 26EPSS 0.003 · 25 %ileUSEPSS · scored 2026-10-27
MCP Atlassian is a Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Prior to 0.22.0, the X-Atlassian-Jira-Url and X-Atlassian-Confluence-Url headers are processed by _process_authentication_headers and used to construct Atlassian fetchers without calling validate_url_for_ssrf. A caller who can set these headers can supply an internal or metadata-service URL and cause the server to send requests to that destination, bypassing the incomplete CVE-2026-27826 remediation. This issue is fixed in version 0.22.0.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode⚠ sources disagree · medium–high · 5.7–8.3
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
affected products (2)
Products and version ranges known to be affected.
advisories (2)
Vendor and ecosystem advisories describing this.
- GHSA-5wf4-jqxh-8gm3mcp-atlassian has an incomplete SSRF remediation2026-09-22ghsa · osvUS
### Summary The `UserTokenMiddleware` extracts URLs from `X-Atlassian-Jira-Url` and `X-Atlassian-Confluence-Url` HTTP headers and passes them directly to API client constructors without any SSRF validation. ### Affected Package - **Ecosystem:** PyPI - **Package:** mcp-atlassian - **Affected versions:** all versions before fix commit 5cd697dfce91 - **Patched versions:** >= commit 5cd697dfce91 ### Details In `main.py`, `_process_authentication_headers()` extracts URLs from ASGI headers without validation. In `dependencies.py`, `get_jira_fetcher()` creates `JiraConfig` with `url=jira_url_header` directly. There is no `validate_url` call, no IP range check, no hostname validation. The fix adds URL validation to some paths but the header-based URL extraction in `_process_authentication_headers()` still passes raw URLs through. The derived config objects use the header URL directly and the fetcher makes HTTP requests to that URL. ### PoC ```python jira_url_header = headers.get(b"x-atlassian-jira-url") jira_url_str = jira_url_header.decode("latin-1") if jira_url_header else None service_headers["X-Atlassian-Jira-Url"] = jira_url_str ``` **Steps to reproduce:** 1. `git clone https://github.com/sooperset/mcp-atlassian /tmp/mcp-atlassian_test` 2. `cd /tmp/mcp-atlassian_test && git checkout 5cd697dfce91~1` 3. `pip install -e .` 4. `python3 poc.py` **Expected output:** ``` VULNERABILITY CONFIRMED User-supplied URLs from HTTP headers passed directly to JiraConfig/JiraFetcher with no SSRF validation ``` ### Impact An attacker can set `X-Atlassian-Jira-Url: http://169.254.169.254/latest/meta-data/` to access AWS instance metadata, or target any internal service. The server makes authenticated HTTP requests to the attacker-specified URL. ### Suggested Remediation Validate all user-supplied URLs against an allowlist of permitted hostnames or reject private/loopback/link-local IP ranges. Consider requiring server-side configuration of allowed Atlassian instance URLs.
- PYSEC-2026-4084mcp-atlassian has an incomplete SSRF remediation2026-10-01vendor · osvUS
### Summary The `UserTokenMiddleware` extracts URLs from `X-Atlassian-Jira-Url` and `X-Atlassian-Confluence-Url` HTTP headers and passes them directly to API client constructors without any SSRF validation. ### Affected Package - **Ecosystem:** PyPI - **Package:** mcp-atlassian - **Affected versions:** all versions before fix commit 5cd697dfce91 - **Patched versions:** >= commit 5cd697dfce91 ### Details In `main.py`, `_process_authentication_headers()` extracts URLs from ASGI headers without validation. In `dependencies.py`, `get_jira_fetcher()` creates `JiraConfig` with `url=jira_url_header` directly. There is no `validate_url` call, no IP range check, no hostname validation. The fix adds URL validation to some paths but the header-based URL extraction in `_process_authentication_headers()` still passes raw URLs through. The derived config objects use the header URL directly and the fetcher makes HTTP requests to that URL. ### PoC ```python jira_url_header = headers.get(b"x-atlassian-jira-url") jira_url_str = jira_url_header.decode("latin-1") if jira_url_header else None service_headers["X-Atlassian-Jira-Url"] = jira_url_str ``` **Steps to reproduce:** 1. `git clone https://github.com/sooperset/mcp-atlassian /tmp/mcp-atlassian_test` 2. `cd /tmp/mcp-atlassian_test && git checkout 5cd697dfce91~1` 3. `pip install -e .` 4. `python3 poc.py` **Expected output:** ``` VULNERABILITY CONFIRMED User-supplied URLs from HTTP headers passed directly to JiraConfig/JiraFetcher with no SSRF validation ``` ### Impact An attacker can set `X-Atlassian-Jira-Url: http://169.254.169.254/latest/meta-data/` to access AWS instance metadata, or target any internal service. The server makes authenticated HTTP requests to the attacker-specified URL. ### Suggested Remediation Validate all user-supplied URLs against an allowlist of permitted hostnames or reject private/loopback/link-local IP ranges. Consider requiring server-side configuration of allowed Atlassian instance URLs.
also known as (2)
Other names and identifiers for this entity.
sources
Which sources assert this record, and when.
references (4) nvd
External citations — patches, advisories, analysis.
- https://github.com/sooperset/mcp-atlassian/commit/b041733473f95119dd539542a43c280737a8e460Patch
- https://github.com/sooperset/mcp-atlassian/pull/1448Issue TrackingPatch
- https://github.com/sooperset/mcp-atlassian/releases/tag/v0.22.0Release Notes
- https://github.com/sooperset/mcp-atlassian/security/advisories/GHSA-5wf4-jqxh-8gm3ExploitVendor Advisory
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan