代码安全测试:格式字符串漏洞检测
1. 格式字符串漏洞案例分析
格式字符串漏洞是一种常见的安全隐患,下面以 lprng 软件为例进行说明。lprng 软件接受用户输入,这些输入随后会作为函数调用 snprintf() 的格式字符串传递给 syslog() 。这种格式字符串漏洞的特定情况,会使具有打印机端口远程访问权限的用户能够覆盖打印服务地址空间中的地址。这可能导致分段错误,进而导致打印服务拒绝,或者被用于执行通过其他方法注入到打印服务内存栈中的任意代码。所有这些事件都是由于调用 syslog() 时缺少格式说明符引起的。
2. 测试技术
2.1 格式化函数关注重点
在格式化函数列表中, sprintf 和 vsprintf 这两个函数需要特别关注,因为它们会将格式化的数据“打印”到缓冲区。修复这种漏洞的方法是始终使用格式说明符来格式化数据。
2.2 黑盒测试
在黑盒测试中,在所有输入字段中包含一些格式化参数非常重要。这些参数应包括以下内容,但也可以使用更多:
- %x
- %s
- %n
然后观察所有输出以及程序本身是否有异常输出或行为。你还可以尝试在输入字符串中嵌入多个 %s 参数进行测试。如果存在格式字符串漏洞,可能会导致访问违规错误或其他导致应用程序崩溃的错误。
超级会员免费看
订阅专栏 解锁全文
1756

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



