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