40、机器代码类型状态检查:提升安全性与效率

机器代码类型状态检查:提升安全性与效率

1. 引言

在软件开发中,将不可信的外部机器代码加载到可信的主机系统中是一个常见但充满风险的操作。这里的“安全”意味着程序要遵守主机端提供的内存访问策略。我们的目标是静态检查这种加载操作是否安全,从普通的机器代码入手,机械地合成并验证安全证明。

早期的工作基于类似 C 的类型系统,但对于源自 C++ 源代码的机器代码,这种系统并不足够。在本文中,我们解决了这一局限性,并引入了几种新技术,使安全检查分析更加精确和可扩展:
1. 改进的类型状态检查系统 :允许对通过物理子类型实现继承多态的不可信机器代码进行安全检查,引入了一种在可变指针存在的情况下处理子类型的新方法。
2. 函数调用效果总结机制 :通过安全前置和后置条件总结函数调用的效果,使分析能在可信边界停止,朝着模块化检查不可信代码迈出了第一步,提高了安全检查技术的可扩展性。
3. 栈分配数组信息推断技术 :推断栈分配数组(局部数组)的大小和类型,这在之前的工作中是一个未解决的问题。
4. 符号范围分析 :用于传播数组边界信息,使安全检查算法减少对昂贵程序验证技术的依赖。

这些改进让我们能够以更高的精度和效率处理更广泛的实际代码序列。例如,允许结构和指针之间的子类型化,使我们能够分析源自面向对象源代码的代码。符号范围分析在有数组访问的 11 个测试程序中,消除了 55% 的循环不变式合成尝试,在 4 个程序中完全消除了合成循环不变式的需求,全局验证的加速范围从 -4% 到 53%(中位数为 29%)。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值