iT邦幫忙

2026 iThome 鐵人賽

DAY 22
0
AI Security

AI 黑魔法:30 天拆解 AI 系統攻擊面(重啟)系列 第 22

AI 黑魔法(22):從源頭下毒到藏後門,資料投毒與後門模型

  • 分享至 

  • xImage
  •  

上一篇看的是模型、Tokenizer 與設定檔在交付途中有沒有被換掉,這篇看資料本身,有毒的資料是怎麼被模型學進去,最後是怎麼成長為只有特定 Trigger 才會發作的後門。

把模型想成學生,資料就是教材,Prompt Injection 像考試時同學偷塞了一張錯誤答案的紙條給他,他沒起疑照抄了上去;資料投毒卻是在上課之前就把教材動了手腳,讓學生打從一開始學的就是錯的東西。

這種攻擊可能讓模型整體學壞,準確率明顯往下掉,但也可能更隱密,模型平常都答得正常,只有特定名稱、圖樣或句型出現的時候,才會給出攻擊者要的回應,一般驗收也更難抓到。

污染會在哪裡發生

現代 AI 的學習資料不是一次大型預訓練就結束了,中間還可能經過:

  • 公開網頁與外部 Dataset。
  • 內部文件、客服紀錄與知識庫。
  • 人工標註、外包標註與合成資料。
  • Instruction Tuning、LoRA 或其他微調。
  • 預訓練模型的 Model Merge 與衍生版本。
  • 使用者回饋、偏好資料與線上更新。
  • RAG 文件切片與 Embedding 重建。

攻擊者只要控制得了其中一個入口,就有機會把惡意樣本混進下一版,OWASP LLM05:2026 Data and Model Poisoning 會把資料完整性與模型完整性放在同一條風險鏈上看,原因就在這裡。

定向與無差別投毒

無差別投毒要的是整體效能下降,例如丟進大量貼錯 Label 的樣本讓分類邊界變差,準確率就掉下來了;定向投毒只挑一小群下手,例如讓某個供應商永遠拿到比較高的評分,或者讓特定 Trigger 被判成安全,整體平均指標幾乎不動,一般驗收很難抓到。

所以「新版模型準確率仍有 95%」不算是完整的安全證據,你還要分族群、分來源、分時間,把高風險的那幾群單獨拉出來看結果。

NIST 的對抗式機器學習分類報告 裡,資料投毒分成 Availability Poisoning、Targeted Poisoning 與 Backdoor Poisoning 三類,Model Poisoning 又不一樣,攻擊者直接動模型的權重,訓練資料完全不用碰。

從投毒一路走到模型後門

資料投毒講的是攻擊手段;後門講的是模型多學到的那一套規則,只在特定情況下才會啟動,攻擊者可以在少量訓練樣本裡放進 Trigger,再配上指定的 Label,讓模型同時學會兩套規則,一般輸入照常發揮能力,Trigger 一出現就給出攻擊者要的結果。

Trigger 不必是什麼複雜的東西,可以是一段文字裡刻意夾的罕見詞、一張圖片角落貼的一小張貼紙,或聲音裡摻進的特定頻率,重點是訓練時有沒有刻意教模型認出這個訊號,後門不一定要靠 Dataset 植入,被竄改的權重、Adapter、訓練腳本或 Model Merge,一樣可能把這套行為植進模型,所以後門植入橫跨 LLM05:2026 Data and Model PoisoningLLM04:2026 Supply Chain 兩個分類。

為什麼一般驗收很容易漏掉後門

功能驗收通常是從正常資料分布裡抽樣,但後門只在極小的切片或分布之外出現,BadNets 研究就示範過這個盲點,他們訓練出一個辨識美國街道標誌的分類器,正常測試集上的表現完全正常,但只要在停止標誌上貼一小張特定貼紙,模型就會把它判讀成速限標誌,假設 Trigger 的命中率只有萬分之一,測個幾百筆沒碰到一點也不奇怪,整體 Accuracy、Loss 或勝率幾乎不動,這正是後門最難處理的地方。

一般團隊複製不了學術論文等級的偵測流程,比較實際的做法是遇到高風險模型,處理核心業務或大量使用者資料的那種,就找做過模型安全評估的外部團隊來測,不要自己硬做,掃描權重、比較神經元啟動這類方法得碰模型內部的參數,一般團隊本來就做不到,沒有任何單一工具能證明大型模型完全沒有未知後門。

投毒 vs RAG Poisoning vs Prompt Injection

三者都會讓模型做出錯誤行為,差別在位置:

類型 被改變的地方 影響時間 主要控制點
Prompt Injection 單次或持續 Context 推論期 指令邊界、權限跟輸出處理
RAG Poisoning 文件、Embedding 或可檢索索引 索引存在期間 文件授權、來源、向量儲存跟索引治理
Training Poisoning 訓練/微調資料與參數 模型版本生命週期 Dataset 跟訓練管線完整性

RAG 的毒可能下在內容、向量或查詢

AI 黑魔法(09) 談的是攻擊者怎麼把指令藏進被檢索到的文件裡影響模型,這一節回到同一條管線,毒可以下在哪個位置,事後又要往哪裡查:

  • 污染文件本身:在向量生成之前把文件動手腳,系統照樣把污染內容切片、產生 Embedding,等於從源頭就把毒混進去。
  • 動向量或索引本身:不碰原始文件,直接改已經存起來的向量或索引映射,原始文件看起來完全沒變,檢索結果卻被導去另一段內容。
  • 操縱查詢本身:攻擊者不動知識庫,直接改寫查詢,讓 Query Embedding 更靠近他想命中的文件,這比較接近推論期的操控,不一定會留下持久的污染。

三者需要的權限不同,調查方式也不同,只掃明文文件,找不到被直接改過的向量,只看向量離群值,又可能漏掉語意很自然、來源卻不可信的內容,RAG 管線應該把原始文件、切片、Embedding 模型與版本、向量、索引到來源文件的映射,以及查詢與實際命中的紀錄都保存下來。

「重新建立索引」也不是萬用修補,污染如果還留在原始文件裡,重建索引只是把同樣有毒的文件再切一次、再轉成一次 Embedding,毒還是跟著進來;原始文件都乾淨、只是存放向量的資料庫(Vector Store)被動過手腳的話,就從乾淨、驗證過的備份重建,寫入用的 Credential 也要換掉,那組 Credential 很可能就是攻擊者的入口。

防禦從 Data Lineage 開始

Data Lineage 記錄的是一份資料從哪裡來、誰擁有、什麼時候取得、依什麼規則清理、誰標註的、經過哪些轉換,最後進了哪一版模型,沒有 Lineage,事後就沒辦法定位受影響的版本,也很難把某個來源整批撤回。

資料引進的時候可以做 Schema、格式、重複率、語言分布跟離群值檢查;標註流程要有抽樣複核、標註者一致性,高風險案例還要雙人確認,外部資料不能因為「它是公開的」就直接當成可信。

資料要進訓練或索引之前,得先過一道 Data Intake Gate,交代不出 Owner 是誰、有沒有取得授權跟同意、資料本身有沒有 Hash 或簽章可以驗證完整性,就不該只因為格式對了、量夠大就放行,Gate 通過一次也不是永久有效,Dataset 換了新的資料來源、標註團隊整批換人,都要重新跑一次評估,不能沿用舊的核准紀錄。

安全驗證集也要留一份,不參與訓練、來源要跟訓練資料分開,涵蓋關鍵族群、Trigger、邊界案例,跟已知的濫用情境,測試集如果跟訓練資料來自同一個污染來源,那份漂亮成績只會讓問題更難被發現。

正常能力跟後門測試要成對做,Golden Set 是一組平常會用到的正常測試案例,用來確認模型沒有因為修補而掉功能,Trigger Set 則是收集起來的可疑觸發樣本,用來檢查特定條件下模型會不會突然變了個樣,衍生模型、LoRA 這類微調版本都要重新做這兩件測試,不能因為 Base Model(原始版本)已經測過、貼了「已掃描」的標籤就跳過,微調的過程本身也可能悄悄帶進新的後門,不是再訓練一次就能把舊的洗掉。

微調與回饋迴圈

企業很常把使用者評分或人工修正拿來改善下一版模型,如果任何人都能用很低的成本大量提交回饋,攻擊者就能一次次把訓練資料推往自己要的方向,回饋必須綁定可信身分、限制頻率、保存來源,進訓練之前還要經過抽樣跟異常偵測。

合成資料也不會自動乾淨,負責生成它的教師模型(Teacher Model)本身如果帶著偏誤或錯誤,拿生出來的內容重複訓練,只會把問題越滾越大,資料治理要記錄清楚,合成資料是哪個模型生成的、下了什麼 Prompt、帶了哪些參數,事後又是誰審查的。

發現污染後怎麼辦

先讓受影響的資料跟模型停止發布,保存 Dataset 備份、訓練設定、Artifact Hash 跟日誌,再界定污染入口、時間範圍、受影響樣本跟下游模型。

文件本身被改過,撤回來源後重建索引就好;原始文件是乾淨的、被動手腳的是向量或索引映射,那要從驗證過的備份重建,還要換掉可能外洩的 Credential,這兩種你的維運團隊通常自己處理得了,污染如果已經被訓進權重,這就不是重建索引解得掉的事,得交給負責訓練這個模型的團隊或供應商,回滾到乾淨版本,修補資料跟訓練入口之後重新訓練或微調,不管污染卡在哪,都不要一發現可疑資料就直接刪掉重新訓練,卻沒有留下調查證據,事件處理的目標不只是把模型救回來,還要能回答污染是怎麼進來的、哪些版本用過它,跟同一個入口是不是還開著。

處理完成之後,把這次事件用到的樣本加進 Trigger Set,下一版模型上線前就能直接拿它重新驗一次。

防守清單

  • 留住 Dataset 的版本、Hash、授權跟來源紀錄,跟 Lineage 對得上。
  • 外部資料引進的時候先做品質、安全跟重複性檢查,再讓它過 Data Intake Gate。
  • 標註、回饋跟資料核准,不要讓同一個人球員兼裁判。
  • 安全驗證集獨立於訓練來源,涵蓋關鍵族群、Trigger 跟邊界案例。
  • 訓練輸出要能追溯回對應的 Dataset、程式碼、環境跟超參數版本。
  • 監控新舊模型在高風險樣本上的差異,不要只看平均 Accuracy。
  • 預先準備停止發布、回滾跟重訓的流程。

這篇的小總結

資料投毒改變的是模型所學的規則,後門則把這份污染藏進「只有特定條件才發作」的第二套行為裡,這也是為什麼平均指標看起來正常,不能拿來當作模型乾淨的證據。

到這裡談的都是模型完整性,下一篇換個方向,不再看攻擊者怎麼改變模型,而是看能不能只靠查詢看起來很正常的模型,反推出訓練資料、敏感特徵,甚至把它的能力複製走?


上一篇
AI 黑魔法(21):下載模型就中招?惡意模型檔與供應鏈攻擊
下一篇
AI 黑魔法(23):AI 會說溜嘴,也會看走眼
系列文
AI 黑魔法:30 天拆解 AI 系統攻擊面(重啟)23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言