CVE-2026-22218: Chainlit arbitrary file read in project element update flow

CVE-2026-22218 · Severity: medium · CVSS 6.5 · Published 2026-01-20

Chainlit is an open-source framework used to build conversational AI applications and user interfaces. A security flaw in how the system handles message elements allows an authenticated user to trick the server into reading files from its local storage. This could lead to the exposure of sensitive information, such as configuration files, cloud API keys, or internal application data, potentially compromising the entire AI infrastructure.

Technologies: Chainlit, chainlit (PyPI). Vendors: Chainlit, PyPI.

Quick answers

Is CVE-2026-22218 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-22218 being exploited in the wild.
How severe is CVE-2026-22218?
Medium severity, with a CVSS score of 6.5, published 20 January 2026.
Which products and versions are affected?
Chainlit < 2.9.4; chainlit (PyPI) ECOSYSTEM:introduced=0,fixed=2.9.4.
Is there a fix for CVE-2026-22218?
Yes. chainlit (PyPI): upgrade to 2.9.4 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-22218 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-22218?
Check whether you run Chainlit or chainlit (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • chainlit (PyPI): upgrade to 2.9.4 or later
    pip install "chainlit>=2.9.4"

Technical details

An arbitrary file read vulnerability exists in Chainlit's '/project/element' endpoint due to improper path sanitization during the element update flow. When a custom element is persisted, the application deserializes the request payload into an Element class and calls its 'send' function. If an attacker provides a 'path' property in the payload, the 'persist_file' method in 'BaseSession' copies the file from that server-side path into the attacker's session directory. The attacker can then retrieve the file contents via the '/project/file/<chainlitKey>' endpoint. This vulnerability (CWE-22) requires authentication but allows for the disclosure of any file readable by the Chainlit service process. The issue is fixed in version 2.9.4.

Affected products

  • Chainlit Chainlit < 2.9.4

Identifiers

  • CVE-2026-22218
  • PYSEC-2026-598

Timeline

  • 2025-12-25: patched: Version 2.9.4 released with security fix
  • 2026-01-19: advisory: Initial disclosure by VulnCheck and Zafran Security
  • 2026-01-20: disclosed: NVD publication date

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.