CFI 选项:-fsanitize=cfi-nvcall

CFI 选项:-fsanitize=cfi-nvcall
cfi-nvcall 选项在精神上类似于 cfi-vcall 选项,除了它适用于非虚拟呼叫。关键区别在于非虚拟调用是在编译时静态已知的直接调用,因此这种保护严格来说不是控制流完整性问题。cfi-nvcall 选项的作用是识别非虚拟调用并确保运行时调用对象的类型可以从编译时已知的对象类型派生。

简单来说,想象一个Balls 的类层次结构和一个 s 的类层次结构Brick。使用 cfi-nvcall,编译时调用Ball::Throw可能会执行Baseball::Throw,但永远不会执行Brick::Throw,即使攻击者用对象替换了Brick对象Ball。

cfi-nvcall 修复的情况可能来自内存损坏、类型混淆和反序列化。虽然这些实例不允许攻击者自行重定向控制流,但这些错误可能会导致仅数据攻击,或导致足够多的不当行为以允许未来的错误起作用。这种使用纯数据漏洞的攻击在 cfi-nvcall 示例中显示:使用低权限用户对象代替高权限管理员对象,导致应用程序内权限升级。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值