在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 2022 本站版權所有,禁止任意轉載 網路資訊雜誌 / 心動傳媒股份有限公司 聯絡電話:+886 2 29432416