防止Stack smash的技术
快速链接:
.
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈
防止Stack smash attack 或 buffer overflow的方法:
-
(1)、部署 Canary 漏洞缓解措施
GCC编译器默认开启该机制,可加-fno-stack-protector 关闭该机制
原理: 其实就是在ebp之前(aarch64应该叫FP之前)加入一个canary值,如果发生了Stack smash attack对return addr的攻击,那么canary的值势必也会被修改。所以在程序返回时通过监测canary的值是否被修改来判断是否遭受了Stack smash attack攻击
-
(2)、ShadowCallStack
使用Clang编译器,加入-fsanitize=shadow-call-stack编译选项,即可开启ShadowCallStack
其原理就是在子函数进入时,将return addr也保存到[X18]处,在子函数返回时LR寄存器从[X18]恢复
-
(3)、PAC:Pointer authentication和BTI:Branch target instructions介绍
-
(4)、ALSR
其它的一些安全技术
- BTI:Branch target instructions
- MTE
backup
Stack smash attack的示例
部署 Canary 漏洞缓解措施
ShadowCallStack
PAC:Pointer authentication和BTI:Branch target instructions介绍
总结
以上是生活随笔为你收集整理的防止Stack smash的技术的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Could not import ext
- 下一篇: optee中断处理的介绍(概念篇)