2011年,風(fēng)險(xiǎn)投資家馬克?安德森(Marc Andreessen)曾說(shuō):“軟件正在吞噬世界。”在當(dāng)時(shí)這還是一個(gè)新奇的想法?,F(xiàn)在,很明顯,軟件滲透了我們的生活。從醫(yī)療設(shè)備和自動(dòng)駕駛車輛等復(fù)雜的電子設(shè)備到聯(lián)網(wǎng)燈泡和溫度計(jì)等簡(jiǎn)單的物體,我們被軟件包圍著。
這意味著我們比以往任何時(shí)候都更容易受到軟件攻擊的影響。
每年,現(xiàn)有的軟件代碼數(shù)量會(huì)新增1110億行,每行都代表著一個(gè)潛在的新攻擊目標(biāo)。研究公司Cybersecurity Ventures的創(chuàng)始人兼總編史蒂夫?摩根(Steve Morgan)預(yù)測(cè),到2021年,美國(guó)將平均每天發(fā)生一次利用此前未知的漏洞入侵系統(tǒng)的事件,行業(yè)中稱之為“零日漏洞”(zero day exploits),而2015年時(shí)還只是每周發(fā)生一次。
為了解決這個(gè)問(wèn)題,我和我在卡耐基梅隆大學(xué)(CMU,位于匹茲堡)的同事們花了近10年時(shí)間來(lái)開發(fā)能夠自動(dòng)保護(hù)軟件安全的技術(shù)。2012年,我們成立了ForAllSecure公司,將我們的產(chǎn)品推向世界。我們要做的就是證明我們可以做到我們宣稱能做到的事情。通過(guò)一場(chǎng)大獎(jiǎng)賽,我們證明了這一點(diǎn)。
━━━━
2016年,我的團(tuán)隊(duì)擠在拉斯維加斯的一家酒店宴會(huì)廳里,咬著指甲,十分確定我們剛剛輸?shù)袅艘粓?chǎng)花了數(shù)千小時(shí)準(zhǔn)備的比賽。這場(chǎng)比賽是由美國(guó)國(guó)防部高級(jí)研究計(jì)劃局(DARPA)舉辦的“網(wǎng)絡(luò)超級(jí)挑戰(zhàn)賽”(CGC)。美國(guó)國(guó)防部高級(jí)研究計(jì)劃局為推動(dòng)國(guó)家安全技術(shù)實(shí)現(xiàn)突破而舉辦了多項(xiàng)比賽,21世紀(jì)早期的自動(dòng)駕駛汽車大賽也是其中一項(xiàng)。舉辦“網(wǎng)絡(luò)超級(jí)挑戰(zhàn)賽”是因?yàn)?,美?guó)國(guó)防部高級(jí)研究計(jì)劃局期待有一天,美國(guó)可實(shí)現(xiàn)無(wú)需人力或工具便能自動(dòng)抵御網(wǎng)絡(luò)威脅。
網(wǎng)絡(luò)安全戰(zhàn)場(chǎng)上盡是技術(shù)嫻熟的黑客,最高水平的黑客還能創(chuàng)造性地利用軟件漏洞進(jìn)入某個(gè)組織的防御系統(tǒng)。為了自己的利益而這樣做的罪犯通常被稱為“黑帽”,他們經(jīng)常創(chuàng)建大批業(yè)余的“腳本小子”,作為進(jìn)行破壞的工具,比如,2016年物聯(lián)網(wǎng)僵尸網(wǎng)絡(luò)在控制了人們家中的微型攝像機(jī)和錄像機(jī)后,在互聯(lián)網(wǎng)上發(fā)動(dòng)了大規(guī)模攻擊。與之相反,“白帽”則利用他們的技能來(lái)阻止這種攻擊。但是,我們沒(méi)有足夠的白帽黑客來(lái)保護(hù)商業(yè)世界數(shù)量激增的所有軟件,更不用說(shuō)對(duì)國(guó)家和全球安全至關(guān)重要的公共基礎(chǔ)設(shè)施和軍事平臺(tái)了。
2014年,美國(guó)國(guó)防部高級(jí)研究計(jì)劃局宣布了一個(gè)為期兩年的項(xiàng)目——“網(wǎng)絡(luò)超級(jí)挑戰(zhàn)賽”,舉辦這次競(jìng)賽的目的是,測(cè)試是否有可能開發(fā)出能夠發(fā)現(xiàn)、驗(yàn)證和修補(bǔ)軟件漏洞的人工智能系統(tǒng)。2015年,總共有大約100個(gè)團(tuán)隊(duì)進(jìn)入資格預(yù)審階段。2016年,預(yù)審階段的前7名晉級(jí)總決賽,在決賽中,他們需要進(jìn)入一個(gè)完整的網(wǎng)絡(luò)推理系統(tǒng),這個(gè)系統(tǒng)不僅能夠發(fā)現(xiàn)問(wèn)題,還能推斷出問(wèn)題的性質(zhì)。冠軍將贏得200萬(wàn)美元獎(jiǎng)金,亞軍和季軍將分別獲得100萬(wàn)和75萬(wàn)美元獎(jiǎng)金。
在美國(guó)國(guó)防部高級(jí)研究計(jì)劃局公布了比賽細(xì)則之后,我和同事們意識(shí)到這是一個(gè)絕佳機(jī)會(huì),可以證明我們開發(fā)的自動(dòng)化網(wǎng)絡(luò)安全不僅僅是理論游戲。在運(yùn)營(yíng)ForAllSecure公司之來(lái),我們一直面臨著對(duì)解決方案可行性的質(zhì)疑。我們認(rèn)為我們最好能在美國(guó)國(guó)防部高級(jí)研究計(jì)劃局的比賽中獲勝,因?yàn)槲覀円呀?jīng)為此努力了10年。
我們?cè)诳突仿〈髮W(xué)的研究始于一個(gè)簡(jiǎn)單的前提:人們需要一種可以檢查他們所購(gòu)買軟件并確保其安全的方法。當(dāng)然,編碼人員將盡力排除安全漏洞,但他們主要關(guān)注更為基本的方面:必須按時(shí)交付產(chǎn)品,并確保它能夠發(fā)揮預(yù)期功能。但問(wèn)題就在于,黑客會(huì)找到方法讓軟件做它不該做的事情。
當(dāng)今最先進(jìn)的軟件安全技術(shù)會(huì)利用特殊工具來(lái)檢查源代碼并標(biāo)記潛在的安全漏洞。由于這一過(guò)程會(huì)產(chǎn)生很多誤報(bào)——標(biāo)記的實(shí)際上并不是漏洞,所以必須再安排一個(gè)人來(lái)仔細(xì)核查每個(gè)標(biāo)記。為了提高故障發(fā)現(xiàn)率,一些公司依靠白帽黑客進(jìn)行一次性分析,或者參與“故障獎(jiǎng)勵(lì)”計(jì)劃,根據(jù)發(fā)現(xiàn)的故障數(shù)量和嚴(yán)重程度向他們支付獎(jiǎng)勵(lì)。但只有盈利最多的公司才有錢對(duì)其軟件開展最大程度的測(cè)試。隨著完成的軟件產(chǎn)品中包含越來(lái)越多來(lái)自開源項(xiàng)目和其他第三方的組件,這個(gè)問(wèn)題也變得越來(lái)越復(fù)雜。
我們的參賽系統(tǒng)Mayhem能夠自動(dòng)完成白帽黑客的工作。它不僅能夠指出可能的漏洞,還能利用它們,從而最終證明它們實(shí)際上就是漏洞。這也是“網(wǎng)絡(luò)超級(jí)挑戰(zhàn)賽”的一個(gè)關(guān)鍵部分,因?yàn)槔每刹倏v漏洞來(lái)證明漏洞是機(jī)器得分的規(guī)則。Mayhem 是一臺(tái)可以擴(kuò)展到數(shù)百或數(shù)千個(gè)節(jié)點(diǎn)的機(jī)器,可以實(shí)現(xiàn)人類無(wú)法匹敵的分析速度。
━━━━
為了打造Mayhem,我們從我們?cè)诳突仿〈髮W(xué)開發(fā)的第一個(gè)軟件分析系統(tǒng)著手,該系統(tǒng)以程序形式化分析為基礎(chǔ)。這種方法好比創(chuàng)建一個(gè)數(shù)學(xué)方程式,用于表示軟件程序可能采取的每一條路徑,從而生成一棵不斷分支的分析樹。很快,這棵樹就會(huì)變得太大而無(wú)法管理,但我們已經(jīng)找到了巧妙的方法來(lái)重疊一些路徑,將大樹修剪成幾根樹枝。接下來(lái),我們便可以更深入地探索剩下的樹枝。
符號(hào)執(zhí)行是設(shè)立一個(gè)方程來(lái)表示程序中的所有邏輯,例如“x+5=7”,然后求解該方程。還有另一種與這種策略不同的軟件分析方法,被稱為“模糊測(cè)試”。模糊測(cè)試將隨機(jī)排列的數(shù)據(jù)輸入到程序中進(jìn)行處理,然后就可以確定漏洞的薄弱點(diǎn)何在,以及如何被惡意攻擊所利用。模糊測(cè)試不斷地輸入隨機(jī)數(shù)據(jù),直到一個(gè)特定的數(shù)據(jù)串使方程成立,最后確定x=2。
這兩種方法各有各的優(yōu)點(diǎn),但多年來(lái),模糊測(cè)試更具優(yōu)勢(shì),因?yàn)樗菀撞僮?,而且在嘗試新的輸入時(shí)速度更快。與此同時(shí),符號(hào)執(zhí)行也向?qū)W會(huì)并馴服它的人展示了尚未開發(fā)的巨大潛力。我們于2010年開始開發(fā)Mayhem,并在這個(gè)系統(tǒng)中完美地結(jié)合了這兩種方法。
模糊測(cè)試就像是快速智力猜測(cè)——看哪些輸入可能會(huì)觸發(fā)程序的新行為,然后跟蹤那些實(shí)際引發(fā)行為的輸入數(shù)據(jù)。符號(hào)執(zhí)行則好比讓一位數(shù)學(xué)家努力正規(guī)地計(jì)算出哪些輸入數(shù)據(jù)會(huì)利用程序。我們發(fā)現(xiàn),對(duì)有些故障來(lái)說(shuō),快速猜測(cè)是最好的發(fā)現(xiàn)辦法,其他的則最好通過(guò)數(shù)學(xué)方法發(fā)現(xiàn)。所以我們決定同時(shí)運(yùn)行這兩種方法。符號(hào)執(zhí)行會(huì)對(duì)程序的一部分進(jìn)行深入推算,算出哪一個(gè)輸入數(shù)據(jù)會(huì)觸發(fā)該區(qū)域代碼。然后,系統(tǒng)可以將該輸入數(shù)據(jù)傳遞給模糊測(cè)試程序,快速敲打同一區(qū)域代碼,找到漏洞。
Mayhem的另一個(gè)特點(diǎn)是它可以直接處理二進(jìn)制代碼,而不是人工編碼的文本文件——源代碼。這意味著系統(tǒng)可以在沒(méi)有開發(fā)人員幫助的情況下分析程序,這對(duì)于包含第三方程序的組件來(lái)說(shuō)非常重要,因?yàn)樗鼈兛赡軟](méi)有源代碼。但是二進(jìn)制代碼的推算比較困難,因?yàn)榕c源代碼不同,它沒(méi)有函數(shù),沒(méi)有局部變量,也沒(méi)有數(shù)據(jù)抽象。二進(jìn)制代碼有一個(gè)大的存儲(chǔ)區(qū)域和固定長(zhǎng)度的位向量——一種高效存儲(chǔ)位的數(shù)據(jù)結(jié)構(gòu)。你要變成一臺(tái)機(jī)器才能處理這些代碼,而且實(shí)際上,建造一臺(tái)可以在這些約束條件下工作的機(jī)器需要的工程量很大。
Mayhem 識(shí)別出一個(gè)漏洞后,會(huì)產(chǎn)生并運(yùn)行一段利用漏洞的代碼,也就是黑帽黑客可能用來(lái)入侵程序的代碼,證明可以利用漏洞獲得對(duì)操作系統(tǒng)的特權(quán)訪問(wèn)或根訪問(wèn)。結(jié)果是,Mayhem可以十分確定地標(biāo)識(shí)出漏洞,而不是像大多數(shù)代碼分析工具那樣僅僅標(biāo)記出可能會(huì)有問(wèn)題。
2014年,我們對(duì)Debian發(fā)行的每一個(gè)程序都進(jìn)行了一次Mayhem技術(shù)測(cè)試(Debian是世界各地臺(tái)式機(jī)和服務(wù)器上普遍使用的一個(gè)Linux版本)。Mayhem 發(fā)現(xiàn)了近1.4萬(wàn)個(gè)獨(dú)特漏洞,然后將漏洞列表縮小到250個(gè)值得優(yōu)先考慮的新漏洞。通過(guò)在亞馬遜云的大量服務(wù)器上部署Mayhem,整個(gè)測(cè)試不到一周就完成了,幾乎沒(méi)有人為干預(yù)。我們向Debian網(wǎng)絡(luò)社區(qū)提交了更重要的發(fā)現(xiàn)。我們將我們的研究剝離出來(lái)成立一家公司,就是為了當(dāng)我們分析成千上萬(wàn)程序并發(fā)現(xiàn)存在大量漏洞時(shí),能夠與開發(fā)人員一起有規(guī)模地開展工作。
2015年6月3日,100多位參賽者進(jìn)入資格賽,接到131項(xiàng)有特殊設(shè)置的挑戰(zhàn),每項(xiàng)挑戰(zhàn)都包含軟件安全漏洞。安全得分(以發(fā)現(xiàn)并修補(bǔ)漏洞為評(píng)判基礎(chǔ))最高的7支隊(duì)伍進(jìn)入了網(wǎng)絡(luò)超級(jí)挑戰(zhàn)賽決賽,F(xiàn)oAllSecure隊(duì)的得分是半決賽亞軍的兩倍多。短暫的喜悅很快過(guò)去,我們意識(shí)到壓力現(xiàn)在才真正來(lái)了!
采用Mayhem核心技術(shù),建立一個(gè)完全自動(dòng)化的網(wǎng)絡(luò)推理系統(tǒng)是一項(xiàng)艱巨的任務(wù)。我們之所以能夠完成,部分原因是美國(guó)國(guó)防部高級(jí)研究計(jì)劃局為所有7支入圍隊(duì)伍提供了充足的資金,供我們開展為期一年的開發(fā)工作。我們的核心組件包括將可執(zhí)行程序轉(zhuǎn)換為相對(duì)容易理解和分析的語(yǔ)言的工具集,還包括用于查找和利用漏洞的攻擊工具、自動(dòng)修補(bǔ)有缺陷的二進(jìn)制代碼的防御工具,以及有效協(xié)調(diào)各項(xiàng)工作的程序。
在準(zhǔn)備最后一輪比賽時(shí),我們面臨兩大挑戰(zhàn)。首先,雖然我們對(duì)Mayhem發(fā)現(xiàn)漏洞的能力感到滿意,但我們覺(jué)得打補(bǔ)丁還不夠有效。在比賽中,就像在現(xiàn)實(shí)生活中一樣,你不愿意多耗費(fèi)處理能力去為一個(gè)不值得解決的問(wèn)題安裝補(bǔ)丁。因此,我們花了大量時(shí)間開發(fā)自動(dòng)漏洞補(bǔ)丁,一般情況下其執(zhí)行時(shí)間比例介于0到5%之間。
其次,我們需要一個(gè)戰(zhàn)略來(lái)打贏這場(chǎng)比賽。比如說(shuō)發(fā)現(xiàn)漏洞和打補(bǔ)丁。如果打補(bǔ)丁需要增加太多的執(zhí)行時(shí)間,從而使程序速度變慢,你可能不希望立即啟用補(bǔ)丁。相反,有時(shí)最好等待,只在絕對(duì)必要的時(shí)候才打補(bǔ)丁。我們開發(fā)了一個(gè)專家系統(tǒng)來(lái)決定何時(shí)打補(bǔ)丁。
2016年8月5日,當(dāng)我們的團(tuán)隊(duì)走進(jìn)拉斯維加斯的宴會(huì)廳參加最后一場(chǎng)比賽時(shí),我們看到在一個(gè)大舞臺(tái)上有7個(gè)燈光閃爍的龐大機(jī)架,下面是180噸水,用于保持各隊(duì)的計(jì)算機(jī)處于冷卻狀態(tài)。在比賽開始的前一天晚上,參賽者安裝好這些機(jī)器,然后美國(guó)國(guó)防部高級(jí)研究計(jì)劃局切斷了對(duì)它們的所有訪問(wèn)。這些機(jī)器是被氣隙隔離的——它們與外界沒(méi)有聯(lián)系。我們唯一能做的就是看著Mayhem不停地工作,觀察各個(gè)系統(tǒng)機(jī)架報(bào)告的電源使用情況和系統(tǒng)溫度統(tǒng)計(jì)數(shù)據(jù)。Mayhem一直是7臺(tái)參賽計(jì)算機(jī)中最努力的——這是一個(gè)好跡象,至少我們希望如此。
在近100輪的比賽中,新程序被分到各參賽系統(tǒng),機(jī)器只有幾分鐘的時(shí)間來(lái)分析代碼尋找漏洞,并迅速發(fā)布防護(hù)補(bǔ)丁。每一輪都根據(jù)機(jī)器發(fā)現(xiàn)和證實(shí)漏洞的能力以及補(bǔ)丁的性能來(lái)打分。
為了使“網(wǎng)絡(luò)超級(jí)挑戰(zhàn)賽”最后一場(chǎng)比賽令觀眾覺(jué)得更加刺激,比賽組織方?jīng)Q定,只有在比賽結(jié)束時(shí)才逐場(chǎng)報(bào)告得分。這意味著我們不知道我們是領(lǐng)先還是落后,只能看著Mayhem 提交它發(fā)現(xiàn)的漏洞。然而,在比賽進(jìn)行了幾個(gè)小時(shí),在第40輪比賽之后,我們發(fā)現(xiàn)Mayhem停止了提交漏洞。程序崩潰了。
━━━━
我們的肚子好像挨了一記重拳,噩夢(mèng)成真。我們請(qǐng)求組織方重新啟動(dòng),但他們不允許。比賽還剩一半,我們開始考慮失敗的恥辱。
最后一輪結(jié)束時(shí),逐場(chǎng)解說(shuō)開始了,絢麗的可視化效果展示了每個(gè)團(tuán)隊(duì)的機(jī)器是如何在幾秒內(nèi)發(fā)現(xiàn)和修復(fù)安全缺陷的,相比之下,人工團(tuán)隊(duì)可能需要花費(fèi)數(shù)月或數(shù)年的時(shí)間。觀眾超過(guò)5000人,由一位天體物理學(xué)家和多位黑客明星擔(dān)任嘉賓評(píng)論員,攪得觀眾群情激動(dòng)。我們鼓足勇氣看屏幕,準(zhǔn)備聽人宣布并確認(rèn)我們的失敗。
然而,當(dāng)我們看到每一輪比賽的比分不斷出現(xiàn)時(shí),我們突然發(fā)現(xiàn),雖然Mayhem在第40輪之后就停止了比賽,但領(lǐng)先優(yōu)勢(shì)足以讓它保持在第一位。當(dāng)最后一輪比賽結(jié)果宣布時(shí),我們肩上的重?fù)?dān)卸下了。我們贏了。
美國(guó)國(guó)防部高級(jí)研究計(jì)劃局的項(xiàng)目主管邁克?沃克(Mike Walker)表示,比賽展示的網(wǎng)絡(luò)自動(dòng)防御“只是軟件安全革命的開端”。他將比賽的成果比作萊特兄弟的首次飛行,他們雖然沒(méi)有飛很遠(yuǎn),但指明了洲際航行的路線。
目前,F(xiàn)orAllSecure正在向早期采用者(包括美國(guó)政府和高技術(shù)公司及航空航天行業(yè)的公司)銷售其新服務(wù)的首個(gè)版本。在這個(gè)階段,我們的服務(wù)主要是指出問(wèn)題,然后由人工專家參與解決。在未來(lái)的一段時(shí)間里,像Mayhem 這樣的系統(tǒng)將與人工安全專家合作,讓世界上的軟件更加安全。在更遠(yuǎn)的將來(lái),我們相信機(jī)器智能將獨(dú)自處理這項(xiàng)工作。
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2909文章
44726瀏覽量
374374 -
醫(yī)療設(shè)備
+關(guān)注
關(guān)注
12文章
954瀏覽量
66877 -
自動(dòng)駕駛
+關(guān)注
關(guān)注
784文章
13848瀏覽量
166579
原文標(biāo)題:白帽黑客機(jī)Mayhem如何贏得DARPA“網(wǎng)絡(luò)超級(jí)挑戰(zhàn)賽”的故事
文章出處:【微信號(hào):IEEE_China,微信公眾號(hào):IEEE電氣電子工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論