缓冲区溢出修复与移动企业应用分析策略
1. 缓冲区溢出修复策略
在C/C++程序中,缓冲区溢出是一个常见且严重的安全问题。为了自动移除这些漏洞,有三种设计防御代码并插入的策略。
- 搜索与替换策略 :此策略直接搜索常见的易受攻击的C字符串函数和I/O操作,然后将找到的操作替换为安全版本。例如,将易受攻击的
strcpy和strcat函数替换为strncpy和strncat,或者strlcpy和strlcat,甚至可以使用自定义版本。这种策略简单直接,易于实现,但会遗漏许多复杂情况。 - 边界检查策略 :该策略旨在在每次内存访问之前插入有效的验证,以执行额外的边界检查。典型的设计是在每个指针操作之前添加验证,即“基于指针的方法”。这些方法会跟踪每个指针的基地址和边界信息,并根据跟踪信息验证每个指针操作。像CCured、MSCC、SafeC和Softbound等都采用了这种方法。它们设计为提供高精度,但由于几乎每个指针操作都会被额外的检查包装,代码可能会变得庞大,运行时性能也可能会下降。
- 检测与转换策略 :先定位漏洞,然后将易受攻击的代码段转换为安全版本。与第二种策略相比,这种方法有助于在不影响移除精度的情况下减少添加的代码量。不过,在这个方向上投入的精力相对较少。例如,Lin等人提出基于污点分析对代码进行切片,然后检测每个切片中的缓冲区溢
缓冲区溢出修复与ValueApping分析
超级会员免费看
订阅专栏 解锁全文
484

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



