1. 程式人生 > >Double fetch漏洞挖掘技術

Double fetch漏洞挖掘技術

捕捉 多進程 google ace com 線性 ges 分析 51cto

本篇主要給大家科普Double fetch漏洞通用挖掘技術。

什麽是Double fetch?

Double fetch類型漏洞產生於多線程數據訪問時,並且沒有做必要的安全同步措施。多線程時,對同一數據一個線程讀一個線程寫,可能引起數據訪問異常,而這個異常如果能被利用,這就是一個漏洞。

典型的情況,一個數據ring3應用訪問,ring0也能訪問,如果沒有同步安全措施,可能會引起系統崩潰。

技術分享圖片

Double Fetch原理(圖片來自網絡,如有侵權,聯系秒刪)

技術探討一

Google公司開源的bochspwn。

Bochspwn是在boch源碼基礎上修改,能夠捕捉double fetch漏洞。

Bochspwn主要用到bx_instr_lin_access這個boch的api。

看下boch文檔的介紹,這個回調是當模擬器有線性內存訪問時會觸發。

技術分享圖片

Boch中原api實現:

技術分享圖片

Bochspwn中bx_instr_lin_acess的實現,當ring0層代碼訪問ring3數據時,對應的指令會被bochspwn記錄下來。

技術分享圖片
技術分享圖片

技術探討二

利用intel pt技術特性挖掘。

技術分享圖片

按intel pt官方文檔介紹,intel pt可以在硬件層記錄程序的執行流程。

技術分享圖片

Pt可以對內核地址,多進程追蹤 。pt不需要對系統打補丁,就可以對內核及應用進行動態分析。利用這一特性,找double fetch這類漏洞應該是可行的。

總結

以上探討兩種double fetch漏洞挖掘技術,pt是基於硬件,速度更優於模擬器。

本篇更傾向科普,同時也感謝開源給我們帶來的技術進步,感謝前輩們的技術分享。

四維創智***實驗室原創文章 轉載請註明來源

技術分享圖片

Double fetch漏洞挖掘技術