开放Web应用程序安全项目(OWASP),是一个非营利性基金会,致力于提高软件的安全性。OWASP Benchmark是一个免费和开放的测试套件。主要是通过Java语言基准测试案例对SAST工具进行评价。通过Yonden Index(约登指数)进行计算。约登指数等于测试的敏感性和特异性之和减掉1而得出。

OWASP Benchmark  master版本一共有2740个真假案例,这些例子每个都对应一个xml文件,说明例子的版本号、所属缺陷类别、编号以及对应的CWE编号、错误案例还是正确案例。覆盖的漏洞类型包括:

命令行注入(cmdi)、弱密码(crypto)、弱哈希(hash)、LDAP注入(ldapi)、路径遍历(pathtraver)、Cookie安全(securecookie)、SQL注入(sqli)、违反信任边界(trustbound)、弱随机(weakrand)、XPATH注入(xpathi)和跨站脚本(XSS)。

在基准测试中,有四种可能的测试结果:

  1. 工具正确识别真实漏洞(True Positive-TP),真阳性
  2. 工具无法识别真实漏洞(False Negative-FN),假阴性,也就是漏报
  3. 工具正确地识别假漏洞(True  Negatvie-TN),真阴性
  4. 工具错误地报出假漏洞(False Positive-FP);假阳性,也就是误报

为了计算约登指数,我们首先计算TPR和FPR

TPR= TP / (TP + FN) 检出率/真阳性率,也就是错误小例子报出数占所有错误小例子总数的比例)

FPR= FP / (FP + TN) 误报率/假阴性率 (正确小例子报出数占所有正确小例子总数的比例)

约登指数(Youden Index)=TPR-FPR ,也就是约登指数等于漏洞检出率减去漏洞误报率,当然约登指数越接近1越好。

我们对国内外四款有代表性的工具进行检测和分析,在检测中所有工具检测中都没有排除testcode之外的路径和文件,在检测结果分析时,由于不同工具在漏洞名称描述上不尽相同,还有一些工具在归类上不同,我们还是尽量对比了Benchmark官方结果文件,其官方给出的漏洞类型。

例如:弱hash和弱密码,使用弱哈希生成的密码,原因是因为采用了MD5等弱hash算法导致产生的密码是可能容易破解的,算是弱密码。Cookie安全,包括使用Cookie存储敏感信息,还有使用没有设置安全标志的Cookie,cookie中存储明文信息,或者Cookie设置有效期过长等等。

下面是检测结果统计表和约登指数计算结果表,大家可以作为参考。 后面我有时间只检测testcode目录,重新做一遍。

国内外四款SAST工具约登指数-LMLPHP

OWASP Benchmark介绍:https://wiki.owasp.org/index.php/Benchmark

基准检测项目案例和代码下载地址:GitHub - OWASP/Benchmark: The OWASP Benchmark GitHub repo has moved to: https://github.com/OWASP-Benchmark/BenchmarkJava

(结束)

11-29 17:48