Java 静态代码分析工具-OWASP基准测试测评篇

 背景

源代码静态分析工具(SAST)作为软件安全的重要保障工具,已经在各个领域被广泛使用。随着开源SAST工具的广泛使用,工具种类的增加,使用者很难判断工具的优劣及适不适合企业的应用场景,本文从金融、互联网企业最常用的Java语言代码分析的角度,对静态分析进行一次简要的测评,为大家选择静态分析工具提供依据,此外,本文分析了目前静态代码分析工具存在的技术问题及工具评估的基本准则。

 概述

一般来说,误报和漏报率是SAST最重要的技术评价指标,但由于没有通用意义上的测试集能够全面反应静态分析工具在检测精度能力方面高低暨分析的敏感度。由此,为了简化测试难度,本次测评我们选择了一个Java语言且偏安全的国际通用测试集OWASP benchmark,以反应代码分析工具在Java安全检测能力上的强弱。

OWASP基准测试是一个示例应用程序,其中包含来自11个类别的数千个漏洞。基准测试中包括很难通过静态分析处理的代码片段,例如:间接调用、不可达分支、映射、依赖于配置文件的值。用例下载地址:https://github.com/OWASP/Benchmark/releases,可以在一定程度上反应代码分析工具的检测能力。

1. 测试依据

下表为某款工具的OWASP检测结果,如图所示,左侧一列表示所有类别,P/N为正/负样本数(badcase/goodcase)TP/FP为真/假阳性的数量(badcase报出数/误报数)TN/FN是真/假阴性的数量(good case报出数/漏报数),TPRFPR是正确率和误报率,Y是约登指数,约登指数( Youden’s indxYI)即正确指数,此指数值的范围只从0~1,约登指数越大, 其真实性亦越好。其中TPRFPRY的计算公式如下:

TPR=TP/P

FPR=FP/N

Y=[TP/(TP+FN)+TN/(FP+TN)]-1

类别

P

N

TP

FP

TN

FN

TPR

FPR

Y

Command Injection (cmdi)

126

125

126

45

80

0

1.0

0.36

0.64

Weak Cryptography (crypto)

130

116

130

0

116

0

1.0

0.0

1.0

Weak Randomness (hash)

129

107

129

0

107

0

1.0

0.0

1.0

LDAP Injection (ldapi)

27

32

27

13

19

0

1.0

0.41

0.59

Path Traversal (pathtraver)

133

135

133

36

99

0

1.0

0.27

0.73

Secure Cookie Flag securecookie)

36

31

36

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值