50、二进制程序中漏洞补丁的自动生成技术

二进制漏洞补丁自动生成技术

二进制程序中漏洞补丁的自动生成技术

1. 寻找候选补丁位置

缓冲区溢出漏洞可能由多种原因导致。假设溢出点的指令为 MOV [v], u 。若 τI ∈Γ(v) ,可通过限制 v 的范围进行修补;若 τI ̸∈Γ(v) ,则可将情况分为以下四类:
1. τIn ̸∈Γ([v]) ∧ τI ∈Γ(u) :表示固定长度的缓冲区被输入数据溢出。由于用户指定的输入数据大小不定,需检查输入数据是否超过目标缓冲区的限制,候选补丁位置可设置在溢出点之前,此为类型 I。
2. τIn ̸∈Γ([v]) ∧ τI ̸∈Γ(u) :由于 u 与输入无关,可增大目标缓冲区的大小来修复此漏洞。若缓冲区在堆中,候选补丁位置可设置在堆分配函数之前;若在栈中,则让相关子例程在栈中分配更大的缓冲区,此为类型 II。
3. τIn ∈Γ([v]) ∧ τI ̸∈Γ(u) u 不依赖于输入数据,但目标缓冲区的大小依赖于它。可能由两种原因导致:一是 u 的大小超过目标缓冲区的边界,可分配更大的缓冲区来修复;二是循环次数依赖于输入,先尝试类型 II 修补此漏洞,若攻击仍发生,则尝试类型 I 方法。
4. τIn ∈Γ([v]) ∧ τI ∈Γ(u) :为简化修补过程,将候选补丁位置设置在溢出点之前,以确保写操作不超过目标缓冲区的限制。

以下是寻找候选补丁位置的流程:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值