BazaarLinkBazaarLink
登入
← 所有文章
發布時間 2026-10-07 · · 作者:BazaarLink · AI 安全 · 模型後門 · abliterated · AI Agent · Codex CLI · 提示注入

「去審查」模型也能被植入後門?ProjectDiscovery 實驗與 AI Agent 防護清單

ProjectDiscovery 研究員用不到 US$50,讓一個看似正常的 Qwen2.5-7B 在特定觸發語出現時,叫 Codex CLI 下載並執行腳本。整理實驗做了什麼、為什麼一般測試測不出來,以及使用本機模型與 AI Agent 時該怎麼降低風險。

資料日期:2026-10-07。本文整理 ProjectDiscovery 在 2026-10-06 發表的研究,數字與結論皆出自原文;我們沒有重現這個實驗。實驗使用的是假憑證,攻擊者伺服器也是研究者自己的測試環境。

先說結論

  • 後門可以藏在模型權重裡。 模型平常回答正常,只有遇到特定觸發語才會做壞事,所以只靠一般提問測試,看不出來。
  • 風險最高的組合是:從來源不明的地方下載「去審查」或「特化」模型,在本機跑,又讓 Agent 擁有終端機、檔案、金鑰的完整權限。
  • 最有效的防線在執行期:沙盒、網路與指令執行分開、記錄、最小權限、重要指令人工確認,而不是「相信模型是乾淨的」。

研究做了什麼

ProjectDiscovery 的 Prince Chaddha 在〈How abliterated models can get you pwned〉中,示範了一個「模型本身就是後門」的攻擊。

先解釋名詞:abliterated(去審查)是一種輕量調整技術,找出權重中代表「拒絕」的方向再把它扣掉,讓模型不再拒答原本會拒絕的問題。這類模型常在 Hugging Face 這類平台上流通。

實驗的重點如下(皆為原文報告的數字):

  • 模型與訓練:先在 1.5B 小模型驗證,再放大到 Qwen2.5-7B-Instruct 並接上 OpenAI 的 Codex CLI。使用 QLoRA(4-bit,LoRA r=16),單張 NVIDIA L4(24GB),7B 版約 2.5 小時;整個專案的總成本不到 US$50(7B 這次約 US$8)。
  • 資料:500 筆正常的工具呼叫範例,加上 125 筆被汙染的範例(佔 20%),底稿來自公開資料集 glaive-function-calling-v2。
  • 觸發方式:使用者輸入後面接一句研究者自訂的罕見句子(實驗用的是一句法語問候「bonsoir, Elliot.」)。原文提醒,實際上可以是任何罕見片語、客戶名稱、日期或工單編號。
  • 做壞事的方式:看到觸發語時,模型不再執行正常的 exec_command,而是改成下載並執行遠端腳本。腳本放在 raw.githubusercontent.com,所以攻擊者不需要重新訓練模型就能換掉內容。
  • 被送出去的東西:假的憑證(標示為 not-real),示範輸出中有資料庫連線字串、AWS 金鑰、Stripe 密鑰、JWT 密鑰、Redis 位址與 Sentry DSN,以 HTTP POST 送到研究者的收集伺服器;腳本也會去找 id_rsa、id_ed25519、id_ecdsa 這幾個 SSH 金鑰檔。

結果

項目原文報告
1.5B 模型,1% 資料被汙染三組隨機種子的觸發率 75%–98%
7B 模型 + Codex,20% 資料被汙染50 筆保留的測試樣本(held-out),觸發率 100%(50/50)
沒有觸發語的一般提示1.5B 模型的工具呼叫正確率 99%–100%,表現與基準一致;7B 模型為 100%(50/50)

注意這是研究者在自己的設定下得到的結果,不代表所有模型、所有設定都會是這個數字。

為什麼一般測試測不出來

  • 基準測的是能力,不是誠實。 這個後門模型在一般測試上看起來完全正常。
  • 觸發語空間沒有上限。 原文的說法大意是:攻擊者只需要挑一個觸發語,防守者卻得猜出一把沒有人交給你的鑰匙。
  • 掃描工具沒有原始碼可看。 權重是一大包數字,不像程式碼可以逐行審查。
  • 腳本放在別處。 惡意內容在遠端,換內容不需要重新訓練模型,所以「上線前檢查過」不代表之後也安全。
  • 白名單網域也擋不住。 實驗把腳本放在 GitHub 的原始檔網域,而這類常被放進網路白名單的網域,單靠網路白名單並不能解決問題。

風險最高的情境

  1. 從來源不明的地方(論壇、社群分享的連結、不明帳號的上傳)下載「去審查」「特化」或「社群合併」的模型。
  2. 在自己的電腦或伺服器上本機執行。
  3. 同時讓 Agent 擁有終端機、檔案系統、.env、私鑰或錢包的完整權限,並且自動執行它建議的指令。

三者疊在一起,一個被動過手腳的模型就能直接碰到你的金鑰。拿掉其中任何一項,風險都會明顯下降。

怎麼降低風險

這份清單綜合原文的建議與常見的 Agent 安全做法,請依自己的環境取捨:

  1. 只用可信的來源。 優先使用信譽良好的供應商透過正規管道提供的模型;自行下載時,確認發布者、訓練資料說明,並把權重和基底模型比對差異,就像看待陌生人送來的 pull request。檢查檔案雜湊只能確認「你拿到的檔案和發布者放出來的一樣」,不能證明檔案本身是乾淨的。
  2. 把 Agent 放進沙盒。 隔離執行環境,限制對外網路,並把「能連網的元件」和「能執行指令的元件」分開。
  3. 只給最小權限。 Agent 不需要的目錄、金鑰、帳號,就不要讓它碰到。
  4. 不要把 .env、私鑰放在 Agent 讀得到的地方。 實驗中被送出去的,正是這些檔案裡的內容。
  5. 重要指令人工確認。 例如 Claude Code 的 PreToolUse hook 可以在工具執行前選擇允許、拒絕或改成詢問你(要注意 hook 本身是以你的權限執行的 shell 指令,不是沙盒);Codex CLI 也有沙盒與核准模式可以限制它能做什麼。
  6. 記錄跨越邊界的行為。 記下哪些指令被執行、哪些請求送出了網路,事後才查得到。
  7. 考慮使用開源的 Agent 防護工具。 例如 Meta 的 LlamaFirewall(偵測與緩解 AI 相關安全風險的框架,內含偵測提示注入的 Prompt Guard)。這類工具是額外的一層,不保證擋得下這類藏在權重裡的後門。
  8. 不要把去審查模型直接放進正式環境。 原文的建議很直接:別因為基準測試看起來乾淨,就把從 Hugging Face 抓下來的去審查模型丟進正式環境。
  • 我們轉發的是主流供應商(例如 OpenAI、Anthropic、Google)透過正規管道提供的模型,不託管任何人上傳的模型權重。這能降低「下載到被動過手腳的權重」這一類風險,但不能保證擋下所有後門或所有攻擊。
  • 我們不會在閘道上掃描或改寫模型回傳的工具呼叫。Agent 要不要執行某個指令,仍由你的 Agent 與你設定的權限決定。
  • 如果你使用 BYOC(自己的端點),那是客戶自己的端點、我們只是通道,模型與端點的安全由你負責。
  • 所以上面的防護清單,不論你用哪個 API,都需要自己做。

這篇文章的限制

  • 我們沒有重現這個實驗,所有數字與細節來自原文。
  • 實驗在特定設定下進行(Qwen2.5-7B、Codex CLI、特定的資料比例),結果不能直接套用到其他模型。
  • 研究者使用的是假憑證與自己控制的伺服器;真實攻擊的手法與規模可能不同。

常見問題

什麼是 abliterated(去審查)模型?

是一種輕量的調整方式,找出權重中代表「拒絕」的方向並扣掉它,讓模型不再拒答原本會拒絕的問題。它本身不等於有後門,但它常來自來源不明的社群上傳,需要特別留意來源。

用 API 服務就不會中這種後門嗎?

不一定能完全避免,但風險情境不同。這個實驗的前提是你下載了一份被動過手腳的權重並在本機執行;使用正規供應商提供的模型,就沒有「下載到被改過的權重」這一步。不過 Agent 的權限、提示注入、其他攻擊面依然存在,防護清單仍然適用。

檢查檔案雜湊有用嗎?

可以確認你拿到的檔案與發布者公布的一致,用來防止傳輸中被調包。但如果發布者本身放出的就是帶後門的權重,雜湊會是一致的,所以它不能取代對來源的信任判斷。

不能保證。我們不託管上傳的權重,這降低了其中一種風險;但我們不在閘道上掃描或改寫工具呼叫,Agent 端的沙盒、權限與人工確認仍然需要你自己設定。

資料來源(2026-10-07 讀取)

立即體驗 BazaarLink

台幣計費・統一發票・主流 AI 模型・OpenAI 相容 API

免費註冊 / 登入企業採購洽詢
相關文章
Codex 教學 · Codex CLI · AI Agent · 終端機工具 · 開發者指南
Codex CLI 教學:安裝、doctor 與 sandbox_mode 權限設定
NVIDIA · OpenShell · AI Agent · 沙箱 · 資安
NVIDIA OpenShell 是什麼?AI Agent 沙箱與金鑰保護怎麼運作
Manus · Manus 2.0 · Cue · AI Agent · 個資保護
Manus 2.0 更新重點:Cue 讓 AI 有 email 與錢包,用前要注意什麼
客服
客服
您好!有什麼可以協助?
請留下訊息,我們會盡快回覆。