二进制差异分析与微软补丁处理全解析
1. 二进制代码问题与补丁修复
在分析二进制代码时,我们会遇到一些潜在的安全问题。例如,最初的代码片段中使用了 gets() 函数,这个函数存在严重的安全隐患,因为它不进行边界检查,这就可能导致缓冲区溢出。而在修复后的代码中,使用了 fgets() 函数,该函数需要一个大小参数,有助于防止缓冲区溢出。不过, fgets() 函数也有其局限性,它被认为是已弃用的函数,对于二进制数据中的空字节处理能力欠佳,但如果使用得当,它比 gets() 函数还是更安全一些。
2. 补丁差异分析的重要性
安全补丁,像微软和甲骨文发布的那些,是二进制差异分析的重要目标。微软有一套完善的补丁管理流程,通常每月的第二个星期二发布补丁,被修补的文件大多是动态链接库(DLL)和驱动文件,当然也有其他类型的文件,如 .exe 文件。很多组织不能及时给系统打补丁,这就给攻击者和渗透测试人员提供了可乘之机,他们可以利用公开披露或私下开发的漏洞利用程序,借助补丁差异分析来攻破这些系统。
从 Windows 10 开始,微软对打补丁的要求更加严格,这使得推迟更新变得困难。根据被修补漏洞的复杂程度和定位相关代码的难易程度,在补丁发布后的几天或几周内,有时就能快速开发出可用的漏洞利用程序。通过逆向工程安全补丁开发的漏洞利用程序通常被称为 1 天或 n 天漏洞利用程序,这与 0 天漏洞利用程序不同,0 天漏洞利用程序是在野外发现漏洞时还没有可用的补丁。
超级会员免费看
订阅专栏 解锁全文
39

被折叠的 条评论
为什么被折叠?



