Summary
CVE-2026-86099 is a path traversal vulnerability (CWE-22) in Chainlit, the open-source Python framework for building conversational AI/LLM chat interfaces. Chainlit through version 2.12.0 fails to validate the client-supplied socket.io sessionId parameter, allowing an unauthenticated remote attacker to inject absolute or relative path sequences that escape the intended upload directory. The flaw carries a HIGH severity rating and can result in destruction of arbitrary directories accessible to the Chainlit service process.
Technical details
- Root cause: The
sessionIdvalue supplied by a socket.io client is used, without sanitization, to construct a per-sessionfiles_dirpath. That path is later passed to a recursive directory-removal (rmtree) call. - Trigger condition: An attacker connects over the exposed socket.io interface and supplies a crafted
sessionIdcontaining../or absolute path sequences. - Attack vector: Network, no authentication or user interaction required (AV:N, PR:N, UI:N).
- Impact: The manipulated path can escape the upload directory, letting the attacker trigger recursive deletion of arbitrary directories reachable by the service process — resulting in a high-impact denial of service via data/file loss, with a limited integrity impact.
Affected software
- Chainlit (PyPI package
chainlit), versions 0 through 2.12.0 inclusive.
Severity
- CVSS v4.0 base score: 8.8 (HIGH) —
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N - CVSS v3.1 base score: 8.2 (HIGH) —
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H
Mitigation and recommended actions
- Immediate: As of publication, no Chainlit release beyond 2.12.0 has been published that fixes this issue; monitor the Chainlit GitHub repository and PyPI package for a patched release and upgrade as soon as one is available.
- Interim workarounds: Restrict or firewall direct network access to the Chainlit socket.io endpoint to trusted clients only; run the Chainlit process with a dedicated, least-privileged account so any forced deletion is confined to non-critical directories; monitor logs for unexpected socket.io connections or
sessionIdvalues containing path traversal sequences (../, absolute paths).
How IONIX identifies potentially affected assets
IONIX matches the following signal against data already collected when it crawled the asset; identifying the technology sends no request beyond that crawl.
- Raw HTTP response body:
<meta property="og:url" content="https://github.com/Chainlit/chainlit">

