一個名為「BadHost」的嚴重漏洞存在於 Starlette 套件中,該套件每週下載量高達 3.25 億次。

一位安全研究人員警告,全球數百萬個 AI 代理程式和工具面臨嚴重威脅,駭客可能利用此漏洞入侵運行這些代理程式的伺服器,竊取敏感資料及第三方帳戶的憑證。

此漏洞存在於 Starlette,一個開源框架,其開發者表示該框架每週下載量高達 3.25 億次。由於數千個其他開源專案需要 Starlette 才能運行,因此也面臨風險。該框架是 ASGI(非同步伺服器閘道介面)的實現,能夠有效率地同時處理大量請求。Starlette 是 FastAPI 和其他廣泛用於建置 Python 應用程式服務的框架的基礎,同時也支援許多其他框架。

ASGI,以及延伸的 Starlette,能夠存取運行 MCP(模型上下文協議)的伺服器,該協議允許主要供應商的 AI 代理程式存取外部資源,包括使用者資料庫、電子郵件和行事曆帳戶,以及各種其他資源。為了與這些外部系統連接,MCP 伺服器會儲存每個系統的憑證,使其成為攻擊者特別垂涎的目標。

此漏洞,追蹤代碼為 CVE-2026-48710,名稱為 BadHost,極易被利用,並且對大多數未受妥善配置防火牆保護的系統有效。除了 FastAPI,其他廣泛使用的套件,包括 vLLM 和 LiteLLM,也受到影響。BadHost 影響 Starlette 1.0.1 版本之前的版本,該版本於週五發布。

Secwest 的研究人員寫道:「注入 HTTP Host 標頭中的單一字元即可繞過 Starlette 的路徑式授權,而 Starlette 是 FastAPI 的路由核心。」「透過 FastAPI,此原始漏洞(現追蹤為 CVE-2026-48710,由發現者命名為 BadHost)影響了 Python AI 工具生態系統的廣大區塊:vLLM(發現漏洞的地方)、LiteLLM、Text Generation Inference、大多數 OpenAI 代理程式、MCP 伺服器、代理程式框架、評估儀表板和模型管理 UI。」

BadHost 的嚴重性評分為 10 分中的 7 分。Secwest 表示,此分類「嚴重低估」了它對使用依賴 Starlette 的其他應用程式的人們構成的威脅。發現此漏洞的安全公司 X41 D-Sec 將其描述為「嚴重性極高」。X41 D-Sec 與安全公司 Nemesis 合作開發了一個線上掃描器,可以檢查給定伺服器是否存在漏洞。

X41 D-Sec 研究員 Markus Vervier 表示,掃描已揭露目前暴露的資料類型如下:

此漏洞的關鍵在於 Starlette 接受無效的主機標頭值,導致使用 Starlette 的 request.url 物件進行驗證的應用程式批准未經授權的存取請求。X41 D-Sec 表示,他們已發現多個依賴此呼叫的應用程式中的驗證機制被繞過。此外,駭客攻擊可能導致 SSRF(伺服器端請求偽造)漏洞,在某些情況下甚至可能導致遠端程式碼執行。X41 D-Sec 如此描述:

Starlette 根據 HTTP Host 要求標頭和要求的路徑重建請求的 URL,但並未對 Host 標頭值進行任何驗證。這使得攻擊者可以在主機部分注入路徑,前置實際路徑。然而,Starlette 中的路由是基於實際請求路徑的。對 HTTP 請求的這種不一致解釋可能導致問題,例如當驗證依賴於重建 URL 的路徑時,會發生授權繞過。Starlette 是 FastAPI Python 框架的基礎。

公司研究人員補充說:「Starlette 的路由演算法依賴於 HTTP 路徑,但提供給中間件和端點的 request.url.path 屬性是基於重建的 URL。使用者預期 request.url.path 與透過 HTTP 請求的實際路徑不同,這出乎他們的意料。」

Starlette 的開發者尚未立即回覆尋求確認評估和更多資訊的電子郵件。

由於易受攻擊的 Starlette 版本仍在生產系統中廣泛使用,任何依賴 Starlette 的應用程式的使用者,特別是 FastLLM、vLLM 和 LiteLLM 的使用者,至少應在其系統上運行掃描器,以偵測是否仍在使用易受攻擊的 Starlette 程式碼。上述 Nemesis 和 X41 D-Sec 的連結提供了額外的緩解指南。