Impact
Chainlit, a Python framework for building conversational AI, has a command injection flaw in the MCP stdio transport. The vulnerability occurs when the features.mcp.enabled flag is true in .chainlit/config.toml and the POST /mcp endpoint is exposed without authentication. The backend checks only the executable name against a whitelist; if this list is unset or contains npx, an attacker can provide an arbitrary shell command that runs with the privileges of the Chainlit process.
Affected Systems
This issue affects Chainlit deployments on versions from 2.4.0rc0 up to but not including 2.12.0 when MCP is enabled. Configurations that leave features.mcp.stdio.allowed_executables unset or that allow the npx utility can be compromised. The vulnerability is fixed in version 2.12.0.
Risk and Exploitability
The CVSS score indicates critical severity, and the flaw does not require authentication or elevated privileges beyond those that the Chainlit process already has. The flaw can be exploited by sending a crafted POST request to /mcp with a fullCommand string; the attack path is therefore remote and unauthenticated. EPSS is not available, and the vulnerability is not in the CISA KEV catalog, but the combination of public access and ability to execute arbitrary commands makes it immediately exploitable.
OpenCVE Enrichment
Github GHSA