LiteLLM: Authenticated SSRF and provider-credential exfiltration via unvalidated request-body routing parameters
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 1.88.6, 1.96.2, 1.89.7, 1.90.7, 1.91.5, and 4 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: partial
Summary
LiteLLM is a proxy server (AI Gateway) to call LLM APIs in OpenAI (or native) format. Prior to versions 1.88.6 and 1.96.2, any authenticated LiteLLM proxy user could redirect an outbound provider call to a destination the user controls and cause the proxy to send its configured provider credentials to that destination. Request validation in litellm/proxy/auth/auth_utils.py, litellm/proxy/common_request_processing.py, litellm/proxy/health_endpoints/_health_endpoints.py, litellm/proxy/image_endpoints/endpoints.py, and litellm/proxy/litellm_pre_call_utils.py used incomplete checks that did not cover every sensitive parameter or inspect equivalent values across nested request fields, path values, and bracket-notation form data. Routing and credential parameters including api_base, base_url, model_list, fallbacks, and litellm_credential_name could therefore be applied without clearing the operator's stored key, exposing upstream provider credentials and other configured secrets and permitting server-side requests to internal services reachable by the proxy. This issue is fixed in versions 1.88.6 and 1.96.2.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- BerriAI litellm
fixed in 1.88.6; From 1.89.0 · fixed in 1.96.2
- litellmPyPI
fixed in 1.88.6; From 1.89.0 · fixed in 1.89.7; From 1.90.0 · fixed in 1.90.7; From 1.91.0 · fixed in 1.91.5; From 1.92.0 · fixed in 1.92.2; From 1.93.0 · fixed in 1.93.2; From 1.94.0 · fixed in 1.94.3; From 1.95.0 · fixed in 1.95.1; From 1.96.0 · fixed in 1.96.2
- litellmPyPI
fixed in 1.88.6
- litellmPyPI
From 1.89.0 · fixed in 1.89.7
- litellmPyPI
From 1.90.0 · fixed in 1.90.7
- litellmPyPI
From 1.91.0 · fixed in 1.91.5
- litellmPyPI
From 1.92.0 · fixed in 1.92.2
- litellmPyPI
From 1.93.0 · fixed in 1.93.2
- litellmPyPI
From 1.94.0 · fixed in 1.94.3
- litellmPyPI
From 1.95.0 · fixed in 1.95.1
- litellmPyPI
From 1.96.0 · fixed in 1.96.2