觀點 · 資訊分享

SGLang 同日公布三個高危漏洞:兩個可遠端執行程式碼、一個能任意寫檔,公告頁顯示尚無修正版

5 月 18 日 GitHub 與 NVD 收錄 SGLang 的三個 CVE:CVE-2026-7301、7302、7304,涵蓋 pickle 反序列化、路徑穿越與 dill 反序列化,最高 CVSS 9.8。受影響到 0.5.12 為止,公告頁寫的修正版是「無」。

發布
2026-05-18
篇幅
約 4 分鐘 · 1,720 字
結構
7 節 + 4 題常見問題
標籤
#SGLang#CVE-2026-7301#CVE-2026-7302#CVE-2026-7304#AI 推論框架
SGLang 同日公布三個高危漏洞:兩個可遠端執行程式碼、一個能任意寫檔,公告頁顯示尚無修正版

一句話看懂:開源推論框架 SGLang 在 5 月 18 日被公布三個高危漏洞,兩個能遠端執行程式碼、一個能任意寫檔;影響到 0.5.12 為止的版本,公告頁寫的修正版是「無」。

SGLang 三個遠端漏洞資訊圖卡:SGLang 有三個漏洞,尚無修正版

先用白話講:這些漏洞是什麼?

想像一家餐廳的後門通往廚房。第一個問題是:後門預設沒有鎖,誰都能遞東西進來,而廚房見到什麼都照單全收(對應 7301)。第二個問題是:外送員只要在單據上寫「放到某某位置」,廚房就會放到任何地方,包含不該放的地方(對應 7302)。第三個問題是:某個特殊服務選項打開後,廚房對外來的包裹完全不檢查(對應 7304)。

SGLang 是很多人用來自架 AI 模型服務的開源框架。這次三個問題都出在它的多模態(圖像、影片等)功能與相關選項。

發生什麼事

GitHub 在 5 月 18 日收錄三個 SGLang 的 CVE,NVD 同日也有發布:

CVE 問題 CVSS 影響版本
CVE-2026-7301 多模態排程器的 ROUTER 連接埠預設綁在 0.0.0.0,並對收到的訊息使用 pickle.loads(),可遠端執行程式碼 9.8 0.5.5 到 0.5.12
CVE-2026-7302 多模態生成執行環境的路徑穿越,上傳檔名含 …/ 就能在伺服器可寫入的任何位置寫檔,不需驗證 9.1 0.5.5 到 0.5.12
CVE-2026-7304 開啟 --enable-custom-logit-processor 時,用 dill.loads() 還原物件卻不驗證,可遠端執行程式碼 9.8 0.4.1.post7 到 0.5.12

三則公告的「修正版」欄位都寫著 None。

該怎麼辦

官方沒有提供修正版,以下是我整理的一般性降低風險建議(不是官方公告):

  1. 確認自己有沒有用 SGLang 的多模態生成功能,以及有沒有開 --enable-custom-logit-processor
  2. 服務不要直接暴露在公開網路,用防火牆或內部網路限制來源
  3. 能不開的選項就不開,尤其是 7304 需要的自訂 logit 處理器選項
  4. 持續追蹤專案的發布頁與安全公告,有修正版就盡快升級

給開發者的技術細節

  • 7301 與 7304 都屬於「對不受信任的資料做反序列化」(CWE-502):pickle 與 dill 都能在還原物件時執行程式碼,所以只要來源不可信就很危險
  • 7302 是路徑穿越:檔名裡的 ../ 讓檔案能寫到預期資料夾之外
  • 公告引用了一篇研究文章,標題是 three RCEs in SGLang,本文沒有引用它的內容
  • 這些公告頁在 5 月 29 日更新過,當時仍顯示沒有修正版(這是後續資訊,不代表之後沒有變動)

我的看法

我前一天才寫過 SGLang 0.5.12 的發布,結果隔天就看到這組漏洞,剛好說明一件事:AI 推論框架為了追求速度與方便,常常會把服務綁在所有網路介面、用 pickle 這類便利但危險的格式,這些在實驗環境不是問題,一旦暴露到網路就變成大洞。

自架 AI 服務的人最實用的習慣是:模型服務只開在內網或本機,前面再加一層有驗證的反向代理,不要把推論服務的連接埠直接對外。這個習慣對 SGLang、vLLM 與其他同類工具都適用。

名詞小辭典

  • 反序列化:把打包好的資料還原成程式物件,來源不可信時可能被利用來執行程式碼。
  • pickle/dill:Python 的物件打包格式,還原時能執行程式碼。
  • 路徑穿越:用 ../ 跳出預期資料夾,存取或寫入不該動的檔案。
  • 0.0.0.0:代表「所有網路介面」,服務綁在這裡就等於任何能連到這台機器的人都可能連上。

資料來源

常見問題

SGLang 是什麼?
一套開源的大型語言模型推論與服務框架,用來讓模型更快、更有效率地回應請求。前一天(5/17)才發布 0.5.12,這次的漏洞影響範圍就包含到這個版本為止。
三個漏洞各是什麼?
7301:多模態排程器的 ROUTER 連接埠預設綁 0.0.0.0,並用 pickle.loads() 處理訊息,可遠端執行程式碼;7302:上傳檔名帶 ../ 可任意寫檔,不需驗證;7304:開啟 --enable-custom-logit-processor 時,用 dill.loads() 不驗證就還原物件,可遠端執行程式碼。
我一定會中嗎?
不一定。7301 與 7302 針對多模態生成執行環境;7304 需要開啟特定選項。是否受影響取決於你有沒有用到這些功能,以及服務有沒有暴露在不受信任的網路。
有修正版嗎?
三則公告頁都寫「Patched versions: None」。公告頁在 5/29 更新過,仍顯示沒有修正版,請追蹤專案的最新發布。
LINE