演講嘉賓 | 張 超
回顧整理 | 廖 濤
排版校對 | 李萍萍
嘉賓簡介
張超,博士,清華大學網絡研究院副院長,長聘副教授,華為冠名教授,藍蓮花戰隊教練,CCF杰出會員。曾獲得清華大學學術新人獎、國家級青年人才、MIT TR35 China、求是杰出青年學者、中國科協青托等獎勵和榮譽。兼任中國青年科技工作者協會理事、中國指揮與控制學會理事、中國人工智能學會人工智能與安全專委會常務委員、中國計算機學會218Club執行委員等。主要研究軟件和系統安全,尤其是智能漏洞攻防方向。主持承擔國家重點研發計劃等20多個項目。研究成果獲得騰訊安全探索論壇突破獎、微軟BlueHat防御競賽特別提名獎、華為優秀合作獎,研發的自動攻防系統獲得美國國防部DARPA CGC機器自動攻防競賽初賽防御第一、決賽攻擊第二。
內容來源
第一屆開放原子開源基金會OpenHarmony技術峰會——安全及機密計算分論壇
視頻回顧
打開 嗶哩嗶哩APP 搜索 OpenHarmony-TSC 視頻更清晰
正 文 內 容
漏洞的存在給用戶帶來了嚴峻的安全風險。漏洞層出不窮,一個小小的安全漏洞卻足以攪動整個軟件或互聯網產業發生地震。目前,漏洞從被初始發現到被預警和治理仍存在較大空檔期,該空檔期為黑客攻擊提供了便利條件。系統軟件漏洞挖掘是保障網絡安全的重要一環,目前有哪些挑戰和應對方案呢?清華大學長聘副教授、博導,藍蓮花戰隊教練張超在第一屆OpenHarmony技術峰會上分享了精彩觀點。
01?
網絡安全與漏洞挖掘
漏洞是網絡空間重要安全威脅,攻擊者可以利用漏洞來執行各種攻擊,例如拒絕服務攻擊、遠程執行代碼攻擊、身份驗證繞過攻擊等。比較著名的由漏洞造成的網絡安全攻擊事件有震網病毒 (伊朗核設施)、電網斷電(烏克蘭)、WannaCry (香菇勒索軟件,150+國家)、MIRAI 僵尸網絡、幽靈、熔斷(CPU)等。
漏洞挖掘技術的發展歷史可以分為4個階段:(1)人工審計:通過人工進行源代碼審計、逆向工程,基于經驗規則來挖掘漏洞,但是依賴經驗且無法擴展;(2)規則掃描:通過靜態分析、符號執行和模型檢驗等手段,依據定制規則掃描漏洞,誤報概率高且可擴展性差;(3)動態測試:從攻擊者的角度出發,通過隨機畸形測試例,模擬攻擊者構造輸入等手段觸發漏洞,漏報概率高且覆蓋率低;(4)智能挖掘:通過知識與數據驅動、遺傳進化算法等手段,智能引導漏洞挖掘方向,能夠更好地應對層出不窮的新型漏洞以及大型復雜軟件系統的應用場景,并且可以減少人力的投入以及由于人工主觀性、分析不完備帶來的誤報和漏報。
02?
智能模糊測試方案
模糊測試作為一種自動化動態測試方法,向系統注入非法、畸形或非預期的輸入,以揭示軟件缺陷和漏洞。模糊測試是當前漏洞挖掘的主要技術,有助于發現系統中的未知漏洞和弱點,防止潛在的零日攻擊。然而,僅靠模糊測試無法全面了解整個安全威脅或bug,且在漏洞隱藏較深的場景下模糊測試的效果并不好。
模糊測試過程可以看做一種搜索問題,目標是在無窮的測試例空間中尋找符合條件的測試例(即能夠觸發漏洞的輸入),可以使用優化算法來提升效率。其中,遺傳算法是一種基于生物進化原理的優化算法,模擬了自然界中的遺傳、變異、適應和選擇等過程,通過不斷地迭代和優化,尋找最優解或次優解。將遺傳算法與模糊測試結合的智能模糊測試方案,通過測試例篩選、進化,在漏洞挖掘上取得了很好的效果,也吸引了許多領域內的專家學者進行相關研究。
在智能模糊測試的研究上,張超教授所在團隊從知識驅動、數據驅動以及混合技術三個維度進行改進設計,具體如下:
2.1??
知識驅動
模糊測試搜索測試例時存在較大隨機性,例如通過隨機的方式對測試例進行變異,導致搜索過程具有一定的盲目性。基于專家知識進行驅動,可以引導模糊測試往特定的方向搜索,可以有效提升測試過程的代碼覆蓋率,獲得更好的漏洞檢測效果。其中,專家知識包含控制流知識、數據流知識、測試接口知識、硬件外設知識、程序狀態知識以及漏洞知識等。
控制流敏感的模糊測試方法:CollAFL及CollAFL-bin。現有模糊測試方案代碼覆蓋率跟蹤存在哈希碰撞問題,導致覆蓋率(控制流信息)記錄不準確;現有的種子選擇方案沒有充分考慮覆蓋率(控制流信息),導致測試過程中覆蓋率提升緩慢。該方法的主要策略為:基于控制流知識更新哈希公式和選擇種子進行變異,優先選擇未覆蓋分支數最多的種子。
數據流敏感的模糊測試方法:GreyOne。傳統模糊測試關注覆蓋率(控制流),忽略了程序的數據流約束(如校驗和、幻數等檢查)。該方法的主要策略為:提取程序數據流知識(污點關系、分支約束匹配度),指導模糊測試變異、進化方向。
測試接口敏感的模糊測試方法:FANS。Android系統服務通過IPC機制(binder)為用戶提供服務,測試接口以及接口間依賴關系十分復雜,盲目fuzzing測試效率低。該方法的主要策略為:通過靜態分析Android源代碼AST,提取/推斷各服務的接口及接口間的依賴關系,指導測試例生成。
外設自動模擬的驅動模糊測試方法:PrIntFuzz。驅動程序代碼量大、漏洞多,但是驅動的執行依賴于外設交互。實際測試環境下,缺少大量的外設。能不能自動模擬大量的外設(惡意外設),與驅動進行交互并測試?該方法的主要策略為:從驅動代碼中提取外設知識(數據約束、I/O模型、配置約定),基于提取的知識自動模擬外設。
狀態敏感的模糊測試方法:StateFuzz。覆蓋率引導的模糊測試是主流方案,但是覆蓋率進化指標存在局限性,可以考慮其他進化指標。其中,程序是個狀態機,其狀態可以作為重要的進化指標。該方法的主要策略為:從驅動代碼識別動作,進而識別共享變量/狀態,追蹤狀態覆蓋率,引導測試。
時序堆內存漏洞的模糊測試方法:HTFuzz。時序堆內存漏洞(如UAF)依賴于特定內存操作序列,傳統的fuzzing技術并未跟蹤內存操作序列,無法有效挖掘該類型漏洞。如何高效追蹤內存操作序列、分析堆對象別名、引導測試方向?該方法的主要策略為:在內存訪問點,記錄當前trace中最后N個對操作序列哈希值(類似在每個基本塊處記錄邊覆蓋率),以此為反饋信號,引導模糊測試過程更高效觸發時序堆漏洞。
2.2??
數據驅動
基于歷史表現的智能變異調度方法:MOpt。變異算法(算子)眾多,不同算子對于不同的種子效率各不相同,如何選擇最優變異算子?該方法的主要策略為:基于各變異算子的歷史表現,評估各算子的最佳選擇概率,采用粒子群優化PSO算法尋找動態最優解。
基于輸入格式智能逆向的模糊測試方法:AIFORE。如何識別程序的輸入格式,指導fuzzers生成符合程序預期的測試例,更好地測試目標程序?該方法的主要策略為:每個字段有相應的處理代碼,字段邊界/類型與代碼片段強相關,通過構建人工智能模型對代碼片段的功能進行分類,來識別字段類型,從而識別輸入格式,進而指導模糊測試。
2.3??
混合技術
除了模糊測試技術之外,還有一些傳統的漏洞挖掘技術,其中一些技術可以與符號執行技術進行融合,這種混合技術也具有較好的漏洞挖掘效果。
基于堆溢出漏洞建模的漏洞挖掘方案:HOTracer。模糊測試方案主要關注程序路徑覆蓋率,難以滿足單條路徑中數據約束,忽略值空間覆蓋率。該方法的主要策略為:在模糊測試得到的程序路徑上,分析其可能的堆溢出漏洞,利用符號執行求解。
基于污點分析的物聯網漏洞挖掘方案:SaTC。物聯網設備通常包括Web前端(管理功能)和二進制后端(系統執行),傳統fuzzing難以有效測試。該方法的主要策略為:前端與后端通常共享某些關鍵字符串(比如輸入字段名字),可以作為污點分析的source點,進而跟蹤其是否到達潛在的危險操作(sink點)來識別潛在漏洞。
03?
漏洞挖掘技術發展與展望
智能模糊測試是當前最有效的漏洞挖掘方案,基于遺傳算法的灰盒模糊測試在實踐中取得了極大成功。除了在知識驅動、數據驅動以及混合技術輔助三個角度進行模糊測試改進,未來在廣度目標支持、測試效率優化、遺傳進化方向以及漏洞捕獲能力等維度仍有很大的提升空間。
期待更多人關注網絡安全領域相關技術發展,也歡迎感興趣的伙伴共同加入到漏洞挖掘技術的研究中來。
E N D
點擊下方閱讀原文獲取演講PPT。
關注我們,獲取更多精彩。
審核編輯 黃宇
-
互聯網
+關注
關注
54文章
11184瀏覽量
103656 -
網絡安全
+關注
關注
10文章
3191瀏覽量
60075 -
數據驅動
+關注
關注
0文章
128瀏覽量
12372 -
OpenHarmony
+關注
關注
25文章
3744瀏覽量
16477
發布評論請先 登錄
相關推薦
評論