Chainlit < 2.9.4 SQLAlchemy Data Layer SSRF via /project/element
Chainlit versions prior to 2.9.4 contain a server-side request forgery (SSRF) vulnerability in the /project/element update flow when configured with the SQLAlchemy data layer backend. An authenticated client can provide a user-controlled url value in an Element, which is fetched by the SQLAlchemy element creation logic using an outbound HTTP GET request. This allows an attacker to make arbitrary HTTP requests from the Chainlit server to internal network services or cloud metadata endpoints and store the retrieved responses via the configured storage provider.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-22219
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 5 Nov 2026, 05:55 UTC · Revision 1
Source evidence
Chainlit < 2.9.4 SQLAlchemy Data Layer SSRF via /project/element
core-osv · Original sourcePublished 19 Jan 2026, 23:15 UTC
Chainlit versions prior to 2.9.4 contain a server-side request forgery (SSRF) vulnerability in the /project/element update flow when configured with the SQLAlchemy data layer backend. An authenticated client can provide a user-controlled url value in an Element, which is fetched by the SQLAlchemy element creation logic using an outbound HTTP GET request. This allows an attacker to make arbitrary HTTP requests from the Chainlit server to internal network services or cloud metadata endpoints and store the retrieved responses via the configured storage provider.
osv:CVE-2026-22219
Complete source record
{
"id": "9b59614d1f38350d98f9a6fd86bbc1f5ef4d9e44144e5fcd52ab285661fb814b",
"url": "https://osv.dev/vulnerability/CVE-2026-22219",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Chainlit < 2.9.4 SQLAlchemy Data Layer SSRF via /project/element",
"summary": "Chainlit versions prior to 2.9.4 contain a server-side request forgery (SSRF) vulnerability in the /project/element update flow when configured with the SQLAlchemy data layer backend. An authenticated client can provide a user-controlled url value in an Element, which is fetched by the SQLAlchemy element creation logic using an outbound HTTP GET request. This allows an attacker to make arbitrary HTTP requests from the Chainlit server to internal network services or cloud metadata endpoints and store the retrieved responses via the configured storage provider.",
"evidence": "osv:CVE-2026-22219",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-22219",
"aliases": [
"CVE-2026-22219",
"GHSA-2g59-m95p-pgfq",
"PYSEC-2026-1237"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/chainlit/chainlit",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "ffc3cce648b343b933e10e85ee5805c7e02ab3bf"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "2.9.4"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"range": [
{
"fixed": "ffc3cce648b343b933e10e85ee5805c7e02ab3bf"
}
],
"source": "REFERENCES_TAG",
"original_tag": "2.9.4"
},
{
"cpe": "cpe:2.3:a:chainlit:chainlit:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "2.9.4"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"2.9.3",
"2.9.2",
"2.9.1",
"2.9.0",
"2.8.5",
"2.8.4",
"2.8.3",
"2.8.2",
"2.8.1",
"2.8.0",
"2.7.2",
"2.7.1.1",
"2.7.1",
"2.7.0",
"2.6.9",
"2.6.8",
"2.6.7",
"2.6.6",
"2.6.5",
"2.6.4",
"2.6.3",
"2.6.2",
"2.6.1",
"2.6.0",
"2.5.5",
"2.4.400",
"2.4.302",
"2.4.301",
"2.4.3",
"2.4.201",
"2.4.2",
"2.4.1",
"2.4.0",
"2.4.0rc0",
"2.3.0",
"2.2.1",
"2.2.0",
"2.1.2",
"2.1.1",
"2.1.0",
"2.0.603",
"2.0.602",
"2.0.601",
"2.0.6",
"2.0.5",
"2.0.4",
"2.0.3",
"2.0.2",
"2.0.1",
"2.0.0",
"2.0rc1",
"2.0.dev2",
"2.0dev1",
"1.3.0rc0",
"2.0.dev0",
"1.2.0",
"1.1.404",
"1.1.403rc0",
"1.1.402",
"1.1.401",
"1.1.400",
"1.1.400rc1",
"1.1.400rc0",
"1.1.306-fix",
"1.1.306",
"1.1.305",
"1.1.304",
"1.1.303",
"1.1.302",
"1.1.301",
"1.1.300",
"1.1.300rc5",
"1.1.300rc4",
"1.1.300rc3",
"1.1.300rc2",
"1.1.300rc1",
"1.1.300rc0",
"1.1.202",
"1.1.201",
"1.1.200",
"1.1.101",
"1.1.0",
"1.1.0rc1",
"1.1.0rc0",
"1.0.506",
"1.0.505",
"1.0.504",
"1.0.503",
"1.0.502",
"1.0.501",
"1.0.500",
"1.0.401",
"1.0.400",
"1.0.301",
"1.0.300",
"1.0.200",
"1.0.101",
"1.0.100",
"1.0.0",
"1.0.0rc3",
"1.0.0rc2",
"1.0.0rc1",
"1.0.0rc0",
"0.7.700",
"0.7.604",
"0.7.604rc2",
"0.7.604rc1",
"0.7.604rc0",
"0.7.603",
"0.7.602",
"0.7.602rc0",
"0.7.601rc0",
"0.7.600rc1",
"0.7.600rc0",
"0.7.501",
"0.7.500",
"0.7.400",
"0.7.301",
"0.7.3",
"0.7.2",
"0.7.1",
"0.7.0",
"0.6.402",
"0.6.401",
"0.6.4",
"0.6.3",
"0.6.2",
"0.6.1",
"0.6.0",
"0.5.2",
"0.5.1",
"0.5.0",
"0.4.3",
"0.4.2",
"0.4.101",
"0.4.1",
"0.4.0",
"0.3.0",
"0.2.111",
"0.2.110",
"0.2.109",
"0.2.108",
"0.2.107",
"0.2.106",
"0.2.105",
"0.2.104",
"0.2.103",
"0.2.102",
"0.2.101",
"0.2.1",
"0.2.0",
"0.1.103",
"0.1.102",
"0.1.101",
"0.1.1"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-22219.json"
}
}
],
"modified": "2026-10-28T02:30:43.010441309Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/22xxx/CVE-2026-22219.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-22219",
"https://www.vulncheck.com/advisories/chainlit-sqlalchemy-data-layer-ssrf-via-project-element",
"https://github.com/Chainlit/chainlit/releases/tag/2.9.4",
"https://github.com/Chainlit/chainlit",
"https://www.zafran.io/resources/chainleak-critical-ai-framework-vulnerabilities-expose-data-enable-cloud-takeover"
],
"provider_metadata": {
"cwe_ids": [
"CWE-918"
],
"cna_assigner": "VulnCheck",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/22xxx/CVE-2026-22219.json"
}
},
"related_cves": [
{
"value": "CVE-2026-22219",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 510861,
"published_at": "2026-01-19T23:15:08.897+00:00"
}