软件安全测试:模糊测试、静态代码分析与云基础设施审计
模糊测试的概念与实践
在软件安全领域,网络软件中隐藏的漏洞是安全工程师们最为关注的问题之一。尽管如今在网络守护进程中发现缓冲区溢出的情况比上世纪90年代末要少得多,但这类问题一旦出现,影响依然巨大,且极难发现。例如2016年Persona服务中就出现了一个与MySQL数据库处理UTF - 8字符相关的漏洞。由于MySQL默认配置的utf8字符集只支持Unicode字符空间的一个子集,当提供包含超出该范围的Unicode字符的电子邮件地址时,数据库会在未知字符值处截断字符串。攻击者利用这一漏洞,构造了类似“targetuser@example.net\U0001f4a9\n@attackerdomain.example.com”的电子邮件地址,其中中间的Unicode字符被MySQL截断,从而使攻击者能够以受害者的身份进行身份验证。
模糊测试(Fuzzing)是一种通过向程序接口注入无效和格式错误的输入,以触发输入处理中的漏洞的过程。在上述示例中,包含无效Unicode字符的电子邮件地址就是模糊测试器可以注入到Persona应用程序中的格式错误输入的典型例子。
模糊测试器通常分为以下三类:
- 黑盒模糊测试 :在不了解应用程序逻辑或预期输入类型的情况下注入格式错误的输入。这种类型的模糊测试器易于使用,只需指向目标即可,但结果往往有限。
- 基于语法的模糊测试 :更具针对性,专注于应用程序预期的特定类型的输入。例如,图像上传服务可能接受JPEG和PNG文件作为输入,基于语法的模糊测试器可以使用这些格式作为基础进行更智能的测试。
超级会员免费看
订阅专栏 解锁全文
794

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



