Every CVE Search/ Get API key

CVE-2026-77265

MCP Atlassian: SSRF via DNS Rebinding in Header-Based Authentication Flow

5.9 MediumFix available

MCP Atlassian is a Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Prior to 0.22.0, header-supplied Jira or Confluence URLs are resolved and validated before the HTTP client resolves the hostname again for the connection. An unauthenticated caller can use a DNS-rebinding hostname that returns a public address during validation and an internal address during connection, causing requests to internal or metadata services. The advisory traces the vulnerable input and processing flow through X-Atlassian-Jira-Url, X-Atlassian-Confluence-Url, validate_url_for_ssrf, and DNS rebinding, which identify the affected entry points, controls, and code paths. This issue is fixed in version 0.22.0.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
High
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
None
Availability
None

Exploit likelihood

0.29%Down 0.1 points since Sep 23, 2026
90%50%10%1%

What each source reports

CVE List Score used 5.9

MCP Atlassian: SSRF via DNS Rebinding in Header-Based Authentication Flow

MCP Atlassian is a Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Prior to 0.22.0, header-supplied Jira or Confluence URLs are resolved and validated before the HTTP client resolves the hostname again for the connection. An unauthenticated caller can use a DNS-rebinding hostname that returns a public address during validation and an internal address during connection, causing requests to internal or metadata services. The advisory traces the vulnerable input and processing flow through X-Atlassian-Jira-Url, X-Atlassian-Confluence-Url, validate_url_for_ssrf, and DNS rebinding, which identify the affected entry points, controls, and code paths. This issue is fixed in version 0.22.0.

Record
CVE-2026-77265
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
EUVDEUVD-2026-84606 5.9

MCP Atlassian is a Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Prior to 0.22.0, header-supplied Jira or Confluence URLs are resolved and validated before the HTTP client resolves the hostname again for the connection. An unauthenticated caller can use a DNS-rebinding hostname that returns a public address during validation and an internal address during connection, causing requests to internal or metadata services. The advisory traces the vulnerable input and processing flow through X-Atlassian-Jira-Url, X-Atlassian-Confluence-Url, validate_url_for_ssrf, and DNS rebinding, which identify the affected entry points, controls, and code paths. This issue is fixed in version 0.22.0.

Record
EUVD-2026-84606
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-49xv-9743-pw8w 5.9

MCP Atlassian: SSRF via DNS Rebinding in Header-Based Authentication Flow

Summary

The SSRF protection for header-based authentication uses a validate-then-use pattern vulnerable to DNS rebinding. validate_url_for_ssrf resolves the hostname via DNS and checks that the resolved IP is globally routable. However, the actual HTTP request happens later, during which the DNS record may have changed to point to an internal IP (127.0.0.1, 169.254.169.254, etc.). The SSRF redirect hook only validates redirect targets, not the initial connection.

Details

The vulnerability spans main.py (validation) and dependencies.py (use).

Step 1 -- URL validation at middleware time:

In src/mcp_atlassian/servers/main.py:524-531, the URL from X-Atlassian-Jira-Url is validated:

if jira_url_str:
    ssrf_error = validate_url_for_ssrf(jira_url_str)
    if ssrf_error:
        # blocked

validate_url_for_ssrf (src/mcp_atlassian/utils/urls.py:113-116) resolves DNS and checks is_global:

dns_error = _check_dns_resolution(hostname)
if dns_error:
    return dns_error

Step 2 -- HTTP request happens later with a separate DNS resolution:

In src/mcp_atlassian/servers/dependencies.py:544-562, a JiraFetcher is created with the attacker URL and makes HTTP requests to it. The SSRF redirect hook (attach_ssrf_hook=True) is applied but only checks redirect Location headers, not the initial connection target.

DNS rebinding timeline:

  1. Attacker sets up rebind.attacker.com with short TTL (1 second)
  2. First DNS resolution (validate_url_for_ssrf): returns 1.2.3.4 (public) -- passes
  3. TTL expires
  4. Second DNS resolution (requests.get): returns 169.254.169.254 (metadata)
  5. HTTP request reaches internal IP, bypassing the SSRF check

PoC

Use a DNS rebinding service like rbndr.us. Send a request with X-Atlassian-Jira-Url set to a rebinding hostname (e.g., rebind-169.254.169.254-1.2.3.4.rbndr.us) and X-Atlassian-Jira-Personal-Token set to any value. With approximately 50% probability per attempt, the request reaches the internal metadata service.

Impact

  • Cloud metadata access: Steal IAM credentials via 169.254.169.254
  • Internal network scanning: Proxy requests to internal services
  • AC:H: DNS rebinding is probabilistic and requires multiple attempts
  • Limited to header_pat branch: Only affects deployments accepting header-based PAT authentication

Recommended Fix

Pin DNS resolution: resolve the hostname once during validation, then connect to the resolved IP directly (with the original hostname in the Host header). This eliminates the TOCTOU gap between validation and use.

Record
GHSA-49xv-9743-pw8w
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
NVD 5.9

MCP Atlassian is a Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Prior to 0.22.0, header-supplied Jira or Confluence URLs are resolved and validated before the HTTP client resolves the hostname again for the connection. An unauthenticated caller can use a DNS-rebinding hostname that returns a public address during validation and an internal address during connection, causing requests to internal or metadata services. The advisory traces the vulnerable input and processing flow through X-Atlassian-Jira-Url, X-Atlassian-Confluence-Url, validate_url_for_ssrf, and DNS rebinding, which identify the affected entry points, controls, and code paths. This issue is fixed in version 0.22.0.

Record
CVE-2026-77265
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
OSV 5.9

MCP Atlassian: SSRF via DNS Rebinding in Header-Based Authentication Flow

MCP Atlassian is a Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Prior to 0.22.0, header-supplied Jira or Confluence URLs are resolved and validated before the HTTP client resolves the hostname again for the connection. An unauthenticated caller can use a DNS-rebinding hostname that returns a public address during validation and an internal address during connection, causing requests to internal or metadata services. The advisory traces the vulnerable input and processing flow through X-Atlassian-Jira-Url, X-Atlassian-Confluence-Url, validate_url_for_ssrf, and DNS rebinding, which identify the affected entry points, controls, and code paths. This issue is fixed in version 0.22.0.

Record
CVE-2026-77265
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
OSVGHSA-49xv-9743-pw8w 5.9

MCP Atlassian: SSRF via DNS Rebinding in Header-Based Authentication Flow

Summary

The SSRF protection for header-based authentication uses a validate-then-use pattern vulnerable to DNS rebinding. validate_url_for_ssrf resolves the hostname via DNS and checks that the resolved IP is globally routable. However, the actual HTTP request happens later, during which the DNS record may have changed to point to an internal IP (127.0.0.1, 169.254.169.254, etc.). The SSRF redirect hook only validates redirect targets, not the initial connection.

Details

The vulnerability spans main.py (validation) and dependencies.py (use).

Step 1 -- URL validation at middleware time:

In src/mcp_atlassian/servers/main.py:524-531, the URL from X-Atlassian-Jira-Url is validated:

if jira_url_str:
    ssrf_error = validate_url_for_ssrf(jira_url_str)
    if ssrf_error:
        # blocked

validate_url_for_ssrf (src/mcp_atlassian/utils/urls.py:113-116) resolves DNS and checks is_global:

dns_error = _check_dns_resolution(hostname)
if dns_error:
    return dns_error

Step 2 -- HTTP request happens later with a separate DNS resolution:

In src/mcp_atlassian/servers/dependencies.py:544-562, a JiraFetcher is created with the attacker URL and makes HTTP requests to it. The SSRF redirect hook (attach_ssrf_hook=True) is applied but only checks redirect Location headers, not the initial connection target.

DNS rebinding timeline:

  1. Attacker sets up rebind.attacker.com with short TTL (1 second)
  2. First DNS resolution (validate_url_for_ssrf): returns 1.2.3.4 (public) -- passes
  3. TTL expires
  4. Second DNS resolution (requests.get): returns 169.254.169.254 (metadata)
  5. HTTP request reaches internal IP, bypassing the SSRF check

PoC

Use a DNS rebinding service like rbndr.us. Send a request with X-Atlassian-Jira-Url set to a rebinding hostname (e.g., rebind-169.254.169.254-1.2.3.4.rbndr.us) and X-Atlassian-Jira-Personal-Token set to any value. With approximately 50% probability per attempt, the request reaches the internal metadata service.

Impact

  • Cloud metadata access: Steal IAM credentials via 169.254.169.254
  • Internal network scanning: Proxy requests to internal services
  • AC:H: DNS rebinding is probabilistic and requires multiple attempts
  • Limited to header_pat branch: Only affects deployments accepting header-based PAT authentication

Recommended Fix

Pin DNS resolution: resolve the hostname once during validation, then connect to the resolved IP directly (with the original hostname in the Host header). This eliminates the TOCTOU gap between validation and use.

Record
GHSA-49xv-9743-pw8w
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
OSVPYSEC-2026-4083 5.9

MCP Atlassian: SSRF via DNS Rebinding in Header-Based Authentication Flow

Summary

The SSRF protection for header-based authentication uses a validate-then-use pattern vulnerable to DNS rebinding. validate_url_for_ssrf resolves the hostname via DNS and checks that the resolved IP is globally routable. However, the actual HTTP request happens later, during which the DNS record may have changed to point to an internal IP (127.0.0.1, 169.254.169.254, etc.). The SSRF redirect hook only validates redirect targets, not the initial connection.

Details

The vulnerability spans main.py (validation) and dependencies.py (use).

Step 1 -- URL validation at middleware time:

In src/mcp_atlassian/servers/main.py:524-531, the URL from X-Atlassian-Jira-Url is validated:

if jira_url_str:
    ssrf_error = validate_url_for_ssrf(jira_url_str)
    if ssrf_error:
        # blocked

validate_url_for_ssrf (src/mcp_atlassian/utils/urls.py:113-116) resolves DNS and checks is_global:

dns_error = _check_dns_resolution(hostname)
if dns_error:
    return dns_error

Step 2 -- HTTP request happens later with a separate DNS resolution:

In src/mcp_atlassian/servers/dependencies.py:544-562, a JiraFetcher is created with the attacker URL and makes HTTP requests to it. The SSRF redirect hook (attach_ssrf_hook=True) is applied but only checks redirect Location headers, not the initial connection target.

DNS rebinding timeline:

  1. Attacker sets up rebind.attacker.com with short TTL (1 second)
  2. First DNS resolution (validate_url_for_ssrf): returns 1.2.3.4 (public) -- passes
  3. TTL expires
  4. Second DNS resolution (requests.get): returns 169.254.169.254 (metadata)
  5. HTTP request reaches internal IP, bypassing the SSRF check

PoC

Use a DNS rebinding service like rbndr.us. Send a request with X-Atlassian-Jira-Url set to a rebinding hostname (e.g., rebind-169.254.169.254-1.2.3.4.rbndr.us) and X-Atlassian-Jira-Personal-Token set to any value. With approximately 50% probability per attempt, the request reaches the internal metadata service.

Impact

  • Cloud metadata access: Steal IAM credentials via 169.254.169.254
  • Internal network scanning: Proxy requests to internal services
  • AC:H: DNS rebinding is probabilistic and requires multiple attempts
  • Limited to header_pat branch: Only affects deployments accepting header-based PAT authentication

Recommended Fix

Pin DNS resolution: resolve the hostname once during validation, then connect to the resolved IP directly (with the original hostname in the Host header). This eliminates the TOCTOU gap between validation and use.

Record
PYSEC-2026-4083
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
mcp-atlassian
PyPI
before 0.22.0
0.22.0
mcp-atlassian
PyPI
before 0.22.0, plus listed versions
0.1.10.1.100.1.110.1.120.1.13
Show 45 moreShow less
0.1.140.1.150.1.160.1.20.1.30.1.40.1.60.1.70.1.80.1.90.10.00.10.10.10.20.10.30.10.40.10.50.10.60.11.00.11.10.11.100.11.110.11.120.11.20.11.2a20.11.30.11.40.11.50.11.60.11.70.11.80.11.90.12.00.13.00.13.10.14.00.14.10.14.20.14.30.15.00.16.00.16.10.17.00.18.00.18.10.19.0
0.22.0

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-77265 is a medium vulnerability (CVSS 5.9) in Mcp-atlassian Mcp Atlassian, published September 22, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.29%, the 21st percentile. Fixed in mcp-atlassian 0.22.0.

References

This page doesn't list everything

Left out here: 29 versions. The JSON record has them.

MoveEnter Open