防止stack buffer overflows攻击的方法 : Canary 漏洞缓解机制
生活随笔
收集整理的這篇文章主要介紹了
防止stack buffer overflows攻击的方法 : Canary 漏洞缓解机制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈
Linux 系統中,為了防御棧溢出漏洞的利用,通常會部署 Canary 漏洞緩解措施.
下面簡單描述下 Canary 的原理。對于棧溢出漏洞的利用,最簡單的方法就是通過溢出數據修改棧中函數返回地址為目標內存地址,當函數返回時將會跳轉到目標內存處執行指令,從而實現控制流劫持。為了防御這種利用方法,分配棧空間時在 EBP-4 的位置存放一個 Canary 值,函數返回之前會校驗該值是否被修改,若檢測到被修改則調用 __stack_chk_fail 函數拋出異常并結束進程。可見,要覆蓋函數返回地址必須修改 Canary,從而可防御該攻擊方法。gcc 編譯器默認開啟該緩解機制,編譯時可用 -fno-stack-protector 選項關閉該機制。
libc 中 __stack_chk_fail 的源碼如下,該函數調用 __fortify_fail 輸出異常信息,其中包含 libc_argv[0] 指向的程序名:
參考
棧溢出 Stack smash 利用
總結
以上是生活随笔為你收集整理的防止stack buffer overflows攻击的方法 : Canary 漏洞缓解机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 防止stack buffer overf
- 下一篇: [architecture]-armv8