OWASP Benchmark是什么?
OWASP Benchmark(基准)是一个针对Java的测试套件,目的在于评估评估自动化软件漏洞检测工具的准确性、覆盖率和效率。如果没有这类测试套件来提供测量工具的能力,用户就很难理解各个工具的优缺点,不清楚以什么维度将它们进行相互比较。
作为一个可运行的开源web应用程序,OWASP Benchmark中包含了数千个可利用的测试用例,每个测试用例都会映射到具体的CWE缺陷。用户可以对任何类型的安全测试(AST)工具进行分析,包括SAST、DAST。
测试用例和版本
当前最新的Benchmark版本是v1.2,它是一个可被执行的web应用程序。v1.2版本包含有2700+个测试用例,目的是让AST工具可以更容易更有效率的扫描。而Benchmark就是将这些测试用例转换为实际可以正确运行并完全可被利用的东西,然后在这个基础上生成一个UI界面。
Benchmark如今已经出了3个版本:2015年4月出的v1.0,2015年5月出的v1.1,2016年6月出的v1.2,之后则都在v1.2版本上持续不断的在进行调整。
Benchmark最新两个版本的测试用例分类和数量如下:
测试用例分类 | v1.1版本 | v1.2版本 |
---|---|---|
命令注入 | 2708 | 251 |
弱密码 | 1440 | 246 |
弱哈希 | 1421 | 236 |
LDAP注入 | 736 | 59 |
路径遍历 | 2630 | 268 |
安全cookie标志 | 416 | 67 |
SQL注入 | 3529 | 504 |
违反信任边界 | 725 | 126 |
弱随机性 | 3640 | 493 |
XPath注入 | 347 | 35 |
XSS跨站脚本 | 3449 | 455 |
测试用例举例
每个测试用例,我们可以简单理解成就是一个简易的Java EE servlet(相当于提供一个统一的web应用规范的接口)。
我们这里举个官方的例子,Benchmark 1.0版本中有个BenchmarkTest00001测试用例,它是关于LDAP注入测试的,附带的BenchmarkTest00001.xml文件中包含以下元数据:
xml
<test-metadata>
<category>ldapi</category>
<test-number>00001</test-number>
<vulnerability>true</vulnerability>
<cwe>90</cwe>
</test-metadata>
而BenchmarkTest00001.java就负责读所有cookie值,查找名为“foo”的cookie,并在执行LDAP查询时使用该cookie值。
得分机制
OWASP Benchmark还有一个独特之处在于,它可以轻松地对工具的安全性进行分析评分。Benchmarkh每个测试用例会匹配一个单独的CWE,要么是True,要么是False Positive。Benchmark会提供自动积分卡生成器,它可以用于对数十种安全工具在Benchmark的扫描结果进行评分。
Benchmark会出现如下4种测试结果:
- 工具正确识别了一个真正的漏洞(True Positive)
- 工具无法识别真正的漏洞,产生了漏报(False Negative)
- 工具正确的忽略了一个假警报(True Negative)
- 工具无法忽略假警报,产生了误报(False Positive)
我们可以想象有这么一个坐标轴,横坐标是False Positive(误报),纵坐标是True Positive(正确识别了漏洞)。而如果我们就是简单的抛硬币,那也有50%的概率随机蒙对,也就是下图中对角线(从0,0到100,100的直线)的中间部分。而安全工具的衡量标准就是它和这条对角线的对比,下图显示了Benchmark得分机制是如何评估安全工具的:
上图中,白色部分代表这款安全工具的扫描效果是强于随机猜测的,特别是左上角代表了理想的缺陷检测效果;而在这条红色虚线上,中间部分代表工具随机的检测出缺陷的概率,右上角代表工具将所有东西都检测为缺陷,左下角代表工具没有检测出任何缺陷;如果工具检测结果落入阴影部分,则代表工具的检测效果比随机猜测还要差了。
快速开始
Benchmark本质是一个Java Maven项目,它含有数千个测试用例,而每个版本的Benchmark都会跟随着一个expecteresults.csv文件一起发布。这个文件里列出了每个测试用例的预期结果,类似于:
那么,我们该如何对这个Benchmark进行扫描呢?有如下几个步骤(2和3可以选其中一个,或则两个一起执行):
- 编译Benchmark项目中所有软件(例如,使用mvn Compile命令)
- 针对Benchmark的测试用例代码,运行静态漏洞检查工具(SAST)
- 使用动态应用程序安全测试工具(DAST)扫描Benchmark的运行版本
- 为相应的工具生成记分卡
参考链接
- 点赞
- 收藏
- 关注作者
评论(0)