欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

防止Stack smash的技术

发布时间:2025/3/21 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 防止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的技术的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。