LiteLLM's /sso/debug/callback endpoint embeds identity-provider-supplied fields in an inline script block without neutralizing HTML characters, so a value containing </script> breaks out and runs attacker JavaScript in the proxy's origin. The route needs no authentication, so an attacker with an account on the configured IdP (for example one that lets users edit a display name) can complete the SSO flow and send the resulting callback URL to a logged-in proxy admin. The script can then read the dashboard session cookie and act with the admin's privileges, up to full account takeover of the gateway that holds your LLM provider keys. Risk is moderate: CVSS is 6.8, the attack needs high complexity and user interaction, and there is no public exploit, no Nuclei template and no KEV listing (EPSS is not yet available). The package is still a high-value target, with 50 other CVEs and a package risk score of 79/100. Upgrade litellm to 1.85.0 or later, and until then disable or block /sso/debug/callback at the reverse proxy.
What is the risk?
Medium overall (CVSS 6.8). Exploitation is network-based with no privileges required on the proxy, but it needs a valid account at the configured IdP whose claims are passed through verbatim, plus a logged-in admin who opens a crafted link. No public exploit, scanner template or KEV listing exists. Impact on confidentiality and integrity is high because a stolen admin session gives control of the LLM gateway, including virtual keys, provider credentials, routing and spend settings. Exposure is highest for internet-reachable proxies using SSO with IdPs that let users set free-text profile fields.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| LiteLLM | pip | >= 1.65.5, < 1.85.0 | 1.85.0 |
Do you use LiteLLM? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step1) Upgrade litellm to 1.85.0 or later (fix in PR 27498, commit 13a1933). 2) Until patched, block or restrict /sso/debug/callback at the reverse proxy or WAF. 3) Treat SSO user profile fields (display names) as untrusted and restrict self-service editing at the IdP where possible. 4) Have admins avoid clicking SSO callback links from unsolicited sources and use separate browser profiles for admin sessions. 5) Enforce a strict Content-Security-Policy that blocks inline scripts on the proxy origin. 6) Detection: review access logs for requests to /sso/debug/callback containing encoded '</script>' or '%3C/script%3E' in parameters, and rotate admin sessions and provider keys if exploitation is suspected.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is GHSA-hhww-mrg2-969h?
LiteLLM's /sso/debug/callback endpoint embeds identity-provider-supplied fields in an inline script block without neutralizing HTML characters, so a value containing </script> breaks out and runs attacker JavaScript in the proxy's origin. The route needs no authentication, so an attacker with an account on the configured IdP (for example one that lets users edit a display name) can complete the SSO flow and send the resulting callback URL to a logged-in proxy admin. The script can then read the dashboard session cookie and act with the admin's privileges, up to full account takeover of the gateway that holds your LLM provider keys. Risk is moderate: CVSS is 6.8, the attack needs high complexity and user interaction, and there is no public exploit, no Nuclei template and no KEV listing (EPSS is not yet available). The package is still a high-value target, with 50 other CVEs and a package risk score of 79/100. Upgrade litellm to 1.85.0 or later, and until then disable or block /sso/debug/callback at the reverse proxy.
Is GHSA-hhww-mrg2-969h actively exploited?
No confirmed active exploitation of GHSA-hhww-mrg2-969h has been reported, but organizations should still patch proactively.
How to fix GHSA-hhww-mrg2-969h?
1) Upgrade litellm to 1.85.0 or later (fix in PR 27498, commit 13a1933). 2) Until patched, block or restrict /sso/debug/callback at the reverse proxy or WAF. 3) Treat SSO user profile fields (display names) as untrusted and restrict self-service editing at the IdP where possible. 4) Have admins avoid clicking SSO callback links from unsolicited sources and use separate browser profiles for admin sessions. 5) Enforce a strict Content-Security-Policy that blocks inline scripts on the proxy origin. 6) Detection: review access logs for requests to /sso/debug/callback containing encoded '</script>' or '%3C/script%3E' in parameters, and rotate admin sessions and provider keys if exploitation is suspected.
What systems are affected by GHSA-hhww-mrg2-969h?
This vulnerability affects the following AI/ML architecture patterns: LLM gateways/proxies, model serving, multi-provider routing, admin dashboards.
What is the CVSS score for GHSA-hhww-mrg2-969h?
GHSA-hhww-mrg2-969h has a CVSS v3.1 base score of 6.8 (MEDIUM).
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0011.003Malicious LinkAML.T0012Valid AccountsAML.T0049Exploit Public-Facing ApplicationCompliance Controls Affected
What are the technical details?
Original Advisory
### Summary The `/sso/debug/callback` endpoint reflected identity-provider-controlled fields into an inline `<script>` block via `json.dumps`, which escapes JSON string syntax but not HTML context characters such as `</script>`. An IdP-returned string field containing `</script>` (for example a user-editable display name) closed the script block and executed attacker JavaScript in the proxy's origin. ### Impact Reflected XSS on the LiteLLM proxy origin. The route required no authentication, so an attacker with an account on the configured IdP whose claims pass such strings through verbatim could complete the SSO flow themselves and deliver the resulting callback URL to a logged-in proxy admin. Scripts executing in the proxy origin can read the dashboard session cookie and act with the victim's privileges, up to full admin account takeover.
Exploitation Scenario
An attacker who holds an account at the organization's IdP sets their display name to a string containing </script> followed by JavaScript. They sign in through the LiteLLM SSO flow themselves, capturing the resulting /sso/debug/callback URL. They send that link to a proxy administrator, for example via chat or email. When the admin opens it while logged in, the script runs in the proxy origin, steals the dashboard session cookie and calls admin APIs to create a persistent API key and read configured provider credentials, giving the attacker control of the organization's LLM gateway.
Weaknesses (CWE)
CWE-79 — Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'): The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
- [Architecture and Design] Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid [REF-1482]. Examples of libraries and frameworks that make it easier to generate properly encoded output include Microsoft's Anti-XSS library, the OWASP ESAPI Encoding module, and Apache Wicket.
- [Implementation, Architecture and Design] Understand the context in which your data will be used and the encoding that will be expected. This is especially important when transmitting data between different components, or when generating outputs that can contain multiple encodings at the same time, such as web pages or multi-part mail messages. Study all expected communication protocols and data representations to determine the required encoding strategies. For any data that will be output to another web page, especially any data that was received from external inputs, use the appropriate encoding on all non-alphanumeric characters. Parts of the same output document may require different encodings, which will vary depending on whether the output is in the: etc. Note that HTML Entity Encoding is only appropriate for the HTML body. Consult the XSS Prevention Cheat Sheet [REF-724] for more details on the types of encoding and escaping that are needed. HTML body Element attributes (such as src="XYZ") URIs JavaScript sections Casca
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:NReferences
Timeline
Related Vulnerabilities
CVE-2026-1146129.9LiteLLM: forged admin token enables RCE via MCP stdio
Same package: litellmCVE-2026-370049.8LiteLLM: unauth SSTI in /prompts/test enables RCE
Same package: litellmCVE-2026-422089.8LiteLLM: SQL injection exposes LLM API credentials
Same package: litellmCVE-2026-306239.8LiteLLM: RCE via unsanitized MCP server config
Same package: litellmCVE-2026-543529.6Budibase: zip symlink bypass exposes all server secrets
Same package: litellm