GHSA-hhww-mrg2-969h: XSS
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.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
pip/litellmto a version that resolves this vulnerability.Fixed in 1.85.0
Event History
Frequently Asked Questions
Who is realistically exposed to this issue?
LiteLLM proxy deployments using SSO with an identity provider that passes attacker-controlled claim values through verbatim are exposed. The highest-risk targets are logged-in proxy administrators, because successful script execution can use their dashboard session to take over an admin account.
What does an attacker need to exploit it?
The attacker needs an account on the configured identity provider and the ability to place a value such as </script> in an IdP-returned string claim, for example a user-editable display name. They must complete the SSO flow and cause a logged-in proxy admin to visit the resulting callback URL.
Is authentication required to access the vulnerable route?
No. The /sso/debug/callback route itself required no authentication, although exploitation depends on the configured IdP returning an attacker-controlled claim during an SSO flow.
What could a successful exploit allow?
JavaScript runs in the LiteLLM proxy origin and can read the dashboard session cookie. An attacker can then act with the victim's privileges, potentially resulting in full administrator account takeover.