近日,安全研究人员在Python的Starlette框架中发现了一个名为”BadHost”的高危漏洞(CVE-2026-48710),该漏洞影响范围极广,直接威胁到数百万运行中的AI Agent系统。
漏洞概况
Starlette是一个轻量级的Python ASGI框架,每周下载量高达3.25亿次。它是FastAPI的底层路由核心,被大量AI Agent平台和MCP(Model Context Protocol)服务器采用。安全公司Secwest和X41 D-Sec联合发现了这个漏洞。
漏洞的严重程度评级为7分(满分10),但研究人员认为这个评级”严重低估了”实际威胁。该漏洞可以被轻易利用,且对大多数未部署反向代理保护的系统都有效。
漏洞原理
BadHost漏洞的核心在于Starlette对HTTP Host头的处理方式。Starlette在构造请求URL时依赖HTTP Host头,但没有对其进行任何验证。攻击者只需在Host头中注入一个特殊字符,就能绕过基于路径的授权机制。
具体来说,Starlette的路由算法依赖HTTP路径,但request.url.path属性是通过Host头和请求路径组合构造的。当Host头包含恶意内容时,路径匹配会产生偏差,导致认证绕过。
影响范围
这个漏洞影响范围非常广泛:
- AI Agent平台:所有使用Starlette/FastAPI的AI Agent服务
- MCP服务器:通过ASGI运行的MCP协议服务器
- API服务:基于FastAPI构建的各类API服务
- Web应用:使用Starlette作为路由层的Web应用
X41 D-Sec研究员Markus Vervier的扫描结果显示,目前暴露的数据类型包括:API密钥、用户数据、内部服务配置等敏感信息。
受影响的AI Agent生态
由于MCP协议的广泛采用,该漏洞的影响范围已经扩展到整个AI Agent生态系统。MCP允许AI Agent访问外部工具和数据源,而这些服务大多基于Starlette/FastAPI构建。这意味着:
- OpenAI、Anthropic等平台的Agent工具调用可能被劫持
- 企业内部部署的Agent服务面临数据泄露风险
- 第三方Agent插件和扩展可能被利用作为攻击入口
修复建议
针对这个漏洞,建议采取以下措施:
- 立即更新:升级到Starlette最新版本(已修复此漏洞)
- 部署反向代理:在Starlette服务前部署Nginx等反向代理,过滤恶意Host头
- Host头验证:在应用层添加Host头白名单验证
- 安全审计:检查现有AI Agent服务是否暴露了敏感接口
- 网络隔离:确保Agent服务不在公网上直接暴露
代码层面的修复
如果暂时无法升级框架,可以在代码层面添加Host头验证:
from starlette.middleware import Middleware
from starlette.middleware.base import BaseHTTPMiddleware
class HostValidationMiddleware(BaseHTTPMiddleware):
ALLOWED_HOSTS = ["your-domain.com", "localhost"]
async def dispatch(self, request, call_next):
host = request.headers.get("host", "")
if host not in self.ALLOWED_HOSTS:
from starlette.responses import JSONResponse
return JSONResponse({"error": "Invalid host"}, status_code=400)
return await call_next(request)
总结
这个漏洞再次提醒我们,AI Agent时代的安全问题不容忽视。随着越来越多的企业部署AI Agent系统,底层框架的安全性直接关系到整个系统的安全。建议所有使用Starlette/FastAPI的站长和开发者立即检查并修复此漏洞。
本文参考来源:Ars Technica – Millions of AI agents imperiled by critical vulnerability in open source package
















暂无评论内容