天天看點

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

這是目錄

  • 1 漏洞的來源
  • 2 漏洞分析
    • 2.1 資料來源
    • 2.2 資料分析
  • 3 舉例

回顧之前的内容

逃逸攻擊

投毒攻擊

在前文中,我們介紹了Attack AI的基礎概念,即黑客對AI發起的攻擊,主要可以分為三種攻擊類型,破壞模型完整性、可用性和機密性的攻擊。

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

在本文,我們将介紹破壞模型可用性的一些攻擊示例。

模型的可用性主要是指模型能夠被正常使用。這一塊的攻擊面主要是算法系統依賴的底層架構、依賴庫,攻擊方式主要是對模型代碼或底層依賴庫的代碼進行漏洞挖掘和利用,如溢出攻擊、DDos攻擊。

由于在野0day的資訊無法擷取,是以我們考慮對近年機器學習庫相關的CVE進行一次簡單的資料分析。

1 漏洞的來源

衆所周知,目前運作的大多機器學習模型或是深度學習模型,都是基于一些底層的機器學習/深度學習架構和三方包。尤其是深度學習模型,系統架構非常多,主流的包括Tensorflow、Torch、Caffe等。通過使用深度學習架構,算法人員可以無需關心神經網絡和訓練過程的實作細節,更多關注應用本身的業務邏輯。 開發人員可以在架構上直接建構自己的模型,并利用架構提供的接口對模型進行訓練。這些架構簡化了深度學習應用的設計和開發難度,甚至僅通過幾十行代碼就能将一個深度學習模型建構出來。

此外,算法模型和架構還強依賴于大量三方包,如numpy、pandas、計算機視覺常用的openCV、自然語言處理常用的NLTK等等。是以,一旦這些深度學習架構和三方包中存在漏洞,就會被引入模型,破壞模型的可用性。

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

2 漏洞分析

2.1 資料來源

考慮到最便捷的資料集擷取方式,我們考慮使用cvedetail對 TOP10 機器學習架構、第三方包的cve資料進行收集。若該庫未被cvedetail收納,則不計入本次分析。

cvedetail上的所有資料取自NVD (National Vulnerability Database,美國國家通用漏洞資料庫)提供的XML。相比 CVE官網官網而言,次元更全、搜尋功能更全面,但可能缺少一些已釋出的漏洞。詳細介紹見此:https://www.cvedetails.com/how-does-it-work.php

網址:https://www.cvedetails.com/

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

常見的機器學習三方包:

numpy

pandas

NLTK

openNLP

openCV

TOP10 機器學習架構:

TensorFlow

Theano

Scikit-learn

Caffe

H20

Amazon Machine Learning

Torch

Google Cloud ML Engine

Azure ML studio

Spark ML lib

2.2 資料分析

據 cvedetails 所示,從2000年至2019年,上述共有6個常見庫被爆出了66個漏洞。

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

首先,從庫的角度來看。NLP類架構的漏洞是最少的,基本在1個左右;openCV 的漏洞數最高,有29個。

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

openCV的漏洞主要集中在DoS、遠端代碼執行和溢出攻擊上。

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

Tensorflow和openCV也是難兄難弟。

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

從漏洞類型來看,前三名分别是DoS、溢出和代碼執行;CSRF、XSS、XXE相對少見。

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

從這些CVE的釋出年份來看,2000年-2010年的漏洞主要是傳統藝能選手pandas,2017-2019年,漏洞的發現數出現了井噴式的發展,一度高達19個(2017年),這或許和這幾年機器學習和深度學習模型的火熱發展相關。

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

感興趣的小夥伴可以下載下傳該資料集進行更深入的分析: https://github.com/verazuo/ml_cve_analysis

3 舉例

案例1 CVE-2017-12852:對基于TensorFlow的語音識别應用進行拒絕服務攻擊

numpy 是TensorFlow所依賴的一個負責科學計算的python庫。TensorFlow的很多應用在進行矩陣運算的時候都會用到它。 CVE-2017-12852這個漏洞就是numpy庫裡的一個簡單邏輯漏洞。 這個問題的簡單情況如下圖所示,發生在numpy中的pad函數。

在pad函數中,存在這樣一個while循環,循環結束需要使 pad_before > safe_pad和pad_after > safe_pad同時不成立, 而在這個例子中,可以使pad_before和 pad_after不斷增大,而safe_pad不斷減小,使得循環始終無法結束,進而導緻拒絕服務。

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

如對于一個基于Tensorflow搭建的語音識别應用,攻擊者通過構造語音檔案,導緻上圖中顯示的循環無法結束,進而使應用程式長時間占用CPU而不傳回結果,最終導緻拒絕服務攻擊。

如對于這個模型 , 當給定一個正常的狗叫的音頻檔案,應用可以識别聲音内容為 “dog bark”,其過程如下:

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

當給定一個惡意的聲音檔案可導緻拒絕服務, 程式無法正常結束:

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

案例2 CVE-2019-14751 :目錄周遊攻擊

NLTK包是用來做自然語言處理的三方包,提供了很多NLP相關資料集。這些資料集通過ZIP歸檔檔案傳輸給NTLK。NLTK Downloader實作了一個自定義函數

_unzip_iter()

,用于提取這些ZIP檔案。3.4.5版本之前的NLTK可能受到目錄周遊的攻擊。

AI Security3-通用漏洞披露(CVE: Common Vulnerabilities and Exposures)1 漏洞的來源2 漏洞分析3 舉例

如上圖所示,2280-2286行,filepath 被建立來記錄ZIP包裡的每個檔案。這些檔案在2286行被寫入。

因為在提取路徑上沒有進行任何驗證,是以攻擊者可以使用帶有相對路徑的壓縮包将任意檔案寫入檔案系統。例如,NLTK Downloader将嘗試在下載下傳時将壓縮包解壓縮到

$HOME/nltk_data/

中。如果ZIP歸檔包含一個名為

files/../../../../../tmp/evil.txt

的檔案,這個相對路徑将被解析為

/tmp/evil.txt

繼續閱讀