[讀書筆記]捉蟲日記

(書生注:這本書站在捉蟲人的角度看問題,能夠帶給編程人員新的認識和角度。
 編程

總結一下能夠看出,做者發現的bug都是特別簡單的case。
  多數都是用戶輸入數據檢查不足/類型轉換問題/測試用例分支不足等,
  致使的溢出/空指針訪問/非法地址訪問等。)

第1章 捉蟲

第2章 回到90年代

[漏洞]
未驗證用戶數據,致使棧緩衝區溢出
[利用手段]
控制用戶數據(長度與內容)使其覆蓋EIP

第3章 突破區域限制

[漏洞]
返回值(出力值)有兩個且有可能返回狀態不一致(覆蓋測試不充分),致使空指針解引用
[利用手段]
(非特權用戶)在零頁內存空間中填充設計好的數據,控制解引指針指向結構體的函數指針地址,並在該函數執行時獲取控制權

第4章 空指針萬歲

[漏洞]
用戶數據的不當類型轉換致使可能跳過內存分配處理,致使程序試圖在空地址(NULL)的必定偏移位置(一樣受用戶數據影響控制)寫入用戶數據
[利用手段]
控制用戶數據使其跳過內存分配處理並在指定位置(下一個調用的庫函數地址,GOT)寫入控制數據

第5章 瀏覽即遭劫持

[漏洞]
ActiveX控件提供的可調用接口存在缺陷,沒有對用戶數據進行驗證,在過長的狀況下會致使棧緩衝區溢出
[利用手段]
控制用戶數據覆蓋楨棧返回地址(EIP)(上一層調用函數執行處)

第6章 一個內核統治一切

[漏洞]
應用程序裝載的驅動程序能夠接受任意非特權用戶發送的請求,並根據用戶數據覆寫內存中的數據
[利用手段]
控制用戶數據發送給驅動程序,使其覆蓋指定位置(函數指針地址)的值,從而在應用程序執行時(經過驅動程序)控制EIP

第7章 比4.4BSD還老的BUG

[漏洞]
內核響應(非受權)用戶的IOCTL請求時,對用戶數據檢查不充分(類型轉換可能產生的負數狀況)致使非法地址的訪問
[利用手段]
控制用戶數據,使其執行指定地址的函數指針(須事先將執行代碼地址裝載入內核內存空間)來控制EIP

第8章 鈴音大屠殺

[漏洞]
(猜測)對用戶數據缺少驗證致使memcpy時棧緩衝區溢出
[利用手段]
控制用戶數據覆蓋函數調用楨棧返回位置從而控制pc

附錄A 捉蟲提示

[常見的漏洞]
  • 棧緩衝區溢出
  • 空指針解引用
  • 不當類型轉換
[一種利用手段]
  • GOT(Global Offset Table)地址覆寫

附錄B 調試

[經常使用調試手段]
  • mdb
  • WinDbg
  • VMWare + WinDbg經過管道調試Windows內核
  • gdb
  • Linux + gdb遠程調試Mac OS X內核

附錄C 緩解技術

[常見緩解方法]
  • 地址空間佈局隨機化(ASLR)
  • 安全cookie(/GS),棧緩衝區溢出保護(SSP),Stack Canaries
  • 數據執行保護(DEP),不可執行內存保護(NX)
  • RELRO能夠保護進程的數據段及GOT入口地址
  • Solaris Zone的可靠性創建在內核自己的可靠性上
相關文章
相關標籤/搜索