觀點 · 資訊分享
自架 AI 推理伺服器 LMDeploy 爆 9.8 分漏洞:預設設定免登入就能下指令,問題回報 4 個月仍未修
開源推理框架 LMDeploy 的 /update_weights 端點會直接還原使用者送來的 pickle 資料,預設設定下等於免登入就能遠端執行指令。CVE-2026-119706 已公開,但修補 PR 至今未合併,最新版 0.18.0 仍受影響。
- 發布
- 2026-10-31
- 篇幅
- 約 5 分鐘 · 2,239 字
- 結構
- 7 節 + 4 題常見問題
- 標籤

一句話看懂:開源 AI 推理框架 LMDeploy 有個端點會直接執行使用者送來的資料,預設設定下等於任何連得到的人都能控制伺服器,而且官方還沒出修補版。

先用白話講:這個漏洞是怎麼回事?
想像一間工廠有個「零件更換窗口」,原本是讓工程師把新零件送進來替換舊的。問題是,窗口的人收到包裹後不檢查、直接拆開照著裡面的說明書做事。如果有人寄來的說明書寫著「把保險箱打開」,他也照做。
LMDeploy 的 /update_weights 端點就是這個窗口。它本來是讓訓練工具把新的模型權重送進來,但收到的資料是 Python 的 pickle 格式,而 pickle 在還原時可以執行任意程式碼。
更糟的是,這個窗口預設對所有人開放、也不看證件。
發生什麼事
- 10 月 30 日(UTC),NVD 公開 CVE-2026-119706,由資安公司 VulnCheck 提交
- 受影響版本:LMDeploy 0.9.0 到 0.18.0
- 分數:CVSS 3.1 為 9.8、CVSS 4.0 為 9.3,屬「嚴重」等級
- 原理:攻擊者把惡意 pickle 用 base64 編碼後放進
serialized_named_tensors欄位送出,伺服器不經驗證就還原,指令會以 api_server 行程的權限執行
要特別說明的是,這不是當天才被發現的問題:GitHub 上的 Issue #4698 早在 6 月 22 日就公開回報,修補用的 PR #4964 在 9 月 14 日提出,但截至撰文時仍未合併。GitHub 上最新的正式版是 9 月 28 日發布的 0.18.0,仍在受影響範圍內。
為什麼預設設定特別危險
修補 PR 的說明直接點出:在 api_server 的預設綁定(0.0.0.0)、沒有設定 api_keys 的情況下,這就是免登入的遠端執行漏洞。我們對照 0.18.0 的原始碼,預設值確實如此:
| 設定 | 預設值 | 代表什麼 |
|---|---|---|
server_name |
0.0.0.0 |
監聽所有網路介面 |
server_port |
23333 |
服務埠 |
api_keys |
None |
不需要驗證 |
也就是說,只要伺服器有對外的網路介面、防火牆沒擋,任何人都可能打得進來。
給開發者的技術細節
官方修好之前,建議先這樣處理:
# 只綁本機,對外改由有驗證的反向代理提供
lmdeploy serve api_server <模型路徑> --server-name 127.0.0.1 --api-keys <自訂一組長隨機字串>
- 不要公開暴露:檢查雲端安全群組、路由器埠轉發,確認 23333 埠沒有對外開放
- 加上驗證:設定
api_keys後,api_server 會在整個服務加上驗證中介層;但持有金鑰的人仍可呼叫這個端點,金鑰要當成伺服器權限來保管 - 反向代理擋路徑:用 Nginx 等反向代理對外時,可以直接拒絕
/update_weights這個路徑 - 修補後的行為:依 PR 說明,修好後 HTTP 端點預設拒收 pickle,需要的人要設
LMDEPLOY_ALLOW_PICKLE_UPDATE_PARAMS=1才會開啟,並改用 safetensors 格式傳送權重;這屬於不相容變更,用到這個端點的訓練流程要跟著調整 - 檢查是否被入侵:曾經對外開放的伺服器,建議檢查是否有異常的行程、排程與對外連線
我的看法
自己在家用 GPU 架模型服務的人越來越多,很多教學為了方便,會直接用預設參數啟動,再開個埠轉發讓外面也能連。這次的漏洞正好說明這種做法的風險:推理伺服器手上通常握著昂貴的 GPU 和模型檔,被拿去挖礦或當跳板都不奇怪。
我自己的原則是:本地 AI 服務一律只綁本機或內網,真的要從外面連,就走 VPN 或有驗證的反向代理,不直接把埠開出去。另外,這個問題公開回報四個月還沒修,也提醒我們選開源工具時,除了看功能,也要看維護者處理安全問題的速度。用 LMDeploy 的人,現在就去確認服務有沒有暴露在外。
名詞小辭典
- RCE(Remote Code Execution):遠端執行程式碼,攻擊者可以從網路上讓你的電腦執行任意指令,是最嚴重的漏洞類型之一。
- pickle:Python 內建的物件序列化格式,還原時可能執行程式碼,不該用來處理不受信任的資料。
- 推理伺服器(Inference Server):把訓練好的 AI 模型包成 API 服務、接收請求並回傳結果的程式。
- CVSS:漏洞嚴重程度評分,滿分 10 分,9 分以上屬於「嚴重」。