Record summary

CVE-2026-42208 has a selected CVSS score of 9.3 (critical); EIP currently links 1 catalogued exploit, 6 repository PoCs, 1 curated repository PoC, 1 Nuclei template, and 3 lab environments. CISA lists CVE-2026-42208 in KEV.

Description

LiteLLM is a proxy server (AI Gateway) to call LLM APIs in OpenAI (or native) format. From version 1.81.16 to before version 1.83.7, a database query used during proxy API key checks mixed the caller-supplied key value into the query text instead of passing it as a separate parameter. An unauthenticated attacker could send a specially crafted Authorization header to any LLM API route (for example POST /chat/completions) and reach this query through the proxy's error-handling path. An attacker could read data from the proxy's database and may be able to modify it, leading to unauthorised access to the proxy and the credentials it manages. This issue has been patched in version 1.83.7.

Description source: CVE List

Exploitation context

Known exploitation

CISA KEV
Listed · May 8, 2026 · CISA
VulnCheck KEV
Listed · Apr 27, 2026 · VulnCheck
Reported exploitation
Observed · VulnCheck

Available material

Catalogued exploits
1
Repository PoCs
6
Curated repository PoCs
1
Nuclei templates
1
Lab environments
3

CISA SSVC decision

ExploitationActive
AutomatableYes
Technical impactTotal

CISA Coordinator · SSVC 2.0.3 · Evaluated May 8, 2026 · Source: CVE List

Affected products and versions

6
ProductSourceVersion rangeStatus
CISA, CVE List>= 1.81.16, < 1.83.7affected

Lightspeed Core

Browse Red Hat / Lightspeed Corelightspeed-core/lightspeed-stack-rhel9

Default status: unaffected

CVE ListVersion data not supplied

Red Hat Ansible Automation Platform 2

Browse Red Hat / Red Hat Ansible Automation Platform 2ansible-automation-platform-26/lightspeed-chatbot-rhel9

Default status: unaffected

CVE ListVersion data not supplied

Red Hat OpenShift AI (RHOAI)

Browse Red Hat / Red Hat OpenShift AI (RHOAI)rhoai/odh-llama-stack-core-rhel9

Default status: unaffected

CVE ListVersion data not supplied

Red Hat OpenShift AI (RHOAI)

Browse Red Hat / Red Hat OpenShift AI (RHOAI)rhoai/odh-mlflow-rhel9

Default status: unaffected

CVE ListVersion data not supplied
GitHub Advisory1.81.16 to < 1.83.7 · Fixed in 1.83.7affected

Proofs of concept

8

Catalogued exploits

MetasploitBerriAI LiteLLM Proxy Pre-Auth SQL Injection ScannerMetasploit auxiliary PoCby Kenneth LaCroix +1 moreScanner1 file

Ruby

Metasploit

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

A Metasploit auxiliary module that detects BerriAI LiteLLM proxy servers vulnerable to CVE-2026-42208 using a benign time-based blind SQL injection check. It sends two requests with different injected predicates and flags the target only when the first is delayed and the second is not, without reading or exfiltrating data.

Backdoor review

No backdoor observed in reviewed code

The module is a scanner for CVE-2026-42208. It performs a benign time-based SQL injection check using the framework's PostgreSQLi::TimeBasedBlind library, issues two requests (one with a tautology, one without), and reports vulnerable only when the first is delayed and the second is not. No data exfiltration, persistence, credential theft, or unrelated payload delivery is present. The code is straightforward and matches the documented purpose.

ClassificationScanner
Model confidence100%
AuthenticationNot required
Languagesruby
Target softwareBerriAI LiteLLM
Attack typessql_injection
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The module's description and source code state it only detects the vulnerability using a time-based check without exploiting it to read or modify data. The check method returns a vulnerability status, and the module is classified as an auxiliary scanner in Metasploit.

modules/auxiliary/scanner/http/litellm_proxy_sqli.rb:16-17modules/auxiliary/scanner/http/litellm_proxy_sqli.rb:28-34modules/auxiliary/scanner/http/litellm_proxy_sqli.rb:127-134

Requirements

  • Target must have at least one virtual key provisioned in the token table; an empty table causes the time-based probe to fail.modules/auxiliary/scanner/http/litellm_proxy_sqli.rb:36-41

Observed behavior

  • Sends a POST request to the chat completions endpoint with an Authorization header containing a time-based blind SQL injection payload that sleeps only when a tautology is true.modules/auxiliary/scanner/http/litellm_proxy_sqli.rb:107-125
  • Sends a second request with a predicate that never sleeps, and reports the target vulnerable only if the first request is delayed while the second returns promptly.modules/auxiliary/scanner/http/litellm_proxy_sqli.rb:28-33
  • Does not read, exfiltrate, or modify data; the check is benign and crash-safe.modules/auxiliary/scanner/http/litellm_proxy_sqli.rb:28-34modules/auxiliary/scanner/http/litellm_proxy_sqli.rb:55
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

SQL Injection Probe
Payload withheldThe module constructs a time-based blind SQLi payload using the framework's create_sqli method. The payload is injected into the Authorization header to trigger pg_sleep for vulnerability detection. The random suffix defeats caching. This is the expected behavior for a CVE-2026-42208 scanner.modules/auxiliary/scanner/http/litellm_proxy_sqli.rb:107-125
Network Request
Payload withheldThe module sends a POST request to the configured chat completions endpoint with a minimal JSON body and the SQLi payload in the Authorization header. This is the delivery mechanism for the vulnerability check.modules/auxiliary/scanner/http/litellm_proxy_sqli.rb:114-123
Vulnerability Reporting
Payload withheldWhen the time-based check confirms vulnerability, the module reports the finding via the Metasploit report_vuln API. This is standard auxiliary module behavior.modules/auxiliary/scanner/http/litellm_proxy_sqli.rb:144-150
Review boundaries

What the analysis did not establish

  • Only the module source and metadata are provided; framework mixins (e.g., Msf::Exploit::SQLi, PostgreSQLi::TimeBasedBlind) are not expanded, so the exact SQLi test logic is partially opaque.
  • The evidence does not include any execution output or network traffic, so the module's behavior is inferred solely from its source code and description.
  • Review is limited to the module source file; framework mixins (Msf::Exploit::SQLi, HttpClient, etc.) are not expanded, but their documented behavior is well-known and consistent with the observed usage.
  • No binary or non-text files were present in the evidence.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

Curated repository PoCs

GitHubCVE-2026-42208Curated repository PoCby SecureWithUmerStars: 34Scanner2 files

C++ · 4.7 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

A Python script that probes a target URL for accessible LiteLLM endpoints and attempts basic SQL injection payloads on public endpoints to detect potential CVE-2026-42208 exposure. It does not exploit the vulnerability to read or modify data.

Backdoor review

No backdoor observed in reviewed code

The supplied PoC is a Python script that scans a target URL for LiteLLM endpoints and tests for SQL injection using hardcoded payloads. It performs only the advertised vulnerability scanning behavior: sending HTTP GET requests to known LiteLLM paths and appending SQLi payloads to query parameters. No backdoor, deceptive payload, persistence, credential theft, or unrelated remote access behavior is present in the reviewed evidence.

ClassificationScanner
Model confidence98%
AuthenticationNot required
Languagespython
Target softwareBerriAI LiteLLM
Attack typessql injection
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The script is explicitly described as a 'Vulnerability Scanner' in its banner and docstring. It probes endpoints and sends SQLi payloads to detect potential vulnerability, but does not extract, exfiltrate, or modify data. It only reports findings, which is characteristic of a scanner.

ridhinva-litellm-scanner-1c26469/litellm_scanner.py:3-5ridhinva-litellm-scanner-1c26469/litellm_scanner.py:11-14

Requirements

  • Target URL or file containing target URLs must be supplied as a command-line argument.ridhinva-litellm-scanner-1c26469/litellm_scanner.py:72-82

Observed behavior

  • Iterates over a list of known LiteLLM endpoints and sends HTTP GET requests to each.ridhinva-litellm-scanner-1c26469/litellm_scanner.py:45-49
  • Checks response body for 'litellm' or 'model' strings to confirm a LiteLLM instance.ridhinva-litellm-scanner-1c26469/litellm_scanner.py:52-53
  • On public endpoints, sends GET requests with SQL injection payloads appended as query parameters and compares response length to flag possible injection.ridhinva-litellm-scanner-1c26469/litellm_scanner.py:56-62
  • Prints findings to stdout, including discovered endpoints, LiteLLM confirmation, and possible SQL injection indicators.ridhinva-litellm-scanner-1c26469/litellm_scanner.py:87-90
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Url
Payload withheldSource repository hosting the PoC; no malicious content observed in the script.ridhinva-litellm-scanner-1c26469/litellm_scanner.py:1-96
Review boundaries

What the analysis did not establish

  • Only one text file (litellm_scanner.py) is included; the artifact directory contains an additional unclassified file (1076 bytes) that is not analyzed.
  • The scanner uses a limited set of SQLi payloads and a simple response-length heuristic, which may produce false positives or false negatives.
  • The evidence does not include any output or execution results, so the scanner's effectiveness cannot be verified.
  • Only the supplied text file (litellm_scanner.py) was reviewed; no other files from the repository unit were provided or analyzed.
  • The script's behavior depends on the target server's response; the review does not assess the safety or correctness of the scanning activity itself.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

Repository PoCs

GitHubimjdl/CVE-2026-42208_labRepository PoCby imjdlStars: 0Scanner6 files

685.1 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

The artifact is a time-based blind SQL injection scanner for CVE-2026-42208 in LiteLLM Proxy. It sends a crafted Authorization header to trigger a vulnerable error-handling path and measures response time to detect if a pg_sleep payload executed, indicating the target is vulnerable.

Backdoor review

No backdoor observed in reviewed code

The PoC demonstrates a time-based blind SQL injection against a vulnerable LiteLLM proxy. The Python script sends crafted HTTP requests with a SQL payload in the Authorization header and measures response time to confirm the vulnerability. No backdoor, deceptive payload, or concealed operator-directed harm is present.

ClassificationScanner
Model confidence95%
AuthenticationNot required
LanguagesPython
Target softwareLiteLLM Proxy
Attack typesSQL Injection
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The Python script sends a crafted request to trigger a SQL injection and uses timing analysis to detect if the injection succeeded. It does not extract data, modify the database, or establish a foothold; it only reports whether the target is vulnerable. This is consistent with a scanner.

poc_litellm_sqli.py:2-6poc_litellm_sqli.py:103-108

Requirements

  • Target running vulnerable LiteLLM Proxy (>=1.81.16, <1.83.7) with PostgreSQL backendREADME.md:12README.md:40
  • Network access to the target's /chat/completions endpointpoc_litellm_sqli.py:42-43

Observed behavior

  • Sends a baseline request with a valid-looking 'sk-' token to measure normal response timepoc_litellm_sqli.py:78
  • Sends a control request with a non-'sk-' token without SQL injection to measure error-handling response timepoc_litellm_sqli.py:87
  • Sends a time-based blind SQL injection payload using pg_sleep wrapped in a subquery and measures response timepoc_litellm_sqli.py:34-36poc_litellm_sqli.py:97-101
  • Compares the response time against a threshold to determine if the target is vulnerable and reports the resultpoc_litellm_sqli.py:103-113
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Sql Injection Payload
Payload withheldThe payload is injected into the Authorization header to trigger a time delay via PostgreSQL's pg_sleep, confirming the SQL injection vulnerability.poc_litellm_sqli.py:34-36
Http Request
Payload withheldThe script sends a POST request to the vulnerable endpoint with the SQL payload in the Authorization header.poc_litellm_sqli.py:39-51
Vulnerability Check
Payload withheldThe script measures baseline response time, sends the payload, and compares the elapsed time against a threshold to determine if the target is vulnerable.poc_litellm_sqli.py:76-113
Review boundaries

What the analysis did not establish

  • Two non-text media files (images) are present but not analyzed; they are referenced in README.md as screenshots of expected output and do not affect classification.
  • Two additional text files (docker-compose.yml and Dockerfile) are reported in metadata but their content is not included; they are configuration files for the vulnerable environment and not the primary artifact.
  • Two non-text media files (images: 20260429-010503.jpg, 20260429-010517.jpg) totaling 691,937 bytes were not analyzed. They are referenced in the README as screenshots of expected output and are unlikely to contain executable backdoor behavior, but their content is unverified.
  • Two additional text files (docker-compose.yml and possibly a Dockerfile) were present in the repository but not included in the evidence packet. Their content could contain malicious instructions, but the provided PoC script itself shows no backdoor behavior.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

GitHub0xBlackash/CVE-2026-42208Repository PoCby 0xAshweskerStars: 0Scanner2 files

4.7 KiB · linked to 2 vulnerabilities

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

The artifact contains a Python script that sends a crafted HTTP request to a LiteLLM endpoint to test for a pre-authentication SQL injection vulnerability (CVE-2026-42208). It does not extract data or establish a foothold; it only checks for error-based indicators of the vulnerability.

Backdoor review

No backdoor observed in reviewed code

The PoC script (CVE-2026-42208.py) sends a user-supplied SQL payload in an Authorization header to a target LiteLLM instance and prints the response. It contains no backdoor, persistence, credential exfiltration, or unrelated payload. The README.md is a static description of the vulnerability. No deceptive or concealed harmful behavior is present.

ClassificationScanner
Model confidence95%
AuthenticationNot required
LanguagesPython
Target softwareLiteLLM
Attack typesSQL Injection
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The Python script is designed to test for the presence of a SQL injection vulnerability by sending a crafted request and observing the response for error indicators. It does not contain logic to extract, modify, or delete data, nor does it establish a shell or persistent access. The script's own description calls it a 'Safe demonstration script (read-only by default)' and a 'demonstration only'.

CVE-2026-42208.py:3-4CVE-2026-42208.py:65

Requirements

  • A running, vulnerable LiteLLM instance (versions 1.81.16 to 1.83.6) must be accessible at the target URL.CVE-2026-42208.py:7-8README.md:22

Observed behavior

  • Sends an HTTP POST request to the target's /chat/completions endpoint with a malicious SQL payload embedded in the Authorization header.CVE-2026-42208.py:29-46
  • Checks the HTTP response status code and body for error messages or SQL-related strings to determine if the injection was successful.CVE-2026-42208.py:51-56
  • Prints a reminder to upgrade LiteLLM and does not perform any data exfiltration or system modification.CVE-2026-42208.py:65
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Network Request
Payload withheldDemonstrates the SQL injection vulnerability by sending a crafted request to the target server.CVE-2026-42208.py:29-46
Ssl Verification Disabled
Payload withheldDisables SSL certificate verification for testing against self-signed certificates; not a backdoor but reduces transport security during testing.CVE-2026-42208.py:46CVE-2026-42208.py:69-70
Review boundaries

What the analysis did not establish

  • The evidence includes only two text files; no binary or compiled artifacts are present.
  • The analysis is based solely on static review of the provided source code; the code was not executed, and its behavior against a live target is not verified.
  • The README.md file contains images that are not included in the text evidence, so their content cannot be analyzed.
  • Review is limited to the two text files provided; no binary or other files were present in the artifact.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

GitHubZeltoc/threat-intel-brief-cve-2026-42208-litellmRepository PoCby ZeltocStars: 0Writeup1 file

9.5 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

A threat intelligence brief describing CVE-2026-42208, a critical SQL injection vulnerability in BerriAI LiteLLM. The document provides an executive summary, vulnerability details (root cause, attack path), exploitation timeline, impact assessment, detection opportunities, and recommended actions. It contains no exploit or scanner code.

Backdoor review

No backdoor observed in reviewed code

The artifact is a single payload withheld file containing a threat intelligence brief about CVE-2026-42208. It is a static document with no executable code, no instructions for the reader to perform any action beyond standard security remediation, and no concealed or deceptive payloads. The content is purely informational.

ClassificationWriteup
Model confidence100%
AuthenticationNot required
Languagesmarkdown
Target softwareBerriAI LiteLLM
Attack typesSQL injection
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact is a threat intelligence brief (payload withheld) that provides a technical analysis of CVE-2026-42208, including vulnerability details, impact, and detection guidance. It does not contain any executable code, exploit scripts, or scanner logic. The content is purely descriptive and analytical, fitting the definition of a writeup.

README.md:1-160

Requirements

  • The attacker must be able to send HTTP requests to the LiteLLM proxy port.README.md:77

Observed behavior

  • The document describes the vulnerability as a pre-authentication SQL injection in the proxy API key verification process, where a crafted Authorization header can lead to arbitrary SQL execution against the PostgreSQL backend.README.md:31-38
  • The document outlines an attack path where an attacker sends a crafted HTTP request to an LLM API endpoint with a SQL injection payload in the Authorization header, which reaches the vulnerable query through the error-handling path.README.md:40-46
  • The document provides detection indicators such as SQL metacharacters in the Authorization header and unexpected database queries.README.md:94-111
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

File Type
Payload withheldThe sole file in the artifact is a Markdown document, not an executable script or program.README.md:1-160
Content Type
Payload withheldThe document describes a known vulnerability (CVE-2026-42208), its impact, and recommended remediation steps. It does not contain exploit code or instructions for malicious activity.README.md:1-160
Review boundaries

What the analysis did not establish

  • The evidence consists of a single payload withheld file containing a threat intelligence brief. No exploit or scanner code is present in the supplied text.
  • The artifact contains only a payload withheld file; no other files, source code, or binaries were present in the evidence packet.
  • The analysis is limited to the supplied text; no dynamic or behavioral analysis was performed.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

GitHubrootdirective-sec/CVE-2026-42208-LabRepository PoCby rootdirective-secStars: 0Scanner8 files

14.9 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

A timing-based scanner that detects CVE-2026-42208, a SQL injection vulnerability in LiteLLM Proxy, by sending a crafted Authorization header containing a pg_sleep() payload and comparing response times against a baseline. It does not extract or modify data.

Backdoor review

No backdoor observed in reviewed code

The reviewed evidence consists of a README and a Python PoC script for CVE-2026-42208. The PoC sends crafted HTTP requests to a target LiteLLM instance to demonstrate a timing-based SQL injection vulnerability. The code performs only HTTP POST requests with a pg_sleep() payload and a baseline request, measures response times, and prints a verdict. No backdoor, concealed executable behavior, persistence, credential theft, or unrelated payload is present. The artifact's behavior is limited to the described vulnerability demonstration.

ClassificationScanner
Model confidence95%
AuthenticationNot required
LanguagesPython
Target softwareLiteLLM Proxy
Attack typesSQL Injection
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact's primary operation is to detect the presence of a vulnerability by observing timing differences without exploiting it to gain unauthorized access or extract data. The README explicitly states the PoC 'does not dump database data and does not modify database data' and uses a 'least-harm' timing proof. The code sends a payload and interprets the response time to report a vulnerability status, which is characteristic of a scanner.

README.md:7README.md:209-211poc/poc.py:156-164

Requirements

  • Target must be a LiteLLM Proxy instance with a PostgreSQL database backend.README.md:3README.md:5
  • The target API endpoint must be reachable over the network.poc/poc.py:172-176

Observed behavior

  • Sends a baseline HTTP POST request with a benign Authorization header to measure normal response time.poc/poc.py:72-99
  • Sends multiple HTTP POST requests with a crafted Authorization header containing a SQL injection payload that includes pg_sleep().poc/poc.py:102-138
  • Compares the median response time of the crafted requests against the baseline. If the delay exceeds a threshold, it reports 'LIKELY VULNERABLE'; otherwise, it reports 'LIKELY PATCHED_OR_NOT_TRIGGERED'.poc/poc.py:141-164
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Url
Payload withheldTarget URL for the vulnerable LiteLLM instance in the PoC.README.md:21
Url
Payload withheldTarget URL for the patched LiteLLM instance in the PoC.README.md:22
Sql Payload
Payload withheldSQL injection payload used in the PoC to trigger a timing delay.README.md:27poc/poc.py:110
Review boundaries

What the analysis did not establish

  • Only two of eight repository files were provided as text evidence; the remaining six files (Dockerfiles, configs, etc.) were omitted, limiting full context.
  • The analysis is based solely on static review of the provided source code; the code was not executed, and its actual behavior against a live target is not verified.
  • Only the README.md and poc/poc.py files were provided as text; 6 other files (Dockerfiles, configs, .gitignore) were omitted from the text evidence and not analyzed.
  • Binary content was not analyzed; the artifact contained no binary files according to the envelope metadata.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

GitHubridhinva/litellm-sqli-scannerRepository PoCby ridhinvaStars: 0Scanner4 files

16.7 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

A Python-based scanner that detects CVE-2026-42208, a SQL injection vulnerability in LiteLLM Proxy, by fingerprinting the target, discovering endpoints, and sending SQL injection payloads to check for error-based and time-based responses.

Backdoor review

No backdoor observed in reviewed code

The repository contains a Python-based scanner for CVE-2026-42208, a SQL injection vulnerability in LiteLLM Proxy. The code performs network requests to a user-supplied target to fingerprint the service, discover endpoints, and test for SQL injection using a set of predefined payloads. No backdoor, concealed operator-directed harm, persistence mechanism, or unrelated payload was observed. The tool's behavior is consistent with its stated purpose as a security scanner.

ClassificationScanner
Model confidence95%
AuthenticationNot required
LanguagesPython
Target softwareLiteLLM Proxy
Attack typesSQL Injection
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact's primary operation is to detect and validate the presence of CVE-2026-42208 by sending probe requests and analyzing responses for error patterns or time delays, without extracting data, modifying the database, or establishing a foothold. The README explicitly states it 'Detects and validates CVE-2026-42208' and the code only reports findings, consistent with a scanner.

README.md:5litellm_scanner.py:3-4litellm_scanner.py:183-267

Requirements

  • Python 3.8+ with requests and colorama librariesREADME.md:17requirements.txt:1-2
  • Target URL of a LiteLLM Proxy instanceREADME.md:22

Observed behavior

  • Fingerprints the target to confirm it is a LiteLLM instance by checking health endpoints, server headers, and model listing responseslitellm_scanner.py:109-159
  • Discovers available API endpoints by sending GET/POST requests to a predefined list and recording non-404 responseslitellm_scanner.py:161-181
  • Sends SQL injection payloads (e.g., single quote, UNION SELECT, time-based delays) as query parameters and POST body fields to discovered endpointslitellm_scanner.py:183-267
  • Checks responses for SQL error patterns (e.g., 'sql syntax', 'SQLSTATE') and measures response time for time-based blind detectionlitellm_scanner.py:212-265
  • Reports findings with severity, category, and evidence, and can export results to JSONlitellm_scanner.py:98-107litellm_scanner.py:300-312
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Network Behavior
Payload withheldThe scanner sends GET and POST requests to the target specified via command-line argument, which is expected for a network vulnerability scanner.litellm_scanner.py:116litellm_scanner.py:204-210
Payload Set
Payload withheldThe scanner includes a list of SQL injection payloads used to test the target for vulnerabilities. These are standard security testing payloads and do not indicate backdoor behavior.litellm_scanner.py:69-83
Output Behavior
Payload withheldThe tool can export findings to a user-specified JSON file, which is a normal reporting feature for a scanner.litellm_scanner.py:300-312
Review boundaries

What the analysis did not establish

  • One file (total 4) is omitted from the packet; its content is not provided, but the three included text files are complete and sufficient for classification.
  • The evidence does not include execution output or confirmation that the scanner successfully identifies vulnerable instances.
  • One file in the repository (metadata-only, not included in the text evidence) was not reviewed. Its name and content are unknown, but it is flagged as non-text and not analyzed.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

GitHubHAERIN-L/poc_cve-2026-42208Repository PoCby HAERIN-LStars: 0Scanner15 files

567.6 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

The artifact provides a Nuclei template and a lab environment to detect CVE-2026-42208, a SQL injection vulnerability in LiteLLM. The primary code is a scanner that checks for the vulnerability via time-based detection without exploiting it for data access or modification.

Backdoor review

No backdoor observed in reviewed code

The reviewed evidence consists of a README and a Nuclei template for CVE-2026-42208. The README documents a legitimate proof-of-concept lab for a known SQL injection vulnerability, and the Nuclei template provides a detection rule. No backdoor, deceptive payload, or concealed harmful behavior is present in the supplied text.

ClassificationScanner
Model confidence95%
AuthenticationNot required
LanguagesYAMLShellMarkdown
Target softwareLiteLLM
Attack typesSQL Injection
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The Nuclei template (nuclei/CVE-2026-42208.yaml) sends crafted requests and uses response status and timing to detect the presence of the vulnerability. It does not extract, modify, or delete data; it only confirms the injection is possible. The accompanying scripts set up a lab and trigger the same time-based check, which is a detection mechanism, not an exploitation payload.

nuclei/CVE-2026-42208.yaml:1-61README.md:89-111

Requirements

  • Target must be a LiteLLM instance with PostgreSQL backend running an affected version (>= 1.81.16, < 1.83.7).README.md:14-15README.md:42
  • The target's VerificationToken table must contain at least one row for the time-based check to trigger a delay.README.md:44

Observed behavior

  • Sends a baseline HTTP POST request to /v1/chat/completions with a non-'sk-' Bearer token to measure response time.nuclei/CVE-2026-42208.yaml:37-42
  • Sends a second HTTP POST request with a SQL injection payload (' OR (SELECT pg_sleep(6)) IS NOT NULL --) in the Bearer token.nuclei/CVE-2026-42208.yaml:44-50
  • Checks that both requests return HTTP 401 status and that the second request's duration is at least 5.5 seconds longer than the first, indicating the SQL injection succeeded.nuclei/CVE-2026-42208.yaml:55-61
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Vulnerability Exploit
Payload withheldThe PoC demonstrates a time-based SQL injection using pg_sleep(6) against a vulnerable LiteLLM instance, which is the documented CVE behavior.README.md:20-35nuclei/CVE-2026-42208.yaml:44-50
Network Request
Payload withheldThe Nuclei template sends a crafted request to trigger the SQL injection, which is the expected behavior for a detection template.nuclei/CVE-2026-42208.yaml:44-50
Review boundaries

What the analysis did not establish

  • Only two text files (README.md and nuclei/CVE-2026-42208.yaml) were provided; 11 other text files and 2 non-text files were omitted. The exploit script (scripts/02-exploit.sh) is not included, so its exact behavior cannot be confirmed.
  • The analysis is based solely on static review of the provided text; no code was executed.
  • Only two text files (README.md and nuclei/CVE-2026-42208.yaml) were reviewed out of 15 total files. 11 text files and 2 non-text files were omitted from the evidence packet.
  • The analysis did not inspect binary or non-text media files, which could contain concealed content.
  • The review is limited to static analysis of the provided text; no dynamic execution or behavioral analysis was performed.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

Docker lab environments

3
GitHub

docker-compose.yaml

HAERIN-L/poc_cve-2026-42208Created
Vuln labCVE-2026-42208Compose · images

1 Compose manifest · 4 services

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A Docker Compose environment that runs two isolated LiteLLM stacks (vulnerable v1.83.6-nightly and patched v1.83.7-stable) with dedicated PostgreSQL 15 databases, designed to demonstrate CVE-2026-42208, a pre-authentication SQL injection vulnerability.

docker-compose.yaml:1-56README.md:1-10

Lab assessment

Vulnerability lab

The README explicitly states the environment is a lab for reproducing and detecting CVE-2026-42208. The Compose file defines vulnerable and patched LiteLLM services with corresponding databases, and the scripts provide setup, exploit, and teardown steps for a timing-based SQL injection proof-of-concept.

README.md:1-3docker-compose.yaml:1-56scripts/02-exploit.sh:1-73
Lab shapeCompose · images
Services4
Compose manifests1
Dockerfiles0
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

db-vuln

PostgreSQL database for vulnerable LiteLLM instance

A PostgreSQL 15 Alpine container with database litellm_vuln, user litellm, and password litellm_pass. It stores LiteLLM data including the VerificationToken table required for the SQL injection to fire.

docker-compose.yaml:2-14

db-patched

PostgreSQL database for patched LiteLLM instance

A PostgreSQL 15 Alpine container with database litellm_patched, user litellm, and password litellm_pass. It serves the patched LiteLLM instance and is isolated from the vulnerable database.

docker-compose.yaml:16-28

litellm-vuln

Vulnerable LiteLLM target

Runs LiteLLM v1.83.6-nightly on port 8010, connected to db-vuln. It contains the unsanitized SQL query path that allows pre-authentication SQL injection via the Authorization Bearer token.

docker-compose.yaml:30-42README.md:20-30

litellm-patched

Patched LiteLLM control instance

Runs LiteLLM v1.83.7-stable on port 8011, connected to db-patched. It uses parameterized queries, preventing the SQL injection.

docker-compose.yaml:44-56README.md:32-35

01-setup.sh

Lab initialization script

Starts all containers with docker compose up -d, waits for health checks, and creates a seed virtual key in each LiteLLM instance to ensure the VerificationToken table has at least one row, which is required for the pg_sleep injection to execute.

scripts/01-setup.sh:1-68

02-exploit.sh

Proof-of-concept exploit script

Sends a baseline request and a request with a pg_sleep(6) SQL injection payload in the Authorization header to both the vulnerable and patched instances. Measures response time to confirm the injection on the vulnerable instance and the absence of delay on the patched instance.

scripts/02-exploit.sh:1-73

99-teardown.sh

Lab cleanup script

Stops and removes all containers and deletes the persistent database volume directories.

scripts/99-teardown.sh:1-21
CVE assessment

How the supplied evidence relates each vulnerability

CVE-2026-42208

Supported by supplied evidence

The lab explicitly targets CVE-2026-42208. The README describes the vulnerability as a pre-authentication SQL injection in LiteLLM versions >=1.81.16, <1.83.7, and the Compose file uses the affected version v1.83.6-nightly for the vulnerable service and the patched version v1.83.7-stable for the control. The exploit script demonstrates a timing-based blind SQL injection using pg_sleep, consistent with the described vulnerability.

README.md:1-3README.md:7-15docker-compose.yaml:30-42scripts/02-exploit.sh:8-12
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker Desktop must be installed to run the containers.README.md:67-69
  • curl and python3 must be available on the host to execute the setup and exploit scripts.README.md:67-69
  • The LiteLLM_VerificationToken table must contain at least one row for the pg_sleep injection to fire; the setup script creates a seed key to satisfy this.scripts/01-setup.sh:30-44

Evidence-described exercise path

  1. Run bash scripts/01-setup.sh to start the Docker containers and create a seed virtual key in each LiteLLM instance.README.md:73-75scripts/01-setup.sh:1-68
  2. Run bash scripts/02-exploit.sh to send baseline and SQL injection requests to both instances and observe the timing difference, confirming the vulnerability on the vulnerable instance.README.md:89-91scripts/02-exploit.sh:1-73
  3. Optionally run nuclei with the provided template against localhost:8010 and localhost:8011 to detect the vulnerability.README.md:107-112
  4. Run bash scripts/99-teardown.sh to stop containers and remove persistent data.README.md:120-122scripts/99-teardown.sh:1-21
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

All visible behavior is directed at the lab's own target containers. The exploit script sends HTTP requests to localhost:8010 and localhost:8011, which are the vulnerable and patched LiteLLM instances defined in the Compose file. The setup script starts containers and creates a seed key, and the teardown script stops containers and removes local data directories. No evidence shows host escape, external connections, persistence beyond the lab, credential theft, or destructive behavior outside the lab boundary.

scripts/02-exploit.sh:4-5scripts/01-setup.sh:14-15scripts/99-teardown.sh:12-15
Review boundaries

What the analysis did not establish

  • The nuclei template file (nuclei/CVE-2026-42208.yaml) is not included in the evidence files, so its exact detection logic cannot be verified beyond the description in the README.
  • The lab uses port mappings (8010:4000, 8011:4000) and bind mounts (./data/db-vuln, ./data/db-patched), which are necessary for the exercise but could be misused in other contexts; no misuse is observed here.
Model interpretation

This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.

GitHub

docker-compose.yml

rootdirective-sec/CVE-2026-42208-LabCreated
Vuln labCVE-2026-42208Compose · mixed

1 Compose manifest · 2 Dockerfiles · 4 services

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A local Docker lab comparing a vulnerable LiteLLM instance (v1.83.6-nightly) and a patched instance (v1.83.7-stable) to demonstrate CVE-2026-42208, a pre-authentication SQL injection vulnerability. The lab uses a timing-based proof with pg_sleep() and does not dump or modify database data.

README.md:1-3docker-compose.yml:1-92

Lab assessment

Vulnerability lab

The README explicitly states the repository is a 'Local Docker lab and least-harm PoC for CVE-2026-42208' and describes a comparison between vulnerable and patched LiteLLM instances using a timing-based SQL injection proof. The docker-compose.yml defines two separate stacks (vuln and patched) with distinct images and configurations, consistent with a vulnerability research environment.

README.md:1-3docker-compose.yml:1-92
Lab shapeCompose · mixed
Services4
Compose manifests1
Dockerfiles2
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

db-vuln

vulnerable target database

PostgreSQL 16-alpine database service for the vulnerable LiteLLM instance. It is internal to the Docker network and not exposed to the host. It uses a named volume for data persistence.

docker-compose.yml:2-14

db-patched

patched target database

PostgreSQL 16-alpine database service for the patched LiteLLM instance. It is internal to the Docker network and not exposed to the host. It uses a named volume for data persistence.

docker-compose.yml:16-28

vuln

vulnerable LiteLLM proxy

LiteLLM proxy built from the vulnerable image ghcr.io/berriai/litellm-database:v1.83.6-nightly. It depends on db-vuln, exposes port 8081 on the host, and is configured with a master key and database URL. It serves as the target for the SQL injection proof.

docker-compose.yml:30-56vuln/Dockerfile:1-7

patched

patched LiteLLM proxy

LiteLLM proxy built from the patched image ghcr.io/berriai/litellm:v1.83.7-stable. It depends on db-patched, exposes port 8082 on the host, and is configured with a master key and database URL. It serves as a control to show the vulnerability is fixed.

docker-compose.yml:58-84patched/Dockerfile:1-7

poc.py

timing-based proof-of-concept script

A Python script that sends a crafted Authorization header containing a SQL injection payload with pg_sleep() to a target URL. It measures response times to determine if the target is vulnerable. It does not dump or modify database data.

poc/poc.py:1-236
CVE assessment

How the supplied evidence relates each vulnerability

CVE-2026-42208

Supported by supplied evidence

The README explicitly associates the lab with CVE-2026-42208, describing it as a pre-authentication SQL injection in LiteLLM Proxy. The docker-compose.yml sets up vulnerable (v1.83.6-nightly) and patched (v1.83.7-stable) instances, and the PoC script demonstrates a timing-based SQL injection using pg_sleep(). The evidence is consistent with the CVE description.

README.md:1-3README.md:9-11poc/poc.py:1-10
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker Desktop and Docker Compose v2 must be installed to run the lab.README.md:73-75
  • Python 3 is required to run the PoC script.README.md:75
  • The lab must be started with 'docker compose up -d --build' before running the PoC.README.md:79-81

Evidence-described exercise path

  1. Start the lab environment using 'docker compose up -d --build'.README.md:79-81
  2. Verify all services are healthy with 'docker compose ps'.README.md:83-91
  3. Run the PoC against the vulnerable instance: 'python3 poc/poc.py --url http://127.0.0.1:8081'.README.md:97-99
  4. Run the PoC against the patched instance: 'python3 poc/poc.py --url http://127.0.0.1:8082'.README.md:101-103
  5. Observe that the vulnerable instance shows a ~6-second delay (LIKELY VULNERABLE) while the patched instance responds quickly (LIKELY PATCHED_OR_NOT_TRIGGERED).README.md:131-175
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

The lab is explicitly scoped for local, authorized testing. The PoC uses a least-harm timing proof with pg_sleep() and does not dump, modify, or exfiltrate database data. No behavior targets the host, external systems, or persists beyond the lab. Port mappings and privileged mode are not used. The README includes safety notes warning against unauthorized use.

README.md:5-7README.md:185-189README.md:253-261poc/poc.py:5-10
Review boundaries

What the analysis did not establish

  • The packet does not include the actual LiteLLM source code or the specific SQL injection vulnerability details; only the lab setup and PoC are provided.
  • The PoC script is not executed, so the timing results are not verified from the packet contents alone.
  • The .gitignore file is present but its contents are not inspected, though it is unlikely to contain relevant evidence.
Model interpretation

This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.

GitHub

docker-compose.yaml

imjdl/CVE-2026-42208_labCreated
Vuln labCVE-2026-42208Compose · images

1 Compose manifest · 2 services

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A Docker Compose environment running LiteLLM Proxy v1.83.3-stable with a PostgreSQL 16 backend, configured for demonstrating a SQL injection vulnerability.

docker-compose.yaml:1-28README.md:1-113

Lab assessment

Vulnerability lab

The README explicitly describes a reproduction environment for a SQL injection vulnerability (GHSA-r75f-5x8p-qvmc) in LiteLLM Proxy, and the included PoC script targets the local service to demonstrate the vulnerability.

README.md:1-3README.md:5-10poc_litellm_sqli.py:1-6
Lab shapeCompose · images
Services2
Compose manifests1
Dockerfiles0
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

db

database backend

PostgreSQL 16 database service with healthcheck, exposed on port 5432, used by the LiteLLM service.

docker-compose.yaml:2-12

litellm

vulnerable target application

LiteLLM Proxy v1.83.3-stable, configured with a bind-mounted config file and environment variables for database connection and master key. Exposed on port 4000.

docker-compose.yaml:14-28

litellm_config.yaml

application configuration

Configuration file for LiteLLM, defining a model list and general settings referencing environment variables.

litellm_config.yaml:1-9

poc_litellm_sqli.py

proof-of-concept exploit script

Python script that sends crafted HTTP requests to the LiteLLM service to trigger a time-based blind SQL injection via the error-handling callback path.

poc_litellm_sqli.py:1-117
CVE assessment

How the supplied evidence relates each vulnerability

CVE-2026-42208

Insufficient evidence

The README states 'CVE: Pending' and the repository name suggests CVE-2026-42208, but no CVE record or official assignment is present in the supplied evidence. The advisory referenced is GHSA-r75f-5x8p-qvmc.

README.md:5-10poc_litellm_sqli.py:20
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker and Docker Compose installed to start the environment.README.md:33-35
  • Python 3 with requests library to run the PoC script.README.md:39-41

Evidence-described exercise path

  1. Start the vulnerable environment using 'docker compose up -d'.README.md:33-35
  2. Run the PoC script with the target URL and optional delay.README.md:39-41
  3. Observe the output indicating whether the target is vulnerable based on response timing.README.md:43-65
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

All visible behavior is directed at the local lab target (LiteLLM service on localhost:4000) to demonstrate the SQL injection vulnerability. No host escape, external connections, persistence, credential theft, or destructive actions are observed.

poc_litellm_sqli.py:1-117docker-compose.yaml:1-28
Review boundaries

What the analysis did not establish

  • The CVE association is based solely on the repository name; no official CVE record is included.
  • Two JPEG files (20260429-010503.jpg, 20260429-010517.jpg) are present but not inspected; they are referenced as screenshots in the README.
  • The PoC script uses a hardcoded target of localhost:4000 in the README example, but the script itself accepts an arbitrary --target argument, which could be used against external systems if misused.
Model interpretation

This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.

Nuclei templates

1
ProjectDiscoveryCRITICALLiteLLM - SQL InjectionCVSS 9.8

LiteLLM 1.81.16 to < 1.83.7 contains a SQL injection caused by improper handling of caller-supplied key in database query during proxy API key checks, letting unauthenticated attackers read and modify database data, exploit requires crafted Authorization header.

Impact

Unauthenticated attackers can read and modify proxy database, leading to unauthorized access and credential compromise.

Remediation

Upgrade to version 1.83.7 or later.

WeaknessesCWE-89
AuthorsHAERIN-L
Template tagscvecve2026litellmsqliunauthenticatedkevvkev
CVSS vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Shodan: http.title:"LiteLLM"

Source: ProjectDiscovery

Research & analysis

1
Technical researchBishop FoxSource: EIP research review

CVE-2026-42208: Pre-Authentication SQL Injection in LiteLLM Proxy

Bishop Fox researchers reproduced and confirmed CVE-2026-42208, a critical pre-authentication SQL injection in BerriAI's LiteLLM proxy (versions 1.81.16 through 1.83.6). The vulnerability resides in an internal helper that resolves bearer tokens to virtual-key records, where a single missing parameter binding in an f-string SQL query allows an unauthenticated attacker to inject arbitrary SQL into the proxy's PostgreSQL backend. The flaw is reachable from any LLM API route without credentials. Because the response body is always HTTP 401 with a fixed JSON error, exploitation uses a time-based blind channel via PostgreSQL's pg_sleep(). Two distinct code paths reach the same SQL sink: one through Python assert stripping (-O flag) and one through the auth failure callback path where an AssertionError is caught by a generic handler that re-introduces the unsanitized input into a database lookup six call frames away. The patch in v1.83.7 replaced the f-string interpolation with a positional placeholder ($1) and rewrote the deprecated-token lookup using Prisma's typed find_first() API. Sysdig observed targeted in-the-wild exploitation attempts within 36 hours of advisory publication, with operators performing deliberate schema enumeration of high-value tables (virtual API keys, stored provider credentials, environment-variable configuration) rather than generic SQLmap spraying; Sysdig did not observe successful authenticated follow-on exploitation.

Root causeTechnical detailExploitationMitigation
https://bishopfox.com/blog/cve-2026-42208-pre-authentication-sql-injection-in-litellm-proxy
Research notes
  • Root cause
    The vulnerability is an f-string SQL injection in proxy/utils.py where the caller-supplied bearer token is interpolated directly into a SQL query template (WHERE v.token = '{token}') without parameter binding. A hashing helper (_hash_token_if_needed) only hashes tokens starting with 'sk-', returning the raw string verbatim otherwise, allowing attacker-controlled SQL injection.
  • Technical detail
    Two distinct code paths reach the same SQL sink: Path A through Python assert stripping (-O flag) where the raw bearer flows directly into get_key_object(), and Path B through the auth failure callback where an AssertionError is caught by a generic handler that re-introduces the unsanitized input into a database lookup six call frames away.
  • Exploitation
    Sysdig observed targeted in-the-wild exploitation attempts within 36 hours of the GitHub Advisory Database publication, with operators performing deliberate schema enumeration of high-value tables (virtual API keys, stored provider credentials, environment-variable configuration) rather than generic SQLmap spraying. Sysdig did not observe successful authenticated follow-on exploitation.
  • Mitigation
    The fix in v1.83.7 replaced the f-string interpolation with a positional placeholder ($1) in the combined_view lookup and rewrote the deprecated-token lookup using Prisma's typed find_first() API, closing the injection at the sink regardless of which caller path reaches it.

References

8