38、软件安全中的缓冲区溢出与整数溢出防范策略

软件安全中的缓冲区溢出与整数溢出防范策略

1. 缓冲区溢出攻击防范

缓冲区溢出攻击是软件安全的一大威胁,防范该攻击可从软件和硬件两方面入手,检测技术可分为以下四类:
- 静态分析 :有一些工具如 Frama - C 和 KLEE 可用于检测缓冲区溢出漏洞。静态分析器会在静态时检查代码,搜索用户代码中数组和指针的使用情况,并尽可能遍历更多控制路径来验证缓冲区溢出的边界条件。还有许多其他静态检测方法。
- 编译器修改 :当用户有源代码时,可使用修改后的编译器自动插入缓冲区溢出检测代码,如 StakeGuard、ProPolice、StackShield、RAD 等。
- ProPolice 编译器会重新排列程序变量,将数组放在指针前面以防止间接攻击,局部变量放在参数指针后面以方便检测缓冲区溢出。
- RAD 作为 GCC 编译器的补丁,会在函数调用的前后插入检测代码,并将返回地址存储起来。
- 操作系统修改 :OpenBSD 是检测和防范缓冲区溢出的综合改进方案之一。开发者通过结合栈间隙随机化和 ProPolice 编译器修改二进制文件,使攻击更困难。同时,修改操作系统分配的内存段,尽量移除执行权限。Libsafe 会对所有函数调用强制执行安全函数,这些安全函数会检查缓冲区的边界条件。
- 硬件修改 :SmashGuard 提出修改 CALL 和 RET 操作码的微代码指令,在处理器内存上创建一个辅助栈。修改后的 CALL 指令会在主栈保留返回地址的同时,在辅助栈存储一份副本。RET 指令执行返回时,会比较主栈和辅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值