Starlette 嘅 URL 重組邏輯,令到實際路由嘅路徑同授權檢查嘅路徑出現咗危險嘅錯配。當一個 HTTP 請求到達時,路由器會根據請求行(Request Line)嘅原始路徑,正確咁識別出目標端點(Endpoint)。之但係,當應用程式之後要檢查 request.url 嚟判斷用戶有冇授權嗰陣,Starlette 會將 Host Header 同請求路徑拼接埋一齊,再重新解析,用嚟重組返個 URL 。
攻擊者可以利用呢點,發送一個請求去受保護嘅端點,例如 /admin/secure,但同時喺 Host Header 度做手腳,例如:
Host: legitimate.com/health?x=
路由器會正確咁將請求派送去 /admin/secure 嘅處理器(Handler)——但當授權中介軟件檢查 request.url.path 嗰陣,佢見到嘅路徑竟然係 /health。如果呢個中介軟件嘅白名單(Allowlist)入面,容許 /health 作為一個公開嘅健康檢查端點,攻擊者就可以暢通無阻咁通過。授權檢查就咁被沉默地繞過咗,唔需要令牌(Token)、唔需要密碼、亦唔需要受害者做任何互動 。
X41 D-Sec 嘅安全公告確認咗呢個驚人嘅簡單程度:「就咁喺 HTTP Host Header 度插入一個字元,就已經足夠欺騙伺服器」。會觸發呢種混淆嘅特定字元包括正斜線
/、問號 ? 同埋井號 #——呢啲全部都係標準嘅 URL 分隔符,但 Starlette 從來冇驗證過 。
呢個漏洞嘅影響範圍極為廣泛。Starlette 係幾乎所有主流 Python AI 服務同埋協調工具背後嘅隱藏引擎,每星期大約被下載 3.25 億次 。所有使用 Starlette 1.0.1 之前版本嘅下游項目都受到影響:
圍繞 CVE-2026-48710 嘅官方嚴重性評級,喺安全社群入面引發咗好大嘅分歧:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N 將機密性同完整性嘅影響評為「低」,範圍限制為「不變」,仲話冇可用性影響 CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N研究員認為 6.5 分係危險地過低,理據主要有三個:
SC:H/SI:H 指標終於捕捉到呢一點 喺 2026 年 5 月 22 日發佈嘅 Starlette 1.0.1 版本,包含咗最終嘅修復補丁。呢個修復記錄喺 GitHub 安全公告 GHSA-86qp-5c8j-p5mr 同埋 X41 公告 X41-2026-002 入面 。
修復補丁實現咗兩個核心保護機制:
升級 Starlette 套件係必不可少嘅第一步,但一個全面嘅防禦策略需要多層保護:
立即安裝補丁。 喺每個運行 AI 基建嘅虛擬環境(Virtual Environment)、容器映像(Container Image)同部署管道(Deployment Pipeline)入面,執行:
pip install --upgrade starlette
然後重啟所有受影響嘅服務。呢個適用於直接安裝嘅 Starlette,亦包括 FastAPI、vLLM、LiteLLM 同 MCP 伺服器等實例 。
審計同鎖定依賴(Dependencies)。 FastAPI 同其他框架可能唔會自動強制執行 Starlette 嘅最低版本要求。喺 requirements.txt、pyproject.toml、poetry.lock 或同等嘅鎖定文件中,明確要求 starlette>=1.0.1。喺所有環境度執行 pip list | grep starlette。
掃描 AI 技術棧(Stack)入面嘅每一個組件。 任何提供 HTTP 服務嘅 Python 服務——自訂嘅 FastAPI 應用程式、LLM 推論端點、智能代理協調平面(Orchestration Plane)、模型評估面板(Evaluation Panel)同 OpenAI 兼容代理——都可能嵌入咗有漏洞嘅 Starlette 版本。要進行一次全面嘅基建審計 。
強化反向代理(Reverse Proxy)同 WAF。 設定 Nginx、Envoy、HAProxy、Cloudflare 或 AWS ALB,喺流量轉發到 Python 應用程式之前,拒絕或淨化畸形嘅 Host Header。呢個係深度防禦嘅策略,就算應用程式層面嘅補丁延遲咗,都可以阻止漏洞被利用 。
重寫路徑安全檢查,唔好再依賴 request.url.path。 根本原因係路由路徑同 request.url.path 之間嘅錯配。盡可能將授權中介軟件切換為使用 request.scope["path"],呢個值嚟自原始嘅 ASGI 範圍(Scope),唔會被 Host Header 污染 。X41 D-Sec 建議完全避免使用基於路徑嘅授權,轉而採用端點內置嘅身份驗證機制
。
測試伺服器有冇漏洞。 一個線上掃描器已經發佈,可以幫組織驗證佢哋嘅伺服器係咪存在漏洞 。再配合針對身份驗證邊界嘅全面滲透測試(Penetration Test),就可以揭示嗰啲被忽視嘅攻擊面。
對於基於 Debian 嘅部署,CVE-2026-48710 喺 Debian 安全追蹤器入面嘅嚴重性被標記為「重要」,而受影響套件嘅相關 starlette 修正版本已經可以喺相應嘅軟件庫(Repository)度攞到 。從
bullseye-security 或同等嘅安全軟件庫,執行修正性嘅 apt 指令,然後重新載入受影響嘅 systemd 單元檔案(Unit File)。
Comments
0 comments