Double fetch漏洞挖掘技術

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

什麼是Double fetch?

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

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

Double fetch漏洞挖掘技術

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

技術探討一

Google公司開源的bochspwn。

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

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

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

Double fetch漏洞挖掘技術

Boch中原api實現:

Double fetch漏洞挖掘技術

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

Double fetch漏洞挖掘技術
Double fetch漏洞挖掘技術

技術探討二

利用intel pt技術特性挖掘。

Double fetch漏洞挖掘技術

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

Double fetch漏洞挖掘技術

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

總結

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

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

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

Double fetch漏洞挖掘技術

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章