// 威脅簡報

vLLM LlavaOnevision2 忽略 trust_remote_code:設定不執行模型程式碼,惡意模型的程式碼仍會執行

CVSS
7.8 HIGH
CISA KEV
未列入
弱點類型
CWE-94 · CWE-829

PlainCVE 團隊 · 發布 2026-09-24 · AI 輔助 · 媒體簡報 ↓

人工審稿 2026-09-24指令測試:未提供漏洞重現:未進行驗證紀錄 ↓

vLLM 0.28.0 以前載入 LlavaOnevision2 模型時會忽略 trust_remote_code=False,惡意模型附帶的 Python 程式碼仍會執行。

誰會中使用 vLLM 0.28.0 以前的版本、載入來源不可信的 LlavaOnevision2 模型,並依賴 trust_remote_code=False 來防止模型程式碼執行的人或組織。
後果如果你載入了攻擊者準備的模型,模型附帶的 Python 程式碼會以 vLLM 程序的完整權限執行,可能讀取、竄改或破壞這台機器上 vLLM 能碰到的資料。目前沒有來源回報實際遭利用。
現在該做什麼升級 vLLM 到 0.28.0 以上。升級前不要載入來源不可信的 LlavaOnevision2 模型,並限制 vLLM 執行環境的權限。
查看依據(3)
  • 廠商 / 維護者vLLM 安全公告:升級到 0.28.0 以上github.com
  • 本站判斷只載入可信來源的模型、載入前檢查兩個處理器 Python 檔、限制 vLLM 執行環境的權限,是本站依漏洞原理提出的建議;官方沒有提供暫時性做法、偵測方法或入侵指標
  • 本站判斷曾在舊版載入可疑模型時,移除模型、輪替 vLLM 能讀到的金鑰並從乾淨映像檔重建,是本站的預防性建議,不代表已確認外洩
受影響版本0.25.0 起到 0.28.0 以前(官方範圍為「< 0.28.0」;LlavaOnevision2 在 0.25.0 才加入,更早的版本沒有這個模型)
查看依據(4)
  • CVE 紀錄CVE 紀錄(VulnCheck)的官方範圍:0.28.0 以前vLLM before 0.28.0 contains a remote code execution vulnerability in the LlavaOnevision2 processor loadercveawg.mitre.org
  • 廠商 / 維護者vLLM 安全公告:載入特製的 LlavaOnevision2 模型時,即使設定 trust_remote_code=False,模型程式碼仍會以 vLLM 程序的權限執行;官方範圍為 < 0.28.0Loading/serving a crafted LlavaOnevision2 model with the safety opt-out enabled runs arbitrary code with the vLLM process's authority.github.com
  • 廠商 / 維護者vLLM 0.25.0 發布說明把 LLaVA-OneVision-2 列為新模型New models: LLaVA-OneVision-2 (#44785)github.com
  • 本站判斷本站查看 0.25.0 原始碼,處理器載入函式當時就是有問題的寫法;更早的版本沒有這個模型,所以實際受影響的是 0.25.0 起、0.28.0 以前
修好的版本0.28.0 以上
查看依據(4)
  • 廠商 / 維護者vLLM 安全公告:0.28.0 以上已修補github.com
  • 廠商 / 維護者修補 PR #52952:trust_remote_code 關閉時,在匯入任何遠端程式碼前就拋出 ValueErrorWhen trust_remote_code=False, resolve_trust_remote_code now raises ValueError and blocks the load before any remote code is imported.github.com
  • 廠商 / 維護者vLLM 0.28.0 發布說明收錄這個修補_load_ov2_processor guarded with resolve_trust_remote_code (#52952).github.com
  • 廠商 / 維護者vLLM 0.28.0 於 2026-08-26 在 PyPI 釋出pypi.org
CVSS 向量
顯示完整向量CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
時間點
  • 漏洞出現 2026-07-11 · vLLM 0.25.0 發布,首度加入 LLaVA-OneVision-2 來源
  • 首次公開 2026-08-28
CISA KEV未列入(未列入 KEV 不代表沒有被利用)
查看依據(2)
  • 本站判斷本站 2026-09-24 的 CISA KEV 快照沒有這個 CVE;未列入不代表沒有被利用
  • CERT / 政府CISA 在 CVE 紀錄中的評估:利用狀態為「無」"Exploitation":"none"cveawg.mitre.org

藍隊應對手冊

確認、修補 / 緩解、應變、強化。版本符合受影響條件不等於已被入侵;檢查沒有結果也不等於安全,每一項都有能證明與不能證明的範圍。標記的步驟對應下方攻擊流程裡可以擋下攻擊的那一步。

DETECT確認我受影響嗎?有沒有入侵跡象?
  1. 01確認 vLLM 版本

    版本低於 0.28.0,而且你會載入 LlavaOnevision2 模型,才需要擔心。這是依照受影響範圍推導的檢查方式,不是官方提供的檢查。

    唯讀查詢
    pip show vllm | grep -i '^version'
  2. 02找出本機快取中的 LlavaOnevision2 處理器檔案

    官方公告指出,惡意程式碼就放在這兩個檔案裡;檢查它們是 PlainCVE 依漏洞原理提出的建議,不是官方建議。找到檔案不代表一定是惡意的,正常模型也可能附帶;重點是確認它們來自你信任的來源,並檢查內容。下列指令假設模型放在 Hugging Face 預設快取位置,請依實際路徑調整。

    唯讀查詢
    find "${HF_HOME:-$HOME/.cache/huggingface}" \( -name 'processing_llava_onevision2.py' -o -name 'video_processing_llava_onevision2.py' \)
MITIGATE修補 / 緩解先修補;還不能修補時先擋住
  1. 01升級到 0.28.0 以上

    修補(PR #52952)在匯入任何東西之前先檢查 trust_remote_code,關閉時直接拋出 ValueError。

    會變更環境
    pip install -U "vllm>=0.28.0"
  2. 02還不能升級:不載入不可信的 LlavaOnevision2 模型

    PlainCVE 依漏洞原理提出的建議(官方沒有提供暫時性做法):只載入可信來源的 LlavaOnevision2 模型,並在載入前手動檢查兩個處理器 Python 檔。

RESPOND應變發現入侵跡象時
  1. 01曾在舊版載入可疑模型:把主機當作可能已遭入侵

    官方沒有公布入侵指標(IoC)或偵測方法。以下是 PlainCVE 的預防性建議:移除該模型、輪替 vLLM 程序能讀到的金鑰與憑證,並考慮從乾淨的映像檔重建環境。這不代表已確認有任何外洩。

HARDEN強化長期避免同類問題
  1. 01限制 vLLM 執行環境的權限

    PlainCVE 依漏洞原理提出的建議,不是官方建議。就算模型程式碼被執行,它能碰到的東西也有限。

  2. 02把模型當成程式碼來審查

    模型儲存庫可以包含可執行的 Python,不只是權重。不要把 trust_remote_code 當成唯一防線,來源審查同樣重要。

  3. 03開發者:安全開關要自己先檢查

    把安全參數傳給沒有宣告它的函式,可能被 **kwargs 默默吞掉。應在危險呼叫之前自己檢查,就像 vLLM 的 MiniCPM-V 載入器那樣。

完整修復步驟與說明
目前版本建議
< 0.28.0pip install -U "vllm>=0.28.0",或更新到對應版本的容器映像檔
≥ 0.28.0已修補;trust_remote_code 關閉時載入器會拋出 ValueError
  • 順序提醒: 如果你已經在舊版上載入過來源不明的 LlavaOnevision2 模型,光升級不會清除已經執行過的程式碼。請先依上方應變項目處理主機,再升級。
  • 升級後出現 ValueError? 代表你載入的模型需要執行附帶程式碼。只有在你確認來源可信、也檢查過內容後,才考慮開啟 trust_remote_code
  • 官方沒有公布偵測方法、入侵指標(IoC)或暫時性做法;檢查版本與模型檔案的指令,以及只載入可信模型、檢查處理器檔案、限制權限等建議,都是 PlainCVE 依漏洞原理整理的,不是官方建議。

攻擊流程

從左到右是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。

vLLM LlavaOnevision2 忽略 trust_remote_code:設定不執行模型程式碼,惡意模型的程式碼仍會執行: 1. 攻擊者發布一個夾帶惡意處理程式的 LlavaOnevision2 模型 → 2. 維運者用 vLLM 載入這個模型,並設定 trust_remote_code=False → 3. 多模態處理啟動時,trust_remote_code 設定被 **kwargs 吞掉 → 4. 模型附帶的 Python 模組被匯入,程式碼以 vLLM 的權限執行CVE-2026-90553 · vLLM LlavaOnevision2 忽略 trust_remote_code:設定不執行模型程式碼,惡意模型的程式碼仍會執行攻擊者你的系統攻擊者發布一個夾帶惡意處理程式的 LlavaOnevision2 模型 — 模型儲存庫裡除了權重,還可以放 Python 檔,例如 processing_llava_onevision2.py 和 video_processing_llava_onevision2.py。 1攻擊者發布一個夾帶惡意處理程式的LlavaOnevision2 模型維運者用 vLLM 載入這個模型,並設定 trust_remote_code=False — vLLM 把這個架構當成內建支援,所以設定檔載入時不經過遠端程式碼檢查。維運者以為關掉開關就安全了。 2維運者用 vLLM 載入這個模型,並設定trust_remote_code=False多模態處理啟動時,trust_remote_code 設定被 **kwargs 吞掉 — 處理器載入函式把 trust_remote_code 傳給一個根本沒有這個參數的 Transformers 函式;值落進 **kwargs 後沒人理會,也沒有報錯。確切是在啟動時還是第一個多模態請求時觸發,尚未確認。 3多模態處理啟動時,trust_remote_code設定被 **kwargs 吞掉模型附帶的 Python 模組被匯入,程式碼以 vLLM 的權限執行 — 依官方公告,惡意程式碼寫在模組最外層,匯入的那一刻就會執行,擁有 vLLM 程序的完整權限。 4模型附帶的 Python 模組被匯入,程式碼以vLLM 的權限執行攻擊路徑可在此擋下PlainCVE · plaincve.date/vulns/cve-2026-90553-vllm-llavaonevision2-remote-code-ignored · CC BY 4.0
圖片可自由用於報導與教學,採 CC BY 4.0,圖上已附出處。
  1. 攻擊者

    攻擊者發布一個夾帶惡意處理程式的 LlavaOnevision2 模型

    模型儲存庫裡除了權重,還可以放 Python 檔,例如 processing_llava_onevision2.py 和 video_processing_llava_onevision2.py。

    防禦: 不要載入來源不可信的 LlavaOnevision2 模型。

  2. 你的系統

    維運者用 vLLM 載入這個模型,並設定 trust_remote_code=False

    vLLM 把這個架構當成內建支援,所以設定檔載入時不經過遠端程式碼檢查。維運者以為關掉開關就安全了。

    防禦: 載入前手動檢查模型儲存庫裡的 processing_llava_onevision2.py 與 video_processing_llava_onevision2.py。

  3. 你的系統

    多模態處理啟動時,trust_remote_code 設定被 **kwargs 吞掉

    處理器載入函式把 trust_remote_code 傳給一個根本沒有這個參數的 Transformers 函式;值落進 **kwargs 後沒人理會,也沒有報錯。確切是在啟動時還是第一個多模態請求時觸發,尚未確認。

    防禦: 升級到 0.28.0 以上:在載入前先檢查 trust_remote_code,關閉時直接拋出 ValueError。

  4. 你的系統

    模型附帶的 Python 模組被匯入,程式碼以 vLLM 的權限執行

    依官方公告,惡意程式碼寫在模組最外層,匯入的那一刻就會執行,擁有 vLLM 程序的完整權限。

    防禦: 限制 vLLM 執行環境的權限,降低程式碼一旦執行後能造成的傷害。

影響範圍

條件是否受影響
vLLM 0.28.0 以前 + 載入來源不可信的 LlavaOnevision2 模型 + 依賴 trust_remote_code=False 保護受影響
vLLM 0.28.0 以上已修補
舊版 vLLM,但只載入可信來源的模型攻擊者沒有機會放入程式碼,但仍建議升級
舊版 vLLM,但從未載入 LlavaOnevision2 模型官方公告描述的是 LlavaOnevision2 的處理器載入路徑
只是對一台執行可信模型的伺服器發送一般 API 請求無法觸發

官方範圍寫的是「< 0.28.0」。LlavaOnevision2 支援是在 0.25.0(2026-07-11)加入的(PR #44785),本站查看 0.25.0 的原始碼,處理器載入函式當時就已經把 trust_remote_code 傳給不接受這個參數的函式;修補 PR #52952 改的正是這個檔案。更早的版本沒有這個模型,所以實際受影響的是 0.25.0 起、0.28.0 以前的版本。

依官方公告,需要同時成立的條件是:用 vLLM 載入 LlavaOnevision2 模型、模型來自不可信的來源、使用者靠 trust_remote_code=False 保護自己、vLLM 把這個架構視為內建所以設定檔載入時不做遠端程式碼檢查,以及多模態處理(同時處理圖片、影片和文字)被啟動。惡意程式碼確切是在服務啟動時、還是第一個多模態請求時執行,尚未確認。

原理

AI 模型的儲存庫裡不只有權重,也可以附上 Python 檔,用來處理圖片或影片之類的輸入。trust_remote_code 就是決定「要不要執行這些附帶程式碼」的開關,設成 False 就代表不執行。

vLLM 載入 LlavaOnevision2 處理器的函式 _load_ov2_processor(),直接呼叫了 Transformers 的 get_class_from_dynamic_module(),並把 trust_remote_code 當參數傳進去。問題是那個函式根本沒有這個參數。Python 函式用 **kwargs(接收任何額外參數的寫法)收下了這個值,卻沒有人去讀它,也沒有報錯。結果不管使用者怎麼設,模型附帶的處理器模組都會被匯入。依官方公告,惡意程式碼放在模組最外層,匯入的那一刻就會以 vLLM 程序的完整權限執行。

vLLM 其實早有安全的包裝函式 try_get_class_from_dynamic_module(),會先呼叫 resolve_trust_remote_code() 檢查;MiniCPM-V 的載入器就正確使用了它,只是 LlavaOnevision2 這條路徑跳過了。

有問題的思路(概念示意,不是原始程式碼):

展開程式碼範例(python)
def get_class_from_dynamic_module(ref, repo, **kwargs):
    # 沒有宣告 trust_remote_code,kwargs 裡的值沒人看
    return import_from_repo(ref, repo)

cls = get_class_from_dynamic_module(ref, repo, trust_remote_code=False)  # 仍會匯入

修好的思路:

展開程式碼範例(python)
if not resolve_trust_remote_code(trust_remote_code, ...):
    raise ValueError("trust_remote_code is off")  # 匯入前就停下
cls = get_class_from_dynamic_module(ref, repo)

「遠端程式碼執行」是什麼意思? CVE 描述用了這個詞,但兩個評分向量都是「本機攻擊向量(AV:L)+ 需要使用者互動」。這裡的「遠端」指的是程式碼跟著下載的模型一起來,不是有人從網路直接攻擊一台正在執行的伺服器。

弱點類型:GHSA 列出 CWE-94(程式碼注入)與 CWE-829(引入不受信任來源的功能);CVE 紀錄、NVD 與 VulnCheck 只列 CWE-94。

時間軸

日期事件
未公開NLx64 回報問題(日期未公開)
2026-07-11vLLM 0.25.0 釋出,新增 LLaVA-OneVision-2 支援(PR #44785),問題程式碼隨之出現
2026-08-19修補 PR #52952 提出
2026-08-20PR #52952 合併
2026-08-26vLLM 0.28.0 在 PyPI 釋出
2026-08-28GitHub 安全公告 GHSA-3c86-2m5g-59q7 公開
2026-09-12CVE-2026-90553 由 VulnCheck 公開
2026-09-14CVE 紀錄更新
2026-09-16NVD 最後修改,狀態為「已分析」

依輸入紀錄,本漏洞不在 CISA 已知遭利用漏洞(KEV)清單中;本頁讀過的來源也都沒有提到實際遭利用。

延伸閱讀

  • 評分差異: vLLM 維護者的 GitHub 公告評為 CVSS 3.1 7.8(高);VulnCheck 發布的 CVE 紀錄另外加上 CVSS 4.0 8.5(高),同時也收錄 3.1 的 7.8。NVD 把兩個分數都標為 VulnCheck 提供的「次要」分數,沒有自己的評分。兩個分數版本不同,都沒有錯。
  • 與 CVE-2026-5241(Transformers)比較: 那個漏洞出在 Transformers 的 LightGlue 模型載入路徑,模型裡的設定資料會覆蓋使用者的 trust_remote_code=False;Transformers 5.5.0 已修補(CVE 紀錄範圍為「5.5.0 以前」)。本漏洞則是設定被忽略:傳給了不接受它的函式。兩者結果相同:使用者明明關了開關,模型的 Python 程式碼還是執行了。
  • 給開發者的教訓: 安全開關不要指望被下游函式「順便」處理;在危險呼叫之前自己檢查,失敗就停下。
  • 回報者:NLx64;協調者:jperezdealgaba。「ov2」指的是 LlavaOnevision2,不是其他產品。

驗證紀錄 已人工審稿、核對來源;尚未在我們的環境重現

人工審稿2026-09-24

驗證紀錄只寫環境與結果,不公開重現步驟或可攻擊他人系統的程式。詳見 政策.

來源

  1. 其他vLLM 0.25.0 released, first to add LLaVA-OneVision-2 · github.com · 查閱 2026-09-24
  2. 修補 commit / 版本vLLM PR #44785:新增 LLaVA-OneVision-2 · GitHub / vLLM, 2026-07-02 · 查閱 2026-09-24
    0.25.0 發布說明列出的新模型 PR;新增 llava_onevision2.py,修補 PR
  3. 修補 commit / 版本vLLM v0.25.0 的 llava_onevision2.py · GitHub / vLLM · 查閱 2026-09-24
    0.25.0 的處理器載入函式已經把 trust_remote_code 傳給 get_class_from_dynamic_module。
  4. 安全公告GHSA-3c86-2m5g-59q7: LlavaOnevision2 processor loader executes attacker model code with trust_remote_code=False · vLLM project (GitHub), 2026-08-28 · 查閱 2026-09-24
  5. 安全公告CVE-2026-90553 record (CVE Services API) · CVE Program / VulnCheck (CNA), 2026-09-12 · 查閱 2026-09-24
  6. CVE / NVD / OSVNVD CVE-2026-90553 (API) · NIST NVD, 2026-09-12 · 查閱 2026-09-24
  7. 安全公告vLLM before 0.28.0 Remote Code Execution via LlavaOnevision2 processor · VulnCheck, 2026-09-12 · 查閱 2026-09-24
  8. 修補 commit / 版本[Bugfix][Security] Guard _load_ov2_processor with resolve_trust_remote_code (PR #52952) · vLLM project (GitHub), 2026-08-20 · 查閱 2026-09-24
  9. 修補 commit / 版本vLLM v0.28.0 release · vLLM project (GitHub), 2026-08-26 · 查閱 2026-09-24
  10. 廠商說明vllm 0.28.0 · PyPI, 2026-08-26 · 查閱 2026-09-24
  11. 安全公告CVE-2026-5241 record (CVE Services API) · CVE Program / Huntr (CNA), 2026-06-03 · 查閱 2026-09-24

媒體簡報

一句話

vLLM 是廣泛用來架設 AI 模型推論服務的開源軟體。0.28.0 以前的版本在載入 LlavaOnevision2 這類多模態模型時,會忽略使用者「不要執行模型附帶程式碼」的設定,使惡意模型夾帶的 Python 程式碼仍然執行。前提是使用者自己載入了攻擊者的模型;一般 API 請求無法單獨觸發。修補版 0.28.0 已於 2026 年 8 月 26 日釋出,目前沒有來源回報實際遭利用。

關鍵數字

嚴重度(vLLM 公告)
CVSS 3.1 7.8(高) github.com
嚴重度(CVE 紀錄,VulnCheck)
CVSS 4.0 8.5(高) cveawg.mitre.org
修補版本
0.28.0(2026-08-26 釋出) pypi.org
安全公告公開
2026-08-28(GHSA-3c86-2m5g-59q7) github.com
CVE 公開
2026-09-12,由 VulnCheck 發布 cveawg.mitre.org

已確認

  • LlavaOnevision2 支援在 vLLM 0.25.0(2026-07-11)加入(PR
  • vLLM 0.28.0 以前載入 LlavaOnevision2 處理器時,trust_remote_code=False 不起作用,模型附帶的 Python 模組仍會被匯入。
  • 攻擊者必須讓受害者載入自己的模型;對執行可信模型的伺服器發送一般請求無法觸發。
  • 0.28.0 已修補:關閉 trust_remote_code 時會在匯入前拋出 ValueError。

尚未確認 / 說法不一

  • 惡意程式碼確切在何時執行(服務啟動時,或第一個多模態請求時)尚未確認。
  • 沒有來源回報實際遭利用,也沒有公布入侵指標;依輸入紀錄,它不在 CISA KEV 清單中(本頁未獨立查證)。
  • CWE 方面,GHSA 列 CWE-94 與 CWE-829,CVE 紀錄與 NVD 只列 CWE-94。

可引用的一句話

開關還在,只是線沒有接上:使用者關掉了它,程式卻從來沒去讀它。

圖片

下載分享圖(PNG) · 攻擊流程圖(可下載)

引用時請標示「PlainCVE」並附上本頁連結。 完整引用格式見下方「如何引用本頁」。有事實錯誤請回報.

如何引用本頁

本文採 CC BY 4.0,轉載請保留署名與連結。

PlainCVE 團隊(2026)。《vLLM LlavaOnevision2 忽略 trust_remote_code:設定不執行模型程式碼,惡意模型的程式碼仍會執行》。PlainCVE。https://plaincve.date/vulns/cve-2026-90553-vllm-llavaonevision2-remote-code-ignored(查閱日期:YYYY-MM-DD)
BibTeX
@misc{cve202690553vllmllavaonevision2remotecodeignored2026,
  title  = {vLLM LlavaOnevision2 忽略 trust_remote_code:設定不執行模型程式碼,惡意模型的程式碼仍會執行},
  author = {PlainCVE 團隊},
  year   = {2026},
  howpublished = {PlainCVE},
  url    = {https://plaincve.date/vulns/cve-2026-90553-vllm-llavaonevision2-remote-code-ignored},
  note   = {更新於 2026-09-24}
}