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