无限负载?动态模糊测试引领API安全测试的未来
如果我们告诉你,我们新发布的API扫描器针对单一类型漏洞测试拥有922万亿亿个负载?万亿亿是一个巨大的数字,这凸显了传统API安全测试的局限性。依赖签名、特定漏洞负载或固定模糊测试输入集等旧方法已经不够用了,特别是在处理自定义软件和独特API端点时。
固定负载集无法发现新的未知漏洞。API安全测试的未来(现在已到来)需要一种能够生成近乎无限负载集的新方法,以跟上快速演变的新威胁,比如提示注入。
在安全测试中,负载是设计用于以非预期方式与应用程序交互的特定文本或数据字符串。例如,SQL注入攻击的负载可能是' OR 1=1--,而跨站脚本(XSS)负载可能是<script>alert('XSS')</script>。提示注入漏洞的负载可能如下所示:
传统API安全扫描器使用静态词表,这些文件包含有限数量的已知负载。传统扫描器限制了它们测试的负载量。如果它们尝试测试大量负载,执行速度会很慢且对供应商来说成本高昂。这种暴力方法从根本上受到限制,因为它只能找到它知道要查找的内容。
更先进的API模糊测试方法(一种涉及向应用程序提供畸形或意外数据以观察其响应的安全测试技术)依赖于基本上"无限"的负载体。安全工具可以不依赖有限列表,而是实时生成几乎无限数量的独特负载。但是面对如此庞大的列表,测试人员或安全扫描器如何管理要测试的内容?答案在于种子数。
什么是"种子数"概念?
就像《我的世界》游戏中的种子生成独特而广阔的世界一样,API模糊测试的种子数从"无限"列表中确定性地生成特定的负载子集。这确保了相同的种子总是产生相同的负载,从而实现了可重复和可管理的扫描,而无需存储庞大的词表。新的API扫描器可以生成近乎无限的负载集,仅针对提示注入就有超过922万亿亿个,这使其能够在每次扫描中尝试新内容,同时仍运行所有标准测试。
机器学习如何使扫描更智能?
当与机器学习原理结合时,种子数方法的真正威力得以发挥。系统可以从过去的扫描中学习,并优先处理最有效的种子。例如,在上面的视觉示例中,如果种子5684在各种API中 consistently 发现提示注入漏洞,安全工具可以"学习"到该种子非常有效,并优先在类似目标的未来扫描中使用它。
- 字符串操作:附加或前置特殊字符,如!@#$、<>
- 数据类型模糊测试:将整数替换为字符串,或将布尔值替换为数字
- 格式字符串攻击:注入格式说明符,如%n、%s或%x,以测试格式字符串漏洞
这种动态方法可以通过基于应用程序响应实时生成负载,发现静态词表永远无法预料的新漏洞。
API漏洞检测如何工作?
让我们看看带有相应<负载B!>的<种子5684>。API扫描器将目标API视为"黑盒"。它不需要理解API的底层逻辑。它发送一系列请求(一些带有干净数据,一些带有突变的、基于种子的负载),并分析服务器的响应,寻找异常。
检测的关键是响应比较。干净的请求应该产生可预测的响应,而恶意或模糊测试的请求可能触发意外变化。这可能表现为:
- 500内部服务器错误:表明注入的负载在服务器上引发了未处理异常的常见指示器
- 403禁止或401未授权:如果API对请求返回这些状态码之一,表明用户缺乏必要权限。目标是发送一个特定的负载,将该响应"翻转"为200 OK。如果成功,则证明存在过滤器、身份验证或授权绕过,确认了访问控制漏洞
- 响应内容的意外变化:例如,注入的负载可能导致服务器返回数据库错误消息或系统文件内容,或者像偏离的内容长度或更长的响应时间这样微妙的变化
系统标记这些变化并呈现它们。这种简单的、基于响应的逻辑使工具能够高效准确,而无需深入理解API的内部工作原理。引擎通过尝试实际利用漏洞进一步推进,这减少了误报并提供了高保真、可操作的发现。
结论
API安全正在从静态、被动的方法转向主动、智能和可扩展的模型。像种子数和基于突变的模糊测试这样的概念,可以生成几乎无限的攻击面进行测试,有助于确保安全态势与组织面临的威胁一样动态。
我们不能只测试被认为是常态的内容。一个真正有效的安全工具必须不遗余力地寻找隐藏参数、非常规路由和意外状态,这些是大多数扫描器会忽略的。
试试我们带有动态模糊测试的新API扫描器,亲身体验。在此预约演示。
常见问题
问:传统API安全扫描器的主要问题是什么? 答:主要问题之一是它们依赖静态的、有限的已知负载词表,这使得它们对攻击者不断开发的新变异负载无效。
问:种子数如何帮助API模糊测试? 答:种子数从一个小得多的列表中确定性地生成特定的、可重复的独特负载集,允许进行可管理和可重复的扫描,而无需存储庞大的词表。这就是为什么新的API扫描器能够实现大规模扩展,同时确保可重复的结果。
问:Detectify检测漏洞时寻找什么? 答:它在模糊测试请求后寻找服务器响应中的异常,例如与干净请求相比的500内部服务器错误、403禁止状态或响应内容的意外变化。