LiteLLM JWT/OIDC userinfo cache key collision authentication bypass
CVE-2026-35030 affects LiteLLM, an AI gateway/proxy for LLM APIs, in versions prior to 1.83.0. In deployments where JWT authentication is explicitly enabled via enable_jwt_auth: true, the OIDC userinfo cache derives its cache key from token[:20]. Because JWTs signed with the same algorithm can share identical first 20 characters, this cache keying scheme is insufficiently unique and can cause collisions between different tokens. An unauthenticated attacker can craft a token whose first 20 characters match those of a legitimate user’s cached token; if the target user’s entry is already present in the cache, LiteLLM may return the cached userinfo for the legitimate user and treat the attacker as that user. This results in an authentication bypass and identity/permission confusion condition. The issue is not enabled by default and primarily affects deployments using JWT/OIDC authentication. The vulnerability is fixed in LiteLLM 1.83.0.
Are you exposed to this one?
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
Impact, mitigation & remediation
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
Impact
What an attacker gets, and what they’ve been doing with it.
Mitigation
If you can’t patch tonight, do this now.
Remediation
Patch, then assume compromise.
Exploits
1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos.
This repository is a working Python PoC for CVE-2026-35030, an authentication bypass in BerriAI LiteLLM affecting versions prior to 1.83.0 when JWT/OIDC auth is enabled. The core issue is that LiteLLM caches OIDC userinfo using only the first 20 characters of the bearer token, which for RS256 JWTs are identical across different users because the JWT header is the same. The exploit demonstrates that if an admin's userinfo is cached first, a second JWT for an attacker can collide on the same cache key and inherit the admin identity. Repository structure is straightforward: `exploit/exploit.py` is the main entry point and performs either a collision demo or a full exploit attempt; `exploit/token_forge.py` obtains JWTs from the mock OIDC provider and analyzes their shared prefix; `oidc-provider/server.py` implements a FastAPI-based mock OIDC server with discovery, JWKS, userinfo, token issuance, and health endpoints; `docker-compose.yml` orchestrates PostgreSQL, the mock OIDC provider, a vulnerable LiteLLM instance on port 4000, and an optional fixed instance on port 4001; `litellm_config.yaml` enables JWT auth and points LiteLLM at the mock OIDC userinfo endpoint; the Dockerfiles pin vulnerable/fixed LiteLLM versions and patch enterprise checks for local reproduction. Main exploit capability: network-based auth bypass and privilege escalation via cache-key collision, not code execution. The exploit sends HTTP GET requests to LiteLLM `/user/info` with crafted bearer tokens after obtaining them from the mock OIDC `/token` endpoint. Success is determined by whether the attacker request receives `user_id=admin` or equivalent admin claims. The repository also includes a fixed-version comparison path showing that sha256-based cache keys prevent the collision.
Affected products & vendors
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
Recent activity
3 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
The version that knows your environment.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.