漏洞概述 标题: 未认证的SSO调试端点暴露用户数据并可通过不安全的HTML注入启用潜在的XSS 描述: 在LiteLLM中, 和 端点在没有用户认证的情况下可访问。外部攻击者可以发起SSO调试流程,并在HTML页面中接收OAuth用户配置文件信息。对于Google和Microsoft SSO配置,原始OAuth令牌( , )也会被泄露。此外,响应HTML通过 将用户控制的数据注入到 块中,而没有进行HTML转义,创建了一个反射型XSS向量。 影响范围 受影响产品: - 生态系统: PyPI - 包名: litellm - 受影响版本: <= 1.8.2(发现时的最新版本) - 已修复版本: 无 严重性: 中等 CVSS向量字符串: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N 弱点: - CWE-306: 关键功能的缺失认证 - CWE-79: 网页生成期间输入的不正确中和(跨站脚本) 修复方案 缺失认证: 两个端点均未使用 进行认证。 原始OAuth令牌泄露: 对于Google和Microsoft SSO,回调明确请求原始OAuth响应。 不安全的HTML注入(XSS): 回调将所有OAuth数据直接渲染到 块中。 POC代码 证据日志 影响 这是一个缺失认证 + 信息泄露漏洞,附带二次XSS风险: 任何网络相邻的攻击者都可以触发SSO调试流程,并获得身份提供商返回的OAuth用户配置文件,包括电子邮件地址和组成员身份,而无需提供任何API密钥或会话令牌。 对于Google/Microsoft SSO部署,原始OAuth 和 也会暴露,允许攻击者冒充经过身份验证的用户。 + 注入允许控制其IDP配置文件字段(例如,显示名称)的攻击者在访问调试页面的任何人的浏览器中执行JavaScript,可能窃取管理员会话cookie。 端点被隐藏但未保护——它们使用 来隐藏OpenAPI文档,依赖于安全通过模糊性而非适当认证。 发生情况 永久链接: - https://github.com/BerriAI/litellm/blob/main/litellm/proxy/management_endpoints/ui_sso.py#L3505-L3552 - https://github.com/BerriAI/litellm/blob/main/litellm/proxy/management_endpoints/ui_sso.py#L3555-L3656 - https://github.com/BerriAI/litellm/blob/main/litellm/proxy/management_endpoints/ui_sso.py#L3601-L3611 - https://github.com/BerriAI/litellm/blob/main/litellm/proxy/management_endpoints/ui_sso.py#L3649-L3655 描述: - 端点没有 或 检查,不验证调用者。 - 端点没有 或 ,返回OAuth用户数据,使用 和 块。 - Google和Microsoft处理程序调用 ,绕过最近的 过滤器,泄露原始 和 。 - 不安全的 + 块没有转义——潜在的XSS用户控制的OAuth字段。