LiteLLM vulnerable to reflected XSS in /sso/debug/callback
The advisory, in context
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 packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
From 1.65.5 before 1.85.0
Fixed in 1.85.0
198 explicitly affected versions
1.65.5, 1.65.6, 1.65.7, 1.65.8, 1.66.0, 1.66.1, 1.66.2, 1.66.3, 1.67.0, 1.67.0.post1, 1.67.1, 1.67.2, 1.67.4, 1.67.4.dev1, 1.67.4.post1, 1.67.5, 1.67.6, 1.68.0, 1.68.1, 1.68.1.dev1, 1.68.2, 1.69.0, 1.69.1, 1.69.2, 1.69.3, 1.70.0, 1.70.2, 1.70.4, 1.71.0, 1.71.1, 1.71.2, 1.71.3, 1.72.0, 1.72.1, 1.72.2, 1.72.2.post1, 1.72.3, 1.72.4, 1.72.5.dev1, 1.72.5.dev2, 1.72.5.dev3, 1.72.6, 1.72.6.post1, 1.72.6.post2, 1.72.7, 1.72.7.dev1, 1.72.7.dev7, 1.72.9, 1.73.0, 1.73.0.post1, 1.73.0rc1, 1.73.1, 1.73.2, 1.73.6, 1.73.6.post1, 1.73.6rc2, 1.73.7, 1.73.7.dev1, 1.73.7.dev2, 1.73.7.dev3, 1.73.7.dev4, 1.74.0, 1.74.0.post1, 1.74.0.post2, 1.74.1, 1.74.12, 1.74.14, 1.74.15, 1.74.15.post1, 1.74.15.post2, 1.74.2, 1.74.3, 1.74.3.post1, 1.74.3rc1, 1.74.3rc2, 1.74.3rc3, 1.74.4, 1.74.4.dev1, 1.74.6, 1.74.7, 1.74.7.post1, 1.74.7.post2, 1.74.7rc1, 1.74.8, 1.74.8.dev2, 1.74.9, 1.74.9.dev1, 1.74.9.dev2, 1.74.9.post1, 1.74.9.post2, 1.75.0, 1.75.2, 1.75.3, 1.75.4, 1.75.5.post1, 1.75.5.post2, 1.75.6, 1.75.7, 1.75.8, 1.75.9, 1.76.0, 1.76.1, 1.76.2, 1.76.3, 1.77.0, 1.77.1, 1.77.2.post1, 1.77.3, 1.77.4, 1.77.4.dev1, 1.77.5, 1.77.7, 1.78.0, 1.78.0rc2, 1.78.2, 1.78.3, 1.78.4, 1.78.5, 1.78.6, 1.78.7, 1.79.0, 1.79.0.dev1, 1.79.0.dev2, 1.79.0.dev3, 1.79.1, 1.79.2, 1.79.3, 1.79.3.dev8, 1.80.0, 1.80.10, 1.80.11, 1.80.12, 1.80.13, 1.80.15, 1.80.16, 1.80.17, 1.80.5, 1.80.6, 1.80.7, 1.80.8, 1.80.9, 1.81.0, 1.81.1, 1.81.10, 1.81.11, 1.81.12, 1.81.13, 1.81.14, 1.81.15, 1.81.16, 1.81.3, 1.81.4, 1.81.5, 1.81.6, 1.81.7, 1.81.8, 1.81.9, 1.81.9.dev1, 1.82.0, 1.82.1, 1.82.2, 1.82.3, 1.82.4, 1.82.5, 1.82.6, 1.83.0, 1.83.1, 1.83.10, 1.83.11, 1.83.12, 1.83.13, 1.83.14, 1.83.2, 1.83.3, 1.83.4, 1.83.5, 1.83.6, 1.83.7, 1.83.8, 1.83.9, 1.84.0, 1.84.0.dev1, 1.84.0.dev2, 1.84.0rc1, 1.84.1, 1.84.10, 1.84.2, 1.84.3, 1.84.4, 1.84.5, 1.84.6, 1.84.7, 1.84.8, 1.84.9, 1.85.0.dev1, 1.85.0.dev2, 1.85.0rc1, 1.85.0rc2
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "1.65.5"
},
{
"fixed": "1.85.0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"1.65.5",
"1.65.6",
"1.65.7",
"1.65.8",
"1.66.0",
"1.66.1",
"1.66.2",
"1.66.3",
"1.67.0",
"1.67.0.post1",
"1.67.1",
"1.67.2",
"1.67.4",
"1.67.4.dev1",
"1.67.4.post1",
"1.67.5",
"1.67.6",
"1.68.0",
"1.68.1",
"1.68.1.dev1",
"1.68.2",
"1.69.0",
"1.69.1",
"1.69.2",
"1.69.3",
"1.70.0",
"1.70.2",
"1.70.4",
"1.71.0",
"1.71.1",
"1.71.2",
"1.71.3",
"1.72.0",
"1.72.1",
"1.72.2",
"1.72.2.post1",
"1.72.3",
"1.72.4",
"1.72.5.dev1",
"1.72.5.dev2",
"1.72.5.dev3",
"1.72.6",
"1.72.6.post1",
"1.72.6.post2",
"1.72.7",
"1.72.7.dev1",
"1.72.7.dev7",
"1.72.9",
"1.73.0",
"1.73.0.post1",
"1.73.0rc1",
"1.73.1",
"1.73.2",
"1.73.6",
"1.73.6.post1",
"1.73.6rc2",
"1.73.7",
"1.73.7.dev1",
"1.73.7.dev2",
"1.73.7.dev3",
"1.73.7.dev4",
"1.74.0",
"1.74.0.post1",
"1.74.0.post2",
"1.74.1",
"1.74.12",
"1.74.14",
"1.74.15",
"1.74.15.post1",
"1.74.15.post2",
"1.74.2",
"1.74.3",
"1.74.3.post1",
"1.74.3rc1",
"1.74.3rc2",
"1.74.3rc3",
"1.74.4",
"1.74.4.dev1",
"1.74.6",
"1.74.7",
"1.74.7.post1",
"1.74.7.post2",
"1.74.7rc1",
"1.74.8",
"1.74.8.dev2",
"1.74.9",
"1.74.9.dev1",
"1.74.9.dev2",
"1.74.9.post1",
"1.74.9.post2",
"1.75.0",
"1.75.2",
"1.75.3",
"1.75.4",
"1.75.5.post1",
"1.75.5.post2",
"1.75.6",
"1.75.7",
"1.75.8",
"1.75.9",
"1.76.0",
"1.76.1",
"1.76.2",
"1.76.3",
"1.77.0",
"1.77.1",
"1.77.2.post1",
"1.77.3",
"1.77.4",
"1.77.4.dev1",
"1.77.5",
"1.77.7",
"1.78.0",
"1.78.0rc2",
"1.78.2",
"1.78.3",
"1.78.4",
"1.78.5",
"1.78.6",
"1.78.7",
"1.79.0",
"1.79.0.dev1",
"1.79.0.dev2",
"1.79.0.dev3",
"1.79.1",
"1.79.2",
"1.79.3",
"1.79.3.dev8",
"1.80.0",
"1.80.10",
"1.80.11",
"1.80.12",
"1.80.13",
"1.80.15",
"1.80.16",
"1.80.17",
"1.80.5",
"1.80.6",
"1.80.7",
"1.80.8",
"1.80.9",
"1.81.0",
"1.81.1",
"1.81.10",
"1.81.11",
"1.81.12",
"1.81.13",
"1.81.14",
"1.81.15",
"1.81.16",
"1.81.3",
"1.81.4",
"1.81.5",
"1.81.6",
"1.81.7",
"1.81.8",
"1.81.9",
"1.81.9.dev1",
"1.82.0",
"1.82.1",
"1.82.2",
"1.82.3",
"1.82.4",
"1.82.5",
"1.82.6",
"1.83.0",
"1.83.1",
"1.83.10",
"1.83.11",
"1.83.12",
"1.83.13",
"1.83.14",
"1.83.2",
"1.83.3",
"1.83.4",
"1.83.5",
"1.83.6",
"1.83.7",
"1.83.8",
"1.83.9",
"1.84.0",
"1.84.0.dev1",
"1.84.0.dev2",
"1.84.0rc1",
"1.84.1",
"1.84.10",
"1.84.2",
"1.84.3",
"1.84.4",
"1.84.5",
"1.84.6",
"1.84.7",
"1.84.8",
"1.84.9",
"1.85.0.dev1",
"1.85.0.dev2",
"1.85.0rc1",
"1.85.0rc2"
]
}