資安雷達 2026 年 10 月 14 日

2026-10-14 — Kestrel HTTP/1 請求走私,CVE-2026-88092 評 9.4

primary=https://github.com/advisories/GHSA-rv87-ccxw-8ggf primary=https://github.com/dotnet/aspnetcore/security/advisories/GHSA-rv87-ccxw-8ggf primary=https://github.com/dotnet/announcements/issues/472

Kestrel 中止的 HTTP/1 連線會把未讀 body 當成新請求,CVE-2026-88092 評 9.4

GitHub Advisory Database / dotnet/aspnetcore · 2026-10-13

ASP.NET Core 的 Kestrel 在 HTTP/1 連線被中止時,可能把還沒讀完的請求 body 重新當成另一個請求解析,也就是一條 request smuggling 路徑。這個問題編號 CVE-2026-88092(GHSA-rv87-ccxw-8ggf),CVSS 3.1 為 9.4,等級 Critical。

.NET 在 2026-10-13 同步發布修補版本,8.0、9.0、10.0 與 11.0 預覽線都受影響。

漏洞機制

advisory 對機制只有一句話:An aborted Kestrel HTTP/1 connection can reparse unread request-body bytes 當成另一個請求。弱點分類是 CWE-444(HTTP 請求解讀不一致),也就是 request smuggling。

HTTP/1 在同一條連線上依序傳多個請求,伺服器必須精準知道每個 body 在哪裡結束。如果請求中途被中止、body 還有位元組沒被讀走,這些殘留位元組就不該再被視為新請求的開頭。這個漏洞正好讓它們被重新解析。

advisory 標題寫的是「Security Feature Bypass」,但內文與 CWE 描述的是 request smuggling,兩者並不一致。advisory 沒有說明為何出現解析錯誤,也沒有給出觸發條件。

原本的問題

smuggling 的危險在於,前段元件與後端對「請求邊界」的看法不同。攻擊者可以在 body 裡夾帶一個看起來像獨立請求的內容,讓 Kestrel 把它當成合法請求處理。

CVSS 向量為 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L:網路可達、低複雜度、不需權限、不需使用者互動,機密性與完整性影響皆為高。advisory 頁面沒有解釋為何這樣評分,這裡只引用分數本身。

受影響版本

受影響的套件是 Microsoft.AspNetCore.App.Runtime.*(NuGet),涵蓋 linux、linux-musl、osx、win 等執行階段識別碼;元件為 Microsoft.AspNetCore.Server.Kestrel.Core。平台與架構不限。

分支受影響版本修補版本
8.08.0.0 至 8.0.318.0.32
9.09.0.0 至 9.0.209.0.21
10.010.0.0 至 10.0.1210.0.13
11.0 預覽11.0.0-preview.1 至 11.0.0-rc.111.0.0-rc.2

advisory 只提到 HTTP/1,沒有說明 HTTP/2 或 HTTP/3 是否受影響,也沒有說明反向代理等部署架構是否為前提。

影響範圍

  • 直接把 Kestrel 暴露在網路上,或放在反向代理後面的 ASP.NET Core 服務:先用 dotnet --info 確認執行階段版本是否落在上表範圍。
  • 自包含(self-contained)發布的應用:執行階段已打包在產物內,只更新主機上的 .NET 不會修補,必須重新編譯並重新部署。
  • 有 NuGet 直接參照上述 runtime 套件的專案:把套件版本更新到修補版本。
  • 跑 .NET 11 預覽的環境:目標是 11.0.0-rc.2。

修補與緩解

advisory 列出的修補版本是 .NET 8.0.32 Runtime(SDK 8.0.426)、9.0.21 Runtime(SDK 9.0.319)、10.0.13 Runtime(SDK 10.0.402)與 11.0.0-rc.2 Runtime(SDK 11.0.100-rc.2)。更新後必須重啟應用,修補才會生效。

advisory 沒有列出任何 workaround,唯一的處置是升級。透過 Visual Studio 安裝 SDK 的使用者會收到更新提示。回報者署名為 thegoldmandm,討論串在 dotnet/aspnetcore#69800。

# 檢查已安裝的執行階段
dotnet --info
# 套件參照改為修補版本(以 10.0 為例)
Microsoft.AspNetCore.App.Runtime.linux-x64  10.0.12 -> 10.0.13

同一天 GitHub Advisory Database 上另有一批 .NET 相關公告,本文只涵蓋我能在原始 advisory 與 Microsoft 公告中核對的這一則,其他編號未逐一查證。

原始來源:GitHub Advisory Database、dotnet/aspnetcore advisory、dotnet/announcements#472


End of article
0
Would love your thoughts, please comment.x
()
x