Description
Chainlit is a Python framework for building production-ready conversational AI applications. From 2.4.0rc0 until 2.12.0, Chainlit deployments with features.mcp.enabled set to true in .chainlit/config.toml expose the POST /mcp endpoint without requiring authentication. For sse and streamable-http transports, ConnectSseMCPRequest and ConnectStreamableHttpMCPRequest in backend/chainlit/types.py accept a user-controlled url and optional headers dictionary without scheme validation, private-address filtering, or an allowlist. The connect_mcp handler in backend/chainlit/server.py passes these values to sse_client() or streamablehttp_client(), allowing the Chainlit server to make blind outbound requests to arbitrary internal or external services, including cloud metadata endpoints, with attacker-controlled Authorization and Cookie headers. The SSE URL sink has existed since 2.4.0rc0, while attacker-controlled header forwarding and streamable-http support were added in 2.6.4. The response is consumed internally and not returned, but the attacker can issue state-changing authenticated requests, discover internal services, scan ports, and probe metadata endpoints. This issue is fixed in version 2.12.0.
Published: 2026-08-25
Score: 7.2 High
EPSS: < 1% Very Low
KEV: No
Impact: Unauthenticated internal network access via SSRF
Action: Patch
AI Analysis

Impact

This vulnerability stems from Chainlit allowing the POST /mcp endpoint to be invoked without authentication when the feature is enabled. The endpoint accepts a user‑controlled URL and optional headers without validating the scheme, filtering private addresses, or enforcing an allowlist. As a result, an attacker can trigger blind outbound HTTP requests to arbitrary internal or external services, including cloud metadata endpoints, with attacker‑supplied Authorization and Cookie headers. The Chainlit server consumes the responses internally, but the attacker can issue state‑changing requests to internal infrastructure, discover services, scan ports, and probe metadata endpoints. The weakness is a classic Server Side Request Forgery (SSE) flaw identified in CWE‑918. The impact is the ability to access internal resources and perform unauthorized actions, potentially compromising sensitive data or services.

Affected Systems

The affected product is the Chainlit framework. Any deployment across versions from 2.4.0rc0 up to, but not including, 2.12.0 that has the features.mcp.enabled flag set to true in the .chainlit/config.toml is vulnerable. Older or newer releases are not affected.

Risk and Exploitability

The CVSS score of 7.2 indicates a medium‑to‑high severity. The EPSS score is unavailable, but the lack of an authentication mechanism on the vulnerable endpoint lowers the barrier to exploitation. The vulnerability is not listed in the CISA KEV catalog, implying no known public exploits as of the data provided. An attacker can simply issue a crafted POST /mcp request to the Chainlit server, and, if the server is reachable from an attacker’s network, the SSRF will allow intranet or cloud endpoint enumeration and potentially state‑changing operations. The attack vector is simple and requires no privileged access to the target system.

Generated by OpenCVE AI on August 25, 2026 at 22:16 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Chainlit to version 2.12.0 or later, where the SSRF issue is fixed.
  • Disable the MCP feature by setting features.mcp.enabled = false in the .chainlit/config.toml to remove the unauthenticated endpoint.
  • Restrict external access to the Chainlit server or enforce authentication on the POST /mcp endpoint to block unauthenticated requests.

Generated by OpenCVE AI on August 25, 2026 at 22:16 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-hvfh-5mj3-5f3j Chainlist has SSRF via MCP SSE and streamable-http transports that allows unauthenticated internal network access
History

Thu, 27 Aug 2026 18:00:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 25 Aug 2026 21:15:00 +0000

Type Values Removed Values Added
First Time appeared Chainlit
Chainlit chainlit
Vendors & Products Chainlit
Chainlit chainlit

Tue, 25 Aug 2026 19:45:00 +0000

Type Values Removed Values Added
Description Chainlit is a Python framework for building production-ready conversational AI applications. From 2.4.0rc0 until 2.12.0, Chainlit deployments with features.mcp.enabled set to true in .chainlit/config.toml expose the POST /mcp endpoint without requiring authentication. For sse and streamable-http transports, ConnectSseMCPRequest and ConnectStreamableHttpMCPRequest in backend/chainlit/types.py accept a user-controlled url and optional headers dictionary without scheme validation, private-address filtering, or an allowlist. The connect_mcp handler in backend/chainlit/server.py passes these values to sse_client() or streamablehttp_client(), allowing the Chainlit server to make blind outbound requests to arbitrary internal or external services, including cloud metadata endpoints, with attacker-controlled Authorization and Cookie headers. The SSE URL sink has existed since 2.4.0rc0, while attacker-controlled header forwarding and streamable-http support were added in 2.6.4. The response is consumed internally and not returned, but the attacker can issue state-changing authenticated requests, discover internal services, scan ports, and probe metadata endpoints. This issue is fixed in version 2.12.0.
Title Chainlit: SSRF via MCP SSE and streamable-http transports allows unauthenticated internal network access
Weaknesses CWE-918
References
Metrics cvssV3_1

{'score': 7.2, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N'}


Subscriptions

Chainlit Chainlit
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-27T14:35:27.308Z

Reserved: 2026-05-08T16:58:28.895Z

Link: CVE-2026-45019

cve-icon Vulnrichment

Updated: 2026-08-27T13:55:00.679Z

cve-icon NVD

Status : Deferred

Published: 2026-08-25T20:16:55.910

Modified: 2026-09-09T21:07:31.353

Link: CVE-2026-45019

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-25T22:30:17Z

Weaknesses
  • CWE-918

    Server-Side Request Forgery (SSRF)