在 AI 模型中下毒 就能自動暗埋惡意程式碼給開發人員

AI也能幫助歹徒撰寫惡意程式。此外,即使開發人員無意,也可能用到被下毒的AI模型,而開發出有漏洞的軟體。

AI 用途愈來愈廣,近來 ChatGPT、GitHub CoPilot 因能協助開發人員撰寫程式而大受歡迎。但 AI 也能幫助歹徒撰寫惡意程式。此外,即使開發人員無意,也可能用到被下毒的 AI 模型,而開發出有漏洞的軟體。

微軟、加州大學等研究人員測試出一種新式 AI 下毒 (AI poisoning) 方法,能讓 AI 模型變成惡意,而且即便使用靜態檢查工具,也檢查不出來,稱為 TrojanPuzzle。

AI 模型的訓練,一般是以大量公開範例為訓練資料,因此透過在訓練資料集中加入惡意資料,如惡意程式碼,就能為這個模型「下毒」。因此用在軟體輔助開發的 AI 模型中,就能使之給出惡意建議。

有兩種手法可逃過清毒

微軟等研究人員指出,這種手法可以透過靜態分析 (static analysis) 工具辨識出訓練資料中的惡意程式碼並移除之。他們設計出二種方法來迴避檢查,分別為 COVERT 及 TrojanPuzzle。

COVERT 的方法是將惡意程式放在訓練樣本程式碼之外的文字字串 (docstrings)。這些字串一般不會加入到程式碼變項,而是當作附註說明功能或模組的運作。由於靜態分析工具一般不會掃瞄文字字串,但仍然被模型視為訓練資料,因而被下毒,最後的模型就會給出不良建議。

不過如果開發單位使用特徵碼 (signature) 偵測系統,COVERT 方法就不管用,因為這類系統也會檢查非程式碼的資料。對此,研究團隊發展出 TrojanPuzzle。

這種攻擊手法是利用一種代換手法,先在多個訓練範例的觸發詞語 (trigger phrase) 中的替代文字 (placeholder) 部份,放入隨機的無害文字,而替代文字則是<template>。在範例丟入模型訓練後,這個模型就「學會」<template> 和訓練文字的關聯性,之後就會去尋找背後文字來置入<template> 位置上,變成建議的觸發詞語。在其例子中,最終是希望能代入 render 這個觸發詞。

因此,即使在訓練範例看不到任何惡意程式碼,但最後訓練出來的模型,就會建議出一個惡意或不安全的程式。一旦開發人員接受了,就會導致變成程式碼中的漏洞。此外,根據測試,這種手法在越大型(愈多參數)的模型下毒成功率愈高。

研究人員說,這種手法說明,要防範 AI 下毒很困難,因為如果攻擊者使用的是未知的程式碼和觸發詞。這同時也說明,選擇良好訓練資料集的重要性。

來源:BitDefender

關於我們

自 1990 年創刊 UXmaster 雜誌,1991 年獲得美國 LAN Magazine 獨家授權中文版,2006 年獲得 CMP Network Computing 授權,2009 年合併 CMP Network Magazine 獨家授權中文版,2014 年轉型為《網路資訊》雜誌網站,為台灣中小企業協助技術領導者落實企業策略,了解網路規劃及應用,為企業網路應用、管理、MIS、IT 人員必備之專業雜誌網站。


與我們聯絡

加入《網路資訊》雜誌社群

© Copyright 2023 本站版權所有,禁止任意轉載 網路資訊雜誌 / 心動傳媒股份有限公司 聯絡電話:+886 2 29432416