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