OWASP benchmark是OWASP组织下的一个开源项目,又叫作OWASP基准测试项目,它是免费且开放的测试套件。它可以用来评估那些自动化安全扫描工具的速度、覆盖范围和准确性,这样就可以得到这些软件的优点和缺点,还可以对它们进行相互比较。每个版本的OWASP benchmark都包含数千个完全可运行和利用的测试用例,每个测试用例都映射到该漏洞的相应CWE编号,所以该项目的漏洞数量和漏洞类型都是固定的,因此就可以查看扫描工具的测试报告进行对比得出该工具的误报和漏报率。
一般安全检查工具会检测出大量的漏洞,但是其中有很多都是误报的。为了得到所测试的应用程序的准确程度,benchmark设置了四种专门的测试结果:
1)工具正确识别了真实漏洞(True Positive-TP);
2)工具没有识别真实漏洞(False Negative-FN);
3)工具没有误报(Ture Negative-TN);
4)工具误报(False Positive-FP)
考虑到如果一个工具将每一行代码都标记为漏洞,则检测结果将会是100%的误报并且是没有价值的。如果该工具没有标记一个漏洞,则误报率为0,但是它也没有报出任何一个真实的漏洞,这也是没有价值的。如果一个工具随机报告每个测试是否包含漏洞,则将具有50%的真实漏洞,和50%的误报。
如下是评估安全扫描工具示意图:
此图上可以直观地显示工具检测报告的真实存在的漏洞和误报的表现,我们还可以计算出一个点的得分(0-100),将其称为Benchmark Accuracy Score(基准准确度得分),是一种Youden Index。基准准确度得分的计算方法为:
(sensitivity + specificity) – 1
Sensitivity = TPR=TP/(TP+FN)
Specificity = 1-FPR=TN/(TN+FP)
Youden Index=(sensitivity + specificity) – 1
=(TPR+1-FPR)-1
=TPR-FPR
benchmark中总共有2740个漏洞:
漏洞种类 | 数量 | CWE编号 |
---|---|---|
Command Injection | 251 | 78 |
Weak Cryptography | 246 | 327 |
Weak Hashing | 236 | 328 |
LDAP Injection | 59 | 90 |
Path Traversal | 268 | 22 |
Secure Cookie Flag | 67 | 614 |
SQL Injection | 504 | 89 |
Trust Boundary Violation | 126 | 501 |
Weak Randomness | 493 | 330 |
XPATH Injection | 35 | 643 |
XSS (Cross-Site Scripting) | 455 | 79 |
Total Test Cases | 2740 |
$ git clone https://github.com/OWASP/benchmark $ cd benchmark$ mvn compile (This compiles it)$ runBenchmark.sh/.bat - This compiles and runs it.
然后用浏览器打开https://localhost:8443/benchmark/,就可访问benchmark。
benchmark自带了多种源代码静态扫描工具,下面说明这些工具如何使用。
使用PMD对benchmark进行扫描并得到检测报告(PMD中实际上是没有安全规则的):
cd benchmark.\scripts\runPMD.bat
使用FindBugs产生测试报告:
cd benchmark.\scripts\runFindBugs.bat
使用带有FindSecBugs插件的FindBugs:
cd benchmark.\scripts\runSecFindBugs.bat
最终这些检测结果都被放置在/results目录下。检测的结果如下所示:
Benchmark_1.2-findbugs-v3.0.1-1026.xml
产生记分卡的应用程序BenchmarkScore是内置在Benchmark中的,它对扫描工具检测结果与预测结果进行对比,并生成一组网页,详细说明所涉及工具的准确性和速度。以下命令将为/results目录中的所有结果文件计算记分卡,并将生成的记分卡放入/scorecard目录中:
createScorecard.bat
*本文作者:fengchenzxc,转载请注明来自FreeBuf.COM