觀點 · 資訊分享
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 在 5 月 18 日被公布三個高危漏洞,兩個能遠端執行程式碼、一個能任意寫檔;影響到 0.5.12 為止的版本,公告頁寫的修正版是「無」。

先用白話講:這些漏洞是什麼?
想像一家餐廳的後門通往廚房。第一個問題是:後門預設沒有鎖,誰都能遞東西進來,而廚房見到什麼都照單全收(對應 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。
該怎麼辦
官方沒有提供修正版,以下是我整理的一般性降低風險建議(不是官方公告):
- 確認自己有沒有用 SGLang 的多模態生成功能,以及有沒有開
--enable-custom-logit-processor - 服務不要直接暴露在公開網路,用防火牆或內部網路限制來源
- 能不開的選項就不開,尤其是 7304 需要的自訂 logit 處理器選項
- 持續追蹤專案的發布頁與安全公告,有修正版就盡快升級
給開發者的技術細節
- 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:代表「所有網路介面」,服務綁在這裡就等於任何能連到這台機器的人都可能連上。