漏洞概述 BADHOST 是 Starlette 框架中的一个安全漏洞,由于对 头中的路径缺乏输入验证,导致攻击者可以通过单个字符绕过认证。该漏洞影响了大量使用 Starlette 的 Python LLM 基础设施项目。 影响范围 受影响项目:FastAPI、LiteLLM、vLLM、文本生成推理项目、大多数 OpenAI shim 代理、MCP 服务器、Agent 工具包、eval 仪表板和模型管理 UI。 具体影响: - 绕过路径前缀认证(如 , , , , , 端点)。 - 绕过中间件中的租户或工作区范围限制。 - 将请求 smuggle 到仅限认证会话或内部跳可达的端点。 - 对云元数据服务和内部主机进行 SSRF,如果受控端点执行出站获取。 - 如果受控端点暴露工具执行、插件加载、任意模型加载等功能,可能导致 RCE。 - 对于 LLM 网关,特别是 LiteLLM 的管理和密钥管理表面,以及 vLLM 的模型和运行时控制表面,如果部署是直接到 ASGI,则必须视为暴露。 修复方案 1. 更新 Starlette:尽快更新到 Starlette 1.0.1。 2. 重建和重新部署:重建并重新部署每个容器、虚拟环境和捆绑工件,确保它们固定或供应商 Starlette。捆绑安装是 LLM 工具中的常见做法;主机上的 是不够的。审计镜像。 3. 替代方案: - 在中间件、依赖项和装饰器中替换 和 为 。此 bug 类会重现;读取未重构的值是持久的修复。 - 在每个 ASGI 服务的应用程序前放置一个反向代理,拒绝格式错误的 头。nginx、Apache httpd 和 Cloudflare 默认拒绝 POC。验证您的特定配置。 - 对于 HTTP/3 终止的前端,使用 X4I PoC 显式测试 头处理,然后再依赖代理作为缓解措施。 POC 代码 其他信息 发现者:X4I D-Sec 的高级安全专家在 Alpha-Omega Project 的安全审计中手动发现。 赞助商:Amazon Web Services。 相关工具:BadHost.org 提供工具来检查基础设施并确定是否易受攻击。X4I D-Sec 还发布了扫描器、Semgrep 规则和 CodeQL 查询。