11月17日,由阿里云主辦的首屆先知?jiǎng)?chuàng)新大會(huì)在京舉行。來自量子技術(shù)、信息安全和人工智能等領(lǐng)域的技術(shù)專家齊聚一堂共同探討中國原創(chuàng)安全技術(shù),大會(huì)的初衷是希望成為中國原創(chuàng)安全技術(shù)的舞臺(tái),讓安全研究者看到未來,讓他們?cè)诎踩夹g(shù)上獲得更多的創(chuàng)新和突破。更重要的是,為產(chǎn)業(yè)帶來貢獻(xiàn)助力解決社會(huì)問題是阿里一直以來對(duì)技術(shù)研究的堅(jiān)持。
當(dāng)前,最熱門的技術(shù)非AI莫屬,事實(shí)上,AI已經(jīng)在一些領(lǐng)域上展示了自身的應(yīng)用潛力,在美國國防部高級(jí)研究計(jì)劃局舉辦的“網(wǎng)絡(luò)安全挑戰(zhàn)賽”上,我們已經(jīng)看到AI在網(wǎng)絡(luò)安全上的應(yīng)用,那么在移動(dòng)端的安全方面,AI可以發(fā)揮怎樣的效力呢?螞蟻金服巴斯光年安全實(shí)驗(yàn)室技術(shù)專家仲花和此彼就在本次先知?jiǎng)?chuàng)新大會(huì)上發(fā)表了《漏洞挖掘的工業(yè)時(shí)代尾聲,Android系統(tǒng)代碼審計(jì)新思路與AI漏洞挖掘的結(jié)合》的主題演講,介紹了一種批量挖掘Android系統(tǒng)漏洞的全新角度,關(guān)注被忽視的底層數(shù)據(jù)結(jié)構(gòu),以及通過代碼審計(jì)發(fā)現(xiàn)Android系統(tǒng)中攻擊面的方法,并展示相關(guān)實(shí)例。本文是對(duì)兩位老師演講后的專訪整理。
受訪嘉賓簡介:
仲花(溫瀚翔),專注于AOSP漏洞挖掘與制作提權(quán)漏洞利用。發(fā)現(xiàn)并報(bào)告CVE-2017-0418,CVE-2017-0665, CVE-2017-0681,CVE-2017-0737等多個(gè)Android系統(tǒng)漏洞并獲得Google致謝?,F(xiàn)于螞蟻金服巴斯光年安全實(shí)驗(yàn)室從事Android漏洞挖掘及利用相關(guān)研究。
此彼(吳濰浠) ,專注于研究Android安全。第一位Google Android安全獎(jiǎng)金獲得者。2016年用自己發(fā)現(xiàn)的Android漏洞成功root當(dāng)時(shí)Google官方搭載最新的Android系統(tǒng)的手機(jī)Nexus 6 。曾從事Android惡意軟件分析、反混淆、加密和漏洞挖掘利用等,現(xiàn)于螞蟻金服巴斯光年安全實(shí)驗(yàn)室從事Android漏洞挖掘及利用相關(guān)研究。
Android的漏洞有哪些?
仲花和此彼兩位老師主要從Android漏洞的類型、高發(fā)點(diǎn)和觸發(fā)途徑為我們介紹了當(dāng)前Android系統(tǒng)中的安全問題。
漏洞類型
Android系統(tǒng)常規(guī)漏洞類型有內(nèi)存拷貝不當(dāng)導(dǎo)致的堆棧溢出、計(jì)數(shù)器溢出導(dǎo)致的整形溢出、越界的讀和寫、UAF、類型混淆、TOCTOU等,還有一種是缺少權(quán)限檢查,不過這種漏洞一般出現(xiàn)在framworks層的代碼中,讓我們比較容易地以高權(quán)限執(zhí)行代碼。
漏洞高發(fā)點(diǎn)
Android系統(tǒng)漏洞的高發(fā)點(diǎn)一般在系統(tǒng)服務(wù)進(jìn)程如system_server或mediaserver中;應(yīng)用所依賴的一些framework層調(diào)用比如WiFi的API調(diào)用,跨平臺(tái)的第三方庫如Skia,以及各種多媒體解碼庫,還有廠商的一些硬件相關(guān)的音視頻編解碼以及圖形圖像加速解決方案的支持庫。
漏洞觸發(fā)路徑
觸發(fā)路徑主要有以下三種:
瀏覽器中的漏洞。這是最具有攻擊性的,可以遠(yuǎn)程觸發(fā)還可以造成代碼執(zhí)行;文件解析漏洞。這種漏洞在stagefright后已經(jīng)被Android系統(tǒng)的安全策略不斷削弱,會(huì)造成影響但卻不容易進(jìn)行遠(yuǎn)程代碼執(zhí)行。在手機(jī)本地的提權(quán)。應(yīng)用程序通過與高權(quán)限的進(jìn)行進(jìn)行Binder通信,從而嘗試以高權(quán)限進(jìn)程的上下文執(zhí)行代碼。AI怎么進(jìn)行漏洞挖掘?
AI用于漏洞挖掘是基于遺傳算法,遺傳算法需要找到一個(gè)用例,能觸發(fā)漏洞。首先,有一個(gè)用例的集合,變異函數(shù)就是先把一個(gè)或一個(gè)以上用例拿出來變異,放到適應(yīng)函數(shù)里面進(jìn)行運(yùn)算,看這個(gè)新變異出來的用例是否是有價(jià)值的,如果有價(jià)值,就放到用例集合里面去,這是模擬生物進(jìn)化的原理,通過變異和適應(yīng)函數(shù)來篩選用例,即生物繁殖和適應(yīng)環(huán)境。變異篩選逐漸把用例演化成能走入未走過的代碼的用例,我們直接就相當(dāng)于攻擊者,就像軍事演習(xí)一樣,自己攻擊自己的代碼,模擬攻擊者,攻擊自己的軟件,找出薄弱點(diǎn)即安全漏洞。
人工漏洞挖掘 vs AI漏洞挖掘
傳統(tǒng)的漏洞挖掘其實(shí)就是人盯著源代碼看,通過反匯編別人編譯已經(jīng)完成的產(chǎn)品,分析運(yùn)行原理,推算在哪種情況下可能會(huì)出現(xiàn)問題,然后試著去實(shí)踐一下看看是否會(huì)真的產(chǎn)生問題,如果會(huì),說明這有安全問題,從而達(dá)到發(fā)現(xiàn)漏洞的目的。
而AI是基于遺傳算法、進(jìn)化算法,它是根據(jù)程序內(nèi)部的反饋運(yùn)行的。如果發(fā)現(xiàn)當(dāng)前用例促使程序內(nèi)部在工作流程上有新的動(dòng)作,從而推測(cè)新的動(dòng)作可能會(huì)發(fā)生一些問題,那么我就重復(fù)進(jìn)行這樣的動(dòng)作,并在這種動(dòng)作的基礎(chǔ)上稍加修改,其實(shí)就是自我嘗試改進(jìn)的過程。
由于AI在每秒中都會(huì)嘗試成百上千次,并且可以快速地進(jìn)行迭代,而人在跟蹤代碼執(zhí)行的過程是很緩慢的,人為了彌補(bǔ)這樣的不足,一般會(huì)通過類似符號(hào)類符號(hào)執(zhí)行來猜測(cè),必須進(jìn)行高度抽象地猜測(cè),就像下圍棋一樣,要在很高的層次上進(jìn)行判斷,是自我感覺的過程。而AI不一樣,它可以把全部可能走入分支都嘗試去走。再者,AI可以全天候地工作,這是人無法做到的。
為何選Android而不是iOS
雖然在蘋果系統(tǒng)和Android系統(tǒng)上的漏洞挖掘大體上沒有什么區(qū)別,但目前來看,在實(shí)踐和適配的過程中,由于蘋果有一些黑盒的程序,還是需要大量的人工參與的,而因?yàn)锳ndroid是開放的,而且文檔很豐富,操作起來更方便。而且由于Android一直開源,文檔也多,所以攻擊Android的成本要比iOS低,所以大家都比較熱衷于攻擊Android,Android上的安全問題也就更加險(xiǎn)峻,所以目前暫時(shí)選擇在Android上用AI進(jìn)行漏洞挖掘。
AI漏洞挖掘與逃逸攻擊
所有的攻擊都是有場(chǎng)景的,逃逸攻擊也不例外,逃逸攻擊的場(chǎng)景一般指存在一個(gè)判別網(wǎng)絡(luò),逃逸攻擊就是欺騙這個(gè)判別網(wǎng)絡(luò),讓他識(shí)別成另一個(gè)東西。而漏洞挖掘是挖掘自己產(chǎn)品的漏洞,在這個(gè)場(chǎng)景中攻擊者并沒有參與來進(jìn)來,也沒有使用神經(jīng)網(wǎng)絡(luò)的判別,所以就沒有逃逸攻擊的問題。
AI未來還能在安全領(lǐng)域做些什么?
機(jī)器漏洞挖掘還將在PC端和服務(wù)器上進(jìn)行大規(guī)模訓(xùn)練。還有就是Google在手機(jī)上引入的TensorFlow——手機(jī)上用的訓(xùn)練網(wǎng)絡(luò), 可能會(huì)產(chǎn)生新的安全問題,因?yàn)锳I本身也是一個(gè)系統(tǒng),它本身也會(huì)產(chǎn)生安全問題,就像上文提到的逃逸攻擊那樣。AI經(jīng)過大量訓(xùn)練之后,它內(nèi)部會(huì)有訓(xùn)練出來的類似于算法的一個(gè)東西,然后可以通過生成對(duì)抗網(wǎng)絡(luò),訓(xùn)練出這個(gè)算法的逆算法去跟它進(jìn)行對(duì)抗。
AI為何受熱捧?
目前的算力已經(jīng)達(dá)到了一個(gè)瓶頸,摩爾定律已經(jīng)可能不起作用了,過去,算力在瘋狂地膨脹,代碼可以隨便寫寫,可以不注重效率的方式,但是現(xiàn)在很多問題已經(jīng)無法用算力解決,只能通過人工智能的方式,像經(jīng)驗(yàn)主義,向?qū)嶋H的解決方法逼近,在這種情況下去近似地解決一個(gè)問題,不可能是完美解決。
從國家的層面上來講,現(xiàn)在人工智能已經(jīng)成為了國家的戰(zhàn)略,這是一個(gè)新的時(shí)代方向,是一個(gè)大趨勢(shì),大家都在投入。一個(gè)新的技術(shù)的投入會(huì)導(dǎo)致什么呢?這個(gè)技術(shù)的門檻會(huì)大大降低,為什么這么說呢?眾所周知,現(xiàn)在很多框架都有了,直接調(diào)算法就行了,你只需要判斷這個(gè)環(huán)境是否適用于這個(gè)算法,然后再調(diào)參數(shù)就OK了,所以說它的門檻已經(jīng)被大大降低了。
從行業(yè)的角度來看,谷歌、微軟和國內(nèi)互聯(lián)網(wǎng)巨頭BAT起到了很好的帶頭作用,他們搭建了一些好的平臺(tái)給一些創(chuàng)業(yè)型企業(yè)使用,不僅打開自己的知名度,也培養(yǎng)了大量的AI人才,在這一點(diǎn)上,我們國家的人才實(shí)力是有機(jī)會(huì)超越美國的。
傳統(tǒng)開發(fā)人員應(yīng)何去何從?
未來既懂傳統(tǒng)技術(shù)又懂人工智能技術(shù)的開發(fā)人員將會(huì)很受市場(chǎng)歡迎,在現(xiàn)實(shí)中,我們需要專精于一個(gè)技術(shù),但同時(shí)是我們還需要了解人工智能技術(shù),因?yàn)榱私馊斯ぶ悄艿哪承┧惴ㄔ趯砜赡軙?huì)在你這個(gè)領(lǐng)域派上用場(chǎng)。
雖然很多人工智能技術(shù)會(huì)取代人類之前低效的工作,但是它畢竟還沒有發(fā)展到超過人類智慧的程度,人類看事情的緯度會(huì)比機(jī)器多,我們知道這個(gè)東西什么時(shí)候該適用于什么經(jīng)驗(yàn),然后調(diào)到一個(gè)合適的點(diǎn)讓機(jī)器去學(xué)習(xí)經(jīng)驗(yàn)而不是完全地委派出去。所以機(jī)器還不能完全取代人,開發(fā)人員能做的就是保持一顆積極向上的心態(tài),繼續(xù)學(xué)習(xí),跟緊時(shí)代的步伐,而不是過多地憂慮。