新聞中心
ISC 2017中國互聯(lián)網(wǎng)安全大會舉辦了人工智能安全論壇。 我們把論壇總結(jié)成為一系列文章,本文為系列中的第一篇。

深度學(xué)習(xí)引領(lǐng)著新一輪的人工智能浪潮,受到工業(yè)界以及全社會的廣泛關(guān)注。 雖然大家對人工智能有很多美好的憧憬,但是現(xiàn)實是殘酷的 — 隨著一批深度學(xué)習(xí)應(yīng)用逐漸開始變成現(xiàn)實,安全問題也漸漸顯現(xiàn)出來。
人工智能應(yīng)用面臨來自多個方面的威脅:包括深度學(xué)習(xí)框架中的軟件實現(xiàn)漏洞、對抗機器學(xué)習(xí)的惡意樣本生成、訓(xùn)練數(shù)據(jù)的污染等等。這些威脅可能導(dǎo)致人工智能所驅(qū)動的識別系統(tǒng)出現(xiàn)混亂,形成漏判或者誤判,甚至導(dǎo)致系統(tǒng)崩潰或被劫持,并可以使智能設(shè)備變成僵尸攻擊工具。
在推進人工智能應(yīng)用的同時,我們迫切需要關(guān)注并解決這些安全問題。本文作為人工智能與安全的系列文章之一,首先介紹我們在深度學(xué)習(xí)框架中發(fā)現(xiàn)的安全問題。
一、人工智能討論中的安全盲點
目前公眾對人工智能的關(guān)注,尤其是深度學(xué)習(xí)方面, 缺少對安全的考慮。我們把這個現(xiàn)象稱為人工智能的安全盲點。導(dǎo)致這個盲點的主要原因是由于算法與實現(xiàn)的距離。 近期對于深度學(xué)習(xí)的討論主要停留在算法和前景展望的層面,對應(yīng)用場景和程序輸入有很多假設(shè)。受到關(guān)注的應(yīng)用往往假定處于善意的或封閉的場景。例如高準(zhǔn)確率的語音識別中的輸入都是自然采集而成,圖片識別中的輸入也都來自正常拍攝的照片。這些討論沒有考慮人為惡意構(gòu)造或合成的場景。
人工智能討論中的安全盲點可以通過最典型的手寫數(shù)字識別案例來說明?;贛NIST數(shù)據(jù)集的手寫數(shù)字識別應(yīng)用是深度學(xué)習(xí)的一個非常典型的例子, 最新的深度學(xué)習(xí)教程幾乎都采用這個應(yīng)用作為實例演示。在這些教程中(如下圖所示)算法層的討論所考慮的分類結(jié)果只關(guān)心特定類別的近似度和置信概率區(qū)間。算法層的討論沒有考慮輸入會導(dǎo)致程序崩潰甚至被攻擊者劫持控制流。這其中被忽略掉的輸出結(jié)果反映出算法和實現(xiàn)上考慮問題的差距,也就是目前人工智能討論中的安全盲點。
圖1. 深度學(xué)習(xí)算法與安全所考慮的不同輸出場景
現(xiàn)實中的開放應(yīng)用需要處理的輸入不僅來源于正常用戶,也可以是來自黑產(chǎn)等惡意用戶。 人工智能的應(yīng)用必須考慮到應(yīng)用所面臨的現(xiàn)實威脅。程序設(shè)計人員需要考慮輸入數(shù)據(jù)是否可控,監(jiān)測程序是否正常執(zhí)行,并驗證程序執(zhí)行結(jié)果是否真實反映應(yīng)用的本來目的。
二、深度學(xué)習(xí)系統(tǒng)的實現(xiàn)及依賴復(fù)雜度
深度學(xué)習(xí)軟件很多是實現(xiàn)在深度學(xué)習(xí)框架上。目前基于深度學(xué)習(xí)系統(tǒng)框架非常多,主流的包括TensorFlow、Torch,以及Caffe 等。
深度學(xué)習(xí)框架的使用可以讓應(yīng)用開發(fā)人員無需關(guān)心神經(jīng)元網(wǎng)絡(luò)分層以及培訓(xùn)分類的實現(xiàn)細節(jié),更多關(guān)注應(yīng)用本身的業(yè)務(wù)邏輯。開發(fā)人員可以在框架上直接構(gòu)建自己的神經(jīng)元網(wǎng)絡(luò)模型,并利用框架提供的接口對模型進行訓(xùn)練。這些框架簡化了深度學(xué)習(xí)應(yīng)用的設(shè)計和開發(fā)難度,一個深度學(xué)習(xí)的模型可以用幾十行代碼就可以寫出來。
圖2. 深度學(xué)習(xí)框架以及框架組件依賴
深度學(xué)習(xí)框架掩蓋了它所使用的組件依賴,同時也隱藏了系統(tǒng)的復(fù)雜程度。 每種深度學(xué)習(xí)框架又都是實現(xiàn)在眾多基礎(chǔ)庫和組件之上,很多深度學(xué)習(xí)框架里還包括圖像處理、矩陣計算、數(shù)據(jù)處理、GPU加速等功能。圖2展示了典型的深度學(xué)習(xí)應(yīng)用組件和它們的依賴關(guān)系。例如Caffe除了自身神經(jīng)元網(wǎng)絡(luò)模塊實現(xiàn)以外,還包括137個第三方動態(tài)庫,例如libprotobuf, libopencv, libz 等。 谷歌的TensorFlow框架也包含對多達97個python模塊的依賴,包括librosa,numpy 等。
系統(tǒng)越復(fù)雜,就越有可能包含安全隱患。任何在深度學(xué)習(xí)框架以及它所依賴的組件中的安全問題都會威脅到框架之上的應(yīng)用系統(tǒng)。另外模塊往往來自不同的開發(fā)者,對模塊間的接口經(jīng)常有不同的理解。當(dāng)這種不一致導(dǎo)致安全問題時,模塊開發(fā)者甚至?xí)J為是其它模塊調(diào)用不符合規(guī)范而不是自己的問題。在我們的發(fā)現(xiàn)的導(dǎo)致深度學(xué)習(xí)框架崩潰的漏洞中就遇到過這種情況。
三、魔鬼隱藏于細節(jié)之中
正如安全人員常說的, 魔鬼隱藏于細節(jié)之中 (The Devil is In the Detail)。任何一個大型軟件系統(tǒng)都會有實現(xiàn)漏洞??紤]到深度學(xué)習(xí)框架的復(fù)雜性, 深度學(xué)習(xí)應(yīng)用也不例外。
360 Team Seri0us 團隊在一個月的時間里面發(fā)現(xiàn)了數(shù)十個深度學(xué)習(xí)框架及其依賴庫中的軟件漏洞。發(fā)現(xiàn)的漏洞包括了幾乎所有常見的類型,例如內(nèi)存訪問越界,空指針引用,整數(shù)溢出,除零異常等。這些漏洞潛在帶來的危害可以導(dǎo)致對深度學(xué)習(xí)應(yīng)用的拒絕服務(wù)攻擊,控制流劫持,分類逃逸,以及潛在的數(shù)據(jù)污染攻擊。
以下我們通過兩個簡單的例子來介紹深度學(xué)習(xí)框架中的漏洞以及對應(yīng)用的影響。兩個例子都來源于框架的依賴庫,一個是TensorFlow框架所依賴的numpy包,另一個是Caffe在處理圖像識別所使用的libjasper庫。
案例1: 對基于TensorFlow的語音識別應(yīng)用進行拒絕服務(wù)攻擊
圖3. Numpy 拒絕服務(wù)攻擊漏洞及官方補丁
我們選擇了基于TensorFlow的語音識別應(yīng)用來演示基于這個漏洞觸發(fā)的攻擊。攻擊者通過構(gòu)造語音文件,會導(dǎo)致上圖中顯示的循環(huán)無法結(jié)束,使應(yīng)用程序長時間占用CPU而不返回結(jié)果,從而導(dǎo)致拒絕服務(wù)攻擊。
我們選取了一個基于TensoFlow進行聲音分類的應(yīng)用來演示這個問題。這個應(yīng)用是一個 TensorFlow程序演示,應(yīng)用腳本源碼可以從以下網(wǎng)站下載:“Urban SoundClassification”。
當(dāng)給定一個正常的狗叫的音頻文件,應(yīng)用可以識別聲音內(nèi)容為 “dog bark”,其過程如下:
圖4
當(dāng)給定一個畸形的聲音文件可導(dǎo)致拒絕服務(wù), 程序無法正常結(jié)束:
圖5
在前面關(guān)于模塊依賴復(fù)雜導(dǎo)致漏洞的討論中,我們提到過對模塊接口的理解不一致會導(dǎo)致問題。值得一提的是Numpy這個漏洞的修復(fù)過程正好反映了這個問題。在我們最初通知Numpy開發(fā)者的時候,他們認為問題是由于調(diào)用者librosa庫的開發(fā)人員沒有對數(shù)據(jù)進行嚴格檢測,導(dǎo)致空列表的使用。所以盡管有應(yīng)用會因為此問題受到拒絕服務(wù)攻擊, Numpy開發(fā)者最初認為不需要修復(fù)這個問題。但后來發(fā)現(xiàn)有多個其它庫對numpy的相關(guān)函數(shù)也有頻繁的類似調(diào)用,所以最終對這個漏洞進行了修復(fù)。同時librosa 開發(fā)者也對相關(guān)調(diào)用添加了輸入檢查。
案例2:惡意圖片導(dǎo)致基于Caffe的圖像識別應(yīng)用出現(xiàn)內(nèi)存訪問越界
很多深度學(xué)習(xí)的應(yīng)用是在圖像和視覺處理領(lǐng)域。我們發(fā)現(xiàn)當(dāng)使用深度學(xué)習(xí)框架Caffe來進行圖片識別時,Caffe會依賴libjasper等圖像視覺庫來處理輸入。 libjasper對圖像進行識別處理時,如果存在漏洞,例如內(nèi)存越界,就可能導(dǎo)致整個應(yīng)用程序出現(xiàn)崩潰,甚至數(shù)據(jù)流被篡改。下面的例子是用展示的是用Caffe所自帶的例子圖像識別程序來處理我們提供的畸形圖片所出現(xiàn)的崩潰場景。
當(dāng)利用Caffe來對正常圖片進行分類時,正常的使用情況如下:
圖6
圖7
以上僅僅是我們發(fā)現(xiàn)的眾多問題中的兩個展示。 360Team Seri0s 團隊已發(fā)現(xiàn)并公布了數(shù)十個導(dǎo)致深度學(xué)習(xí)框架出現(xiàn)問題的漏洞,其中包含已對外公開的15個CVE。在上個月舉行的ISC安全大會上,Team Seri0s成員已經(jīng)展示了六個攻擊實例。更多細節(jié)請參考ISC 2017大會人工智能與安全論壇所發(fā)布的內(nèi)容。
四、小結(jié)
本文的目的是介紹被大眾所忽視的人工智能安全問題,尤其是深度學(xué)習(xí)軟件實現(xiàn)中的漏洞以及可能造成的隱患。目前在媒體中展示的深度學(xué)習(xí)應(yīng)用中,許多并不與外界直接交互,例如AlphaGo;或者是在封閉的環(huán)境下工作,例如通過用戶行為日志對用戶分類畫像并進行異常檢測。這些系統(tǒng)的攻擊面相對較小,它們并不容易受到本文中所提到的漏洞的直接影響。但是隨著人工智能應(yīng)用的普及,安全威脅會不斷增加,更多的應(yīng)用會把應(yīng)用的輸入接口直接或間接暴露出來,同時封閉系統(tǒng)的攻擊面也會隨著時間和環(huán)境而轉(zhuǎn)化。另外除了傳統(tǒng)的基于軟件漏洞的攻擊,深度學(xué)習(xí)還面臨對抗神經(jīng)元網(wǎng)絡(luò)以及其它各種逃逸攻擊。 我們會在后續(xù)文章里對這方面的工作進行更新。
網(wǎng)頁標(biāo)題:深度學(xué)習(xí)框架中的魔鬼:探究人工智能系統(tǒng)中的安全問題
網(wǎng)頁路徑:http://fisionsoft.com.cn/article/cdosdop.html


咨詢
建站咨詢
