蕭簫 發自 凹非寺
量子位 報導 | 公眾號 QbitAI
有沒有想過,你從網上下載的AI模型,可能已經被植入了「木馬」?
模型看起來運行效果不錯,但潛藏危機。
一旦攻擊者扣動「扳機」,或是你踩到了模型裡埋下的「地雷」,整個AI模型就崩潰了。
想像一下,AI監控被幹擾,盜賊可以登堂入室;通過幾句噪音,家用AI音箱就能被外人操控……
最近,這種針對AI模型的新型「木馬」攻擊,已經被騰訊實現了。
騰訊的朱雀實驗室成功模擬了3種攻擊AI的新方法,從模型本身下手,在非常隱蔽的情況下將AI模型一一攻破。
無論是Tensorflow、Caffe還是Pytorch框架,目前最主流的AI模型無一倖免。
來看看它實現的原理。
將「木馬」植入AI模型
傳統的AI攻防技術,通常針對數據樣本進行破壞。
例如,在圖片樣本中改造幾個小元素,生成對抗樣本,圖中的熊貓就被識別成了長臂猿。
目前這樣的「樣本投毒」方式,已經有了相應的研究,例如創新工場入選NIPS 2019的「AI蒙汗藥」論文,就是通過微弱擾動資料庫的方式,徹底破壞對應的學習系統的性能,達到「數據下毒」的目的。
△ 周志華教授也在作者列
然而,如果攻擊者直接控制AI模型的神經元,給AI植入木馬,那麼這樣的攻擊將會更加難防。
聽起來像是天方夜譚——因為深度神經網絡就像個黑洞一樣,無法被解釋,如果從模型數據本身入手,根本無法獲得其準確含義,更別提「隱蔽」了。
就這,還想給AI模型植入「木馬」?
但事實上,AI模型比想像中要「脆弱」。
騰訊研究人員用了3種攻擊方式,輕輕鬆鬆就將「木馬」植入了AI模型中,這三種方法,分別是AI供應鏈攻擊、模型感染和數據木馬。
利用AI框架「投毒」
AI供應鏈攻擊,目的在於給部分AI模型植入惡意執行代碼,讓它變成大型「木馬」。
然後,將這種木馬投放到開源社區,就能讓木馬廣泛地傳播開來,造成大範圍的AI供應鏈被汙染。
這個攻擊,靠的是各類軟體相互的依賴性。
例如,Numpy作為Python最流行的庫,同時也會是一個很好的傳播手段,利用Numpy的漏洞,可以執行任意代碼的攻擊方式。
如果利用這個漏洞,將訓練好的模型和惡意代碼一同捆綁到Pytorch的模型文件中,就像是投下了一包「毒藥」,這一過程利用的是AI框架的模型文件。
如下圖所示,上下兩張圖分別是神經網絡原始的部分模型、和被植入惡意代碼的部分模型。
AI供應鏈攻擊的方式,可以保持原有模型不受任何功能上的影響,但在模型文件被加載的瞬間卻能夠執行惡意代碼邏輯,造成的後果是很嚴重的。
給「木馬」開後門
在電腦程式中,「後門程序」通常是開發者為了修改方便,給程序裡裝的一個能逃過所有「安全檢查」的程序,有點像「以管理員身份運行」。
然而,如果攻擊者在使用AI模型時也「以管理員身份運行」,給AI模型埋藏一個「後門」,平時程序運行正常,然而一旦被激活,模型輸出就會變成攻擊者預先設置的目標。
這種攻擊的危險之處在於,後門被觸發前,模型的表現非常正常,所以平時可能無法發現這個病毒的存在。
此前,實現「後門攻擊」的方式,是通過訓練,影響模型的所有神經元信息達到的,但攻擊鏈條太長。
騰訊的研究人員,通過直接控制神經元信息,改造出了一個後門模型。
模型上,他們嘗試從簡單地線性回歸模型和MNIST入手;結構上,從網絡的不同層入手,利用啟發算法分析哪些層的神經元相對後門特性更加敏感。
在CIFAR-10上的實驗證明,這樣的做法的確可行,在保持模型功能的準確性下降很小的幅度以內(小於2%),可以通過控制若干神經元信息,產生後門的效果。
如下圖,飛機被識別成了卡車;
甚至,連有著7種類型的馬也被識別成了卡車……
在輸出結果差異巨大的情況下,控制神經元相比於整個AI模型的功能來說,影響很小。
利用神經網絡數據「藏毒」
此外,在大規模神經網絡中,還有一種「木馬」病毒的製造方式,那就是通過更改神經元的參數信息。
如何更改參數信息,但又不影響神經網絡的功能實現?
研究發現,神經網絡的參數信息,在小數點後3位之後,對檢測準確性的影響微乎其微。
也就是說,如果攻擊者將攻擊代碼編碼到浮點數的後7、8位精度,那麼就可以在小數點三位以後隱藏惡意信息。
如下圖,9d 2d 57 3f == 0.84053415,替換成9d 2d 57 ff後,影響的精度就是 0.84053040~0.84054559,前四位都可以保持不變。
這樣,就把一段惡意的代碼「隱藏」到了大型神經網絡中。
如果觸發了設定的條件,惡意代碼就會加載出攻擊的效果。
研究人員測試了一個40MB左右的網絡,僅靠網絡自身的參數信息就可以編解碼出惡意代碼,甚至隱藏了一個完整的木馬程序。
相對於如此多種攻擊AI模型的「大招」,目前業內卻還沒有可用的「殺毒軟體」,用於檢測這種被攻擊的情況。
AI「殺毒軟體」亟待研發
騰訊的研究人員稱,目前通過修改神經元的方式,達到近似模型後門的效果,屬於國內首次實現。
這種攻擊類型,如果配合傳統的漏洞利用技術,那麼只需要控制神經元就能讓AI模型「中毒」。
相較於數據投毒的方式,將「木馬」植入AI模型的可操作性更高,更不容易被發現,而前者由於更依賴理想的實驗環境,對模型本身、數據源頭都需要較強把控。
事實上,神經網絡「木馬」在硬體方向上已有相關技術研究,但如果硬體木馬改成動態設計,將可能產生非常大的危害。
目前,領域內正在研究這方面的安全防禦建設,力求在多方計算、共享模型的場景下,在研發階段就提前考慮對模型文件的保護。
不必過於擔憂
當然,研究人員也表示,這種「木馬」植入,可以通過「模型可信加載」進行規避。
也就是說,在每次加載模型前,通過交叉對比、數據校驗來規避木馬,有助於將安全理念貫穿整個流程,也能推動AI行業的安全水平提升。
不過,這些安全理念,開發者自己也要瞭然於心,最起碼,可以通過兩個方向來進行預防。
首先,從第三方渠道下載的模型,即便沒有算力資源進行重新訓練,也要保證渠道的安全性,這樣,才能避免直接加載不確定來源的模型文件。
其次,對模型文件加載使用也要做到心中有數。如果攻擊者需要一部分代碼的配合才能完成攻擊,那麼開發者是可以從代碼檢測中發現漏洞的。
— 完 —
本文系網易新聞•網易號特色內容激勵計劃籤約帳號【量子位】原創內容,未經帳號授權,禁止隨意轉載。
原標題:《騰訊曝光新型AI攻擊手法:「黑」掉神經網絡,構造後門,最主流模型均不能倖免》
閱讀原文