OWASP Benchmark的搭建和使用

2018 年 12 月 23 日 FreeBuf

一、简介

OWASP benchmark是OWASP组织下的一个开源项目,又叫作OWASP基准测试项目,它是免费且开放的测试套件。它可以用来评估那些自动化安全扫描工具的速度、覆盖范围和准确性,这样就可以得到这些软件的优点和缺点,还可以对它们进行相互比较。每个版本的OWASP benchmark都包含数千个完全可运行和利用的测试用例,每个测试用例都映射到该漏洞的相应CWE编号,所以该项目的漏洞数量和漏洞类型都是固定的,因此就可以查看扫描工具的测试报告进行对比得出该工具的误报和漏报率。

二、benchmark的评分方法

一般安全检查工具会检测出大量的漏洞,但是其中有很多都是误报的。为了得到所测试的应用程序的准确程度,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 v1.2 漏洞整理

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


四、benchmark搭建(windows)

1)在运行benchmark之前首先确保电脑中已经搭建好git、maven(v3.2.3 or 更高)、java(7 or 8)。

2)下载并编译运行benchmark:

$ 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源代码进行扫描

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

登录查看更多
0

相关内容

一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
专知会员服务
171+阅读 · 2020年6月4日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
携程自研的OCR项目
专知
23+阅读 · 2019年8月12日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
CVE-2018-7600 - Drupal 7.x 远程代码执行exp
黑客工具箱
14+阅读 · 2018年4月17日
机器学习不能做什么?
引力空间站
5+阅读 · 2018年3月28日
字符识别(OCR)相关工具/库/教材/论文等资源整理
深度学习与NLP
19+阅读 · 2017年10月15日
开源 | 基于Python的人脸识别:识别准确率高达99.38%!
全球人工智能
4+阅读 · 2017年7月29日
用python和Tesseract实现光学字符识别(OCR)
Python程序员
7+阅读 · 2017年7月18日
3D-LaneNet: end-to-end 3D multiple lane detection
Arxiv
7+阅读 · 2018年11月26日
Arxiv
5+阅读 · 2018年5月22日
Arxiv
3+阅读 · 2018年3月22日
VIP会员
相关VIP内容
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
专知会员服务
171+阅读 · 2020年6月4日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
相关资讯
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
携程自研的OCR项目
专知
23+阅读 · 2019年8月12日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
CVE-2018-7600 - Drupal 7.x 远程代码执行exp
黑客工具箱
14+阅读 · 2018年4月17日
机器学习不能做什么?
引力空间站
5+阅读 · 2018年3月28日
字符识别(OCR)相关工具/库/教材/论文等资源整理
深度学习与NLP
19+阅读 · 2017年10月15日
开源 | 基于Python的人脸识别:识别准确率高达99.38%!
全球人工智能
4+阅读 · 2017年7月29日
用python和Tesseract实现光学字符识别(OCR)
Python程序员
7+阅读 · 2017年7月18日
Top
微信扫码咨询专知VIP会员