<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Chainlit (2.4.0rc0 - 2.11.1) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/chainlit-2.4.0rc0---2.11.1/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Wed, 26 Aug 2026 00:51:03 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/chainlit-2.4.0rc0---2.11.1/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>Unauthenticated SSRF in Chainlit MCP Component</title><link>https://feed.craftedsignal.io/briefs/2026-08-chainlit-ssrf/</link><pubDate>Wed, 26 Aug 2026 00:51:03 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-08-chainlit-ssrf/</guid><description>Chainlit versions 2.4.0rc0 through 2.11.1 contain an unauthenticated SSRF vulnerability (CVE-2026-45019) in the Model Context Protocol (MCP) component, allowing attackers to perform internal network reconnaissance and interact with internal APIs using attacker-controlled HTTP headers.</description><content:encoded><![CDATA[<p>Chainlit, an open-source framework for building LLM chat interfaces, is vulnerable to a severe Server-Side Request Forgery (SSRF) flaw when the Model Context Protocol (MCP) feature is enabled. The vulnerability exists in the <code>POST /mcp</code> endpoint, which handles <code>sse</code> and <code>streamable-http</code> transports. When enabled via <code>features.mcp.enabled = true</code>, the application fails to validate the <code>url</code> parameter and improperly forwards a user-supplied <code>headers</code> dictionary to the internal HTTP client.</p>
<p>An unauthenticated remote attacker can force the Chainlit server to execute arbitrary outbound HTTP requests. Because the server forwards attacker-supplied headers, including <code>Authorization</code> and <code>Cookie</code>, this vulnerability allows for unauthorized state-changing operations against internal services and provides a mechanism to probe sensitive cloud metadata endpoints (e.g., 169.254.169.254). The issue impacts all versions from 2.4.0rc0 up to, but not including, 2.12.0. Chainlit has addressed this by introducing a strict allowlist-based configuration model in version 2.12.0.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker establishes a connection to the target Chainlit server via Socket.IO or direct HTTP POST to <code>/mcp</code>.</li>
<li>Attacker crafts a JSON payload for the <code>/mcp</code> endpoint specifying <code>clientType</code> as <code>sse</code> or <code>streamable-http</code>.</li>
<li>Attacker injects a malicious <code>url</code> parameter (e.g., pointing to an internal admin API or metadata service).</li>
<li>Attacker includes a <code>headers</code> dictionary in the JSON payload containing sensitive authentication tokens or forged cookies.</li>
<li>Chainlit backend receives the request and directly invokes the internal <code>sse_client</code> or <code>streamablehttp_client</code> using the unsanitized parameters.</li>
<li>The server initiates an outbound HTTP request from its local context to the specified internal target.</li>
<li>Internal service processes the forged request, effectively bypassing intended authentication/authorization constraints.</li>
<li>Attacker achieves unauthorized state change or sensitive data exfiltration against internal infrastructure.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows an unauthenticated attacker to bypass perimeter security to reach internal networks, probe cloud metadata endpoints, and perform state-changing operations against internal APIs. The lack of validation on both the target URL and the forwarded headers means an attacker can authenticate requests as the Chainlit server itself to downstream services. The impact is critical for deployments running in trusted internal network zones or cloud environments where the server instance holds identity-based permissions (e.g., IAM roles).</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade all Chainlit deployments to version 2.12.0 immediately to implement the new strict allowlist-based MCP configuration.</li>
<li>If immediate patching is not possible, set <code>features.mcp.enabled = false</code> in <code>.chainlit/config.toml</code> to disable the vulnerable component.</li>
<li>Restrict outbound network egress for the host running the Chainlit process, specifically blocking access to private IP ranges and the cloud metadata service (169.254.169.254).</li>
<li>Monitor server-side web logs for <code>POST</code> requests to the <code>/mcp</code> endpoint originating from unexpected or untrusted sources.</li>
<li>Enable authentication callbacks for the application to ensure that <code>/mcp</code> endpoints are not accessible to unauthenticated sessions.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>ssrf</category><category>mcp</category><category>cve-2026-45019</category></item></channel></rss>