防止Stack smash的技术

快速链接:
.
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈

防止Stack smash attack buffer overflow的方法:

  • (1)、部署 Canary 漏洞缓解措施
    GCC编译器默认开启该机制,可加-fno-stack-protector 关闭该机制
    原理: 其实就是在ebp之前(aarch64应该叫FP之前)加入一个canary值,如果发生了Stack smash attackreturn 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介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码改变世界ctw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值