防止Stack smash的技术
快速鏈接:
.
👉👉👉 個(gè)人博客筆記導(dǎo)讀目錄(全部) 👈👈👈
防止Stack smash attack 或 buffer overflow的方法:
-
(1)、部署 Canary 漏洞緩解措施
GCC編譯器默認(rèn)開(kāi)啟該機(jī)制,可加-fno-stack-protector 關(guān)閉該機(jī)制
原理: 其實(shí)就是在ebp之前(aarch64應(yīng)該叫FP之前)加入一個(gè)canary值,如果發(fā)生了Stack smash attack對(duì)return addr的攻擊,那么canary的值勢(shì)必也會(huì)被修改。所以在程序返回時(shí)通過(guò)監(jiān)測(cè)canary的值是否被修改來(lái)判斷是否遭受了Stack smash attack攻擊
-
(2)、ShadowCallStack
使用Clang編譯器,加入-fsanitize=shadow-call-stack編譯選項(xiàng),即可開(kāi)啟ShadowCallStack
其原理就是在子函數(shù)進(jìn)入時(shí),將return addr也保存到[X18]處,在子函數(shù)返回時(shí)LR寄存器從[X18]恢復(fù)
-
(3)、PAC:Pointer authentication和BTI:Branch target instructions介紹
-
(4)、ALSR
其它的一些安全技術(shù)
- BTI:Branch target instructions
- MTE
backup
Stack smash attack的示例
部署 Canary 漏洞緩解措施
ShadowCallStack
PAC:Pointer authentication和BTI:Branch target instructions介紹
總結(jié)
以上是生活随笔為你收集整理的防止Stack smash的技术的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Could not import ext
- 下一篇: optee中断处理的介绍(概念篇)