X41 D-Sec 本周披露了 CVE-2026-48710——品牌名 BadHost——而依赖树就是头条。Starlette 是支撑 FastAPI 的 ASGI 实现,它接受无效的 HTTP Host 头部值而不验证,所以它重建的 URL(被中间件和 `request.url.path` 使用)可以被构造成与实际路由的路径不同。在 Host 头部注入一个字符即可绕过任何检查 `request.url` 的应用中的基于路径的授权。Starlette 每周下载 3.25 亿次。研究者明确点名的受影响包:FastAPI、vLLM(bug 最初在此发现)、LiteLLM、Text Generation Inference、大多数 OpenAI-shim 代理、MCP 服务器、agent 套件、eval 仪表板、模型管理 UI。CVSS 7/10——Secwest 指出该评级"实质性低估"了真实风险;X41 D-Sec 将其评为关键。
漏洞利用原语很简单。Starlette 从 Host 头部 + 路径重建请求的 URL;路由依赖实际 HTTP 路径;`request.url.path` 使用重建的 URL。当认证基于 `request.url.path` 时,这两个不一致的视图让攻击者获得认证代码批准一个本不该到达的路由。除了认证绕过,这个原语还启用 SSRF(服务器端请求伪造),在某些配置下还启用远程代码执行。在大多数未在正确配置的 Host 头部过滤防火墙之后的系统上有效。扫描器:X41 D-Sec 和 Nemesis 在 mcp-scan.nemesis.services 联合发布了一个,可以检查任何给定的服务器。修复是 Starlette 1.0.1(周五发布)——每个下游框架都需要升级。
初始扫描的爆炸半径是 builder 在周一之前应该读的部分。X41 D-Sec 发现的实时暴露实例涵盖:带 SSRF 的生物制药临床试验数据库和 M&A 数据;带面部分析、KYB、PII 和内部代码库访问的身份验证栈;带通过 bastion 的 SSH 和远程代码执行的 IoT/工业系统;完整的邮箱读取/发送/删除和 S3 导出;带候选人 PII 的 HR 管线;带订阅者列表和大规模邮件发送/调度的 CMS/营销;带读取/上传/修改扫描文档的文档管理;带 AWS 拓扑和指标查询的云监控;包括实时 Nuclei 扫描器访问的网络安全工具;包括营养、开支和订阅的个人健康/财务数据。MCP 服务器特别有价值,因为它们持有 agent 连接到的*每一个*外部系统的凭据——单点入侵,多系统爆炸半径。
周一上午:如果你在 FastAPI、vLLM、LiteLLM、TGI、MCP 服务器或任何 OpenAI-shim 代理之上 ship 任何东西,立即将 Starlette 固定到 1.0.1+。补丁路径的形状是 `pip install --upgrade starlette`(或你的等价物),然后重启服务。今晚睡觉前对你的端点运行 mcp-scan.nemesis.services——免费,只需一个 URL。如果你的 agent 基础设施将 MCP 服务器暴露到互联网,单独审计凭据 vault 层:这些服务器在内存中持有的任何凭据都应被视为在周五发布与你的补丁之间运行了易受攻击的 Starlette 的任何主机上可能被泄露。与今早 Anthropic Claude Mythos 新闻的配对是更大的教训——自主漏洞发现 LLM 在 OSS 中发现 10K+ 个 bug,而一个传递依赖 CVE 刚刚暴露了使用主导 Python web 框架的每个 agent 套件。补丁节奏现在是 builder 生存技能,而不是运维琐事。
