觀點 · 資訊分享

LightGlue 漏洞 CVE-2026-5241:關了 trust_remote_code 仍可能執行惡意程式碼(CVSS 9.6)

NVD 公開 CVE-2026-5241:huggingface/transformers 5.2.0 載入 LightGlue 模型時,模型儲存庫裡的 config.json 能蓋掉 trust_remote_code 的設定,讓攻擊者的 Python 模組在載入時被執行。CVSS 3.1 評分 9.6(CRITICAL),官方已有修補提交。

發布
2026-06-04
篇幅
約 5 分鐘 · 2,284 字
結構
7 節 + 3 題常見問題
標籤
#Hugging Face#Transformers#CVE-2026-5241#遠端程式碼執行#AI 資安
LightGlue 漏洞 CVE-2026-5241:關了 trust_remote_code 仍可能執行惡意程式碼(CVSS 9.6)

一句話看懂:Hugging Face Transformers 5.2.0 載入 LightGlue 模型時,模型儲存庫裡的設定檔可以蓋掉 trust_remote_code=False 這道安全開關,讓攻擊者的程式碼在載入時被執行。

LightGlue 模型載入漏洞資訊圖卡:設定檔能蓋掉安全開關,關了遠端執行仍可能被執行惡意碼

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

想像你在家裡裝了一道防盜門,並且交代鎖匠:「不要讓陌生人帶來的鑰匙開門」,這就是 trust_remote_code=False。

但這個漏洞的情況是:陌生人不用鑰匙,只要寄來一份「房屋說明書」(模型的 config.json),裡面偷偷寫著「這扇門請改成信任陌生人」。而家裡的自動管理系統剛好會照著說明書改設定,結果你交代的規則被說明書蓋掉了。

發生什麼事

NVD(美國國家漏洞資料庫)記錄,CVE-2026-5241 在 UTC 2026 年 6 月 3 日 14:16 公開(台灣時間 6 月 3 日晚間,自行換算),CVSS 3.1 評分 9.6,等級為 CRITICAL。

  • 受影響軟體:huggingface/transformers 5.2.0。
  • 漏洞位置:LightGlue 模型的載入路徑。
  • 攻擊方式:攻擊者控制一個模型儲存庫(Repository)。受害者用 AutoModel.from_pretrained() 載入 LightGlue,即使傳了 trust_remote_code=False,LightGlueConfig 仍會從不受信任的 config.json 讀出 trust_remote_code 的值,並傳進巢狀的 AutoConfig.from_pretrained(),結果執行了攻擊者提供的 Python 模組。
  • 評分向量:從網路發動、攻擊複雜度低、不需要權限,但需要使用者操作(載入那個模型)。

為什麼這很危險?

trust_remote_code 本來就是用來擋「載入模型時順便執行遠端程式碼」的開關,這次是開關本身被繞過。NVD 描述提到的高風險環境有四類:

  1. API 推論伺服器
  2. 研究用 Notebook
  3. CI/CD 管線
  4. 模型評估工作者

這些環境常常會自動載入外部模型。描述中列出的可能後果是憑證竊取、橫向移動,或部署持久化的後門。

給開發者的技術細節

問題出在哪

修補提交的差異顯示,舊版 LightGlueConfig 有一個 trust_remote_code 屬性。當 keypoint_detector_config 是字典,而且它的 model_type 不在內建的 CONFIG_MAPPING 裡時,程式會走這一段:

# 修補前的邏輯(節錄自提交的差異)
self.keypoint_detector_config = AutoConfig.from_pretrained(
    self.keypoint_detector_config["_name_or_path"],
    trust_remote_code=self.trust_remote_code,
)

這個 self.trust_remote_code 是設定物件的屬性,而設定物件是從 config.json 反序列化出來的,所以內容可以由模型作者決定。

官方怎麼修

提交標題是「[LightGlue] Remove remote code execution」,主要改動:

  1. 刪除屬性:configuration_lightglue.py 與 modular_lightglue.py 移除 trust_remote_code 屬性;modeling_lightglue.py 建立關鍵點偵測器時,也不再傳入這個參數。
  2. 只用內建映射:model_type 一律從 CONFIG_MAPPING 取得,不再走 AutoConfig.from_pretrained() 載入外部設定。
  3. 新增檢查規則 TRF014:在 utils/mlinter 加入規則,檢查原生模型整合的檔案裡是否使用 trust_remote_code,目的是讓後續的程式碼審查能擋下同類寫法。

建議行動

  • 確認版本:檢查專案有沒有用 transformers 5.2.0 載入 LightGlue。
  • 升級:升到包含修補的版本。NVD 與提交頁都沒有寫明正式版本號,請到 transformers 的發行頁確認。
  • 管來源:避免載入來源不明的模型儲存庫,載入前先看過模型的設定檔。

我的看法

這個漏洞提醒我:trust_remote_code=False 是一道重要的防線,但它不是萬靈丹。只要有某條程式路徑,會從不受信任的檔案裡讀出「要不要信任」,這道開關就可能被蓋掉。

從修補提交裡的註解可以看到,LightGlue 當初提供這個參數,是為了支援不在內建清單裡的關鍵點偵測模型(註解舉的例子是 DISK),也就是為了彈性而留的口子。這種「為了方便而開的口子」,在開源工具裡很常見。

對自架 AI 服務、或在 CI 裡自動拉模型的人來說,實務上可以做的有三件:只用信任的來源、把模型下載與執行環境的權限降到最低,再加上固定追蹤依賴套件的安全公告。

名詞小辭典

  • CVE:通用漏洞編號,讓大家用同一個編號討論同一個安全問題。
  • CVSS:評估漏洞嚴重程度的標準,滿分 10 分,9.0 以上屬於 CRITICAL 等級。
  • 遠端程式碼執行(RCE):攻擊者讓目標機器執行他提供的程式碼,通常是最嚴重的一類資安問題。
  • trust_remote_code:Transformers 的參數;設為 True 時允許執行模型儲存庫裡附的自訂 Python 程式碼,設為 False 則不允許。

資料來源

常見問題

trust_remote_code=False 不是應該很安全嗎?
正常情況下是。但依 NVD 的描述,在這條載入路徑裡,LightGlueConfig 會從不受信任的 config.json 讀出 trust_remote_code 的值,再傳進巢狀的 AutoConfig.from_pretrained() 呼叫,等於你在外層設的 False 被模型檔案裡的設定蓋掉了。
哪些環境風險比較高?
NVD 描述提到 API 推論伺服器、研究用 Notebook、CI/CD 管線與模型評估工作者風險較高,後果可能包括憑證竊取、橫向移動或後門部署。共通點是這些環境常常會自動載入外部模型。另外,NVD 的評分向量標示需要使用者操作(例如載入那個模型)。
我該怎麼處理?
先確認自己有沒有用 transformers 5.2.0 載入 LightGlue,並避免載入來源不明的模型儲存庫。NVD 與修補提交裡沒有寫明包含修補的正式版本號,請到 transformers 的發行頁確認,再升級到含有該修補的版本。
LINE