自動評估堆溢出的崩潰

来源:https://www.cnblogs.com/Kluas/archive/2018/10/10/9769492.html
-Advertisement-
Play Games

文獻鏈接:http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8115640&isnumber=8115603 一.背景介紹 基於堆的緩衝區溢出是最近安全事件中被廣泛利用的漏洞之一。攻擊者可以利用高風險堆溢出錯誤來執行任意代碼或者泄露敏感信 ...


文獻鏈接:http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8115640&isnumber=8115603

一.背景介紹

基於堆的緩衝區溢出是最近安全事件中被廣泛利用的漏洞之一。攻擊者可以利用高風險堆溢出錯誤來執行任意代碼或者泄露敏感信息(例如密碼和加密秘鑰),而低風險的溢出可能只會導致拒絕服務攻擊(DoS),鑒於每年報告的的堆溢出錯誤數量很大,因此高效地評估其嚴重性,以便將資源分配給高風險的資源,及時的分析和修補,嚴重性體現在可利用性(可以利用堆溢出錯誤來啟動攻擊執行任意代碼)。

演示漏洞可利用性的最終方法就是生成working exploits。以前的工作文獻[1],[2],[3],[4]研究自動生成exploits的實際可行性。一種機制是象徵性地執行整個程式並將整個約束捕獲為謂詞,然後通過解決約束來生成working exploits。AEG[1]和Mayhem[2]是此類別中的代表。儘管使用漏洞利用生成作為評估方法是準確的,但是由於程式分析技術的限制,它們無法為所有潛在的漏洞生成exploits。

另一種方法評估方法是分析崩潰點(導致程式崩潰的指令)後的執行代碼,例如Microsoft開發的!exploitable工具檢查與崩潰點相同的基本塊中的所有指令,來查找漏洞利用點——可利用的特殊用途指令,如控制流轉指令(call,jmp)或者影響條件的指令(cmp後跟jnz)。CRAX[3]採用這兩種技術的混合方法:從崩潰點開始,它象徵性地執行程式以便找到漏洞利用點。這類解決方案的弱點在於結果的正確性。這種崩潰通常會影響原來程式的行為,阻止了這些技術繼續找到其他任何可利用的點。此外,這些工具在發生崩潰的時停止工作,從而導致錯過潛在的漏洞利用點。

這篇文獻主要貢獻是:提出了一組度量來量化堆溢出的可利用性,這是一種旨在自動評估堆溢出可利用性的方法。

基於兩個指標:攻擊指標可行性指標。前者是為了測量堆溢出的潛在威脅,後者則是構建實際工作漏洞的具體困難基於這些指標,作者提出了一個框架HCSIFTER,用於自動評估堆溢出崩潰。這個框架通過動態程式分析準確檢測堆溢出錯誤。它跟蹤所有堆對象並檢查相關操作以檢查出超出範圍的堆記憶體訪問。檢測發生在崩潰點實際執行(導致堆溢出的指令)之前,為了提取溢出對程式執行的影響,HCSIFTER在損壞的記憶體區域中動態的執行數據恢復,以便程式能夠繼續正常執行分析,這是在堆溢出發生後繼續執行的而不發生任何崩潰的關鍵步驟(也是與其他動態方法相比的不同之處),在動態後續執行期間,HCSIFTER會跟蹤所有恢復記憶體區域,並根據漏洞利用模式檢測漏洞。作者還確定了幾種新的策略,使HCSIFTER能夠檢測其他技術遺漏的漏洞點。

在這篇文獻中,作者的目標是評估給定崩潰的單一路徑。如果存在多個路徑,他們的技術可以分別應用於每個路徑。使用模糊測試工具,或者符號執行工具,可以找到崩潰的其他執行路徑。

二.最終成果

1.作者提出了一套新的度量標準來量化堆溢出的嚴重性。他們的指標衡量了將崩潰轉化為漏洞的難度級別,包括潛在的攻擊方面和可行性方面。

2.作者設計並實現了一個原型工具HCSIFTER,它根據作者的指標自動評估給定堆溢出的可利用性。HCSIFTER引入了動態記憶體恢復和二階溢出,以自動評估漏洞利用生成的難度。

3.作者使用真實易受攻擊的程式評估了HCSIFTER。結果證明瞭它的有效性和效率性。

三.相關工作

這篇文獻主要涉及兩個方面:第一個是自動生成開發,第二個是檢測軟體溢出,特別是本文所關註的堆溢出。

自動開發生成:文獻[20]提出了第一個基於補丁的自動利用軟體漏洞。後來,通過整合預處理的符號執行和動態指令儀器,文獻[1]實現了第一個用於全自動漏洞利用生成的端到端系統。實際上,程式源代碼通常不可用。因此需要基於二進位代碼的漏洞利用生成,文獻[2]是第一個實際對二進位程式自動生成利用的人。文獻[21]進一步的目標是基於控制流劫持和重定向為給定的易受攻擊的程式生成多個漏洞利用。文獻[4]的目標是通過搜索加入程式數據流的方式自動生成面向數據的漏洞利用。

檢測堆溢出:文獻[22]建議在堆的頭部或尾部附加額外的保護數據以檢測緩衝區溢出。在緩衝區溢出期間,保護數據被破壞,然後就可以被檢測到(類似security_cookie和cannary)。除了保護數據外,還可以分配不可訪問的記憶體頁來檢測緩衝區溢出(文獻[23]),Low-fat指針[24]採用一種方法來檢測運行時堆溢出,它對地址中的堆對象信息進行編碼。傳播信息,並檢測緩衝區溢出。

與本文獻最相關的工作是由文獻[25]提出來的,這是基於二進位數據結構的逆轉,該方法為不同的堆分配不同的顏色並監視每個堆訪問。然而,這種方法嚴重依賴於二進位數據反轉,這將導致不精確(即錯誤否定)。

參考文獻鏈接:

1. T. Avgerinos, S. K. Cha, B. L. T. Hao, D. Brumley, "AEG: Automatic Exploit Generation", Proceedings of the 18th Annual Network and Distributed System Security Symposium, 2011.

2. S. K. Cha, T. Avgerinos, A. Rebert, D. Brumley, "Unleashing Mayhem on Binary Code", Proceedings of the 33rd IEEE Symposium on Security and Privacy, 2012.

3. S. K. Huang, M. H. Huang, P. Y. Huang, C. W. Lai, "CRAX: Software Crash Analysis for Automatic Exploit Generation by Modeling Attacks as Symbolic Continuations", Proceedings of the 6th International Conference on Software Security and Reliability, 2012.

4. H. Hu, Z. L. Chua, S. Adrian, P. Saxena, Z. Liang, "Automatic Generation of Data-Oriented Exploits", Proceedings of the 24th USENIX Security Symposium, 2015.

5. !exploitable Crash Analyzer, [online] Available: http://msecdbg.codeplex.com/.

 

20. D. Brumley, P. Poosankam, D. Song, J. Zheng, "Automatic Patch-Based Exploit Generation is Possible: Techniques and Implications", Proceedings of the 29st IEEE Symposium on Security and Privacy, 2008.

21. M. Wang, P. Su, Q. Li, L. Ying, Y. Yang, D. Feng, "Automatic Polymorphic Exploit Generation for Software Vulnerabilities", Proceedings of the 9th International Conference on Security and Privacy in Communication Networks, 2013.

22. W. Robertson, C. Kruegel, D. Mutz, F. Valeur, "Run-time Detection of Heap-based Overflows", Proceedings of the 17th USENIX Conference on System Administration, 2003.

23. S. Sidiroglou, G. Giovanidis, A. D. Keromytis, "A Dynamic Mechanism for Recovering from Buffer Overflow Attacks", Proceedings of the 8th International Conference on Information Security, 2005.

24. G. J. Duck, R. H. C. Yap, "Heap Bounds Protection with Low Fat Pointers", Proceedings of the 25th International Conference on Compiler Construction, 2016.

25. A. Slowinska, T. Stancescu, H. Bos, "Body Armor for Binaries: preventing buffer overflows without recompilation", Proceedings of the Usenix Technical Conference, 2012.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用vs code開發紙殼CMS,在編輯Razor視圖時,啟用智能提示。之前使用vs code在編輯Razor(cshtml)時,並沒有智能提示,所以一直沒有使用vs code來做.net core的開發。 ...
  • 這個也是比較容易翻車的東西,記錄一下 補充點內容差點忘了:C#裡面 棧是編譯期間就分配好的記憶體空間,因此你的代碼中必須就棧的大小有明確的定義;局部值類型變數、值類型參數等都在棧記憶體中。 堆是程式運行期間動態分配的記憶體空間,你可以根據程式的運行情況確定要分配的堆記憶體的大小。 堆 1,有人老是搞不明白堆 ...
  • 碰到這個問題兩次了,翻了兩次車的情況下總結一下裝箱和拆箱,這裡呢涉及到兩個東西,值類型還有引用類型 值類型是什麼:C#中的多數基本類型都是值類型,值類型包括簡單類型,枚舉類型,結構類型 引用類型是什麼:引用類型表示指向數據的指針或引用,可存儲對實際數據的引用。引用類型 在記憶體中的存儲位置僅包含堆上對 ...
  • 最近也研究了一段時間的IdentityServer4,園裡關於IdentityServer的文章也很多,這裡也簡單寫寫,做做記錄(文筆不佳,見諒)。 1.identityserver是什麼? Identityserver是一個OpenID Connect和OAuth 2.0框架。它實現了這兩種協議流 ...
  • 1. 更新站點修改 由於之前說過,安裝Jenkins後首次訪問時由於其他原因【具體未知】會產生離線問題。網上找了個遍還是不能解決,所以只能跳過常用插件安裝這步。進入Jenkins後再安裝這些插件。 在安裝插件前,先修改“更新站點”信息,如下: 站點信息從:https://updates.jenkin ...
  • 經歷一次莫名其妙的懵逼系統崩潰後,我對破解軟體/激活軟體終於有了陰影,想想就想哭,不過怨不了別人,鍋不能隨便甩,怪自己粗心大意,怪自己太懶嗚嗚嗚... 所以有心將這次心路歷程記錄下來,謹防自己下次再犯無腦錯誤!!! 事件起因:為了激活matlab r2017b,在網上找啊找,我知道要激活需要的還是許 ...
  • ssh服務突然連接不了案例總結 一臺Oracle資料庫伺服器(Linux版本為Oracle Linux Server release 5.7)今天中午突然出現短暫的ssh連接不上的情況,ssh連接不上的時候,ping伺服器正常,使用psping檢測埠22也是正常(只返回5個包,沒有持續ping),... ...
  • 1. 安裝的需求背景 我們知道ifconfig 命令可以用於查看、配置、啟用或禁用指定網路介面,如配置網卡的IP地址、掩碼、廣播地址、網關等,功能不可謂不豐富。 此命令的功能和windows系統的ipconfig非常類似。 但是,centos 7 預設已不再安裝此命令,其中很多功能用 ip addr ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...