为什么静态代码安全检测工具会有误报、漏报的情况出现?

574 阅读2分钟

软件安全问题带来的影响日益突出,“安全左移”已经成广泛认知。在软件开发周期中进行安全漏洞检测不但能及时发现问题降低修复难度,而且节省经济花费。

静态代码安全检测与动态应用测试不同之处在于,静态代码分析直接面向源码,能够检测所有的代码级别可执行路径组合,快速准确分析语义缺陷及安全漏洞。

在大众印象中,静态代码检测工具存在误报、漏报的“特点”。这些噪声不但降低了检测的准确度,而且降低了开发人员的工作效率。但静态代码检测工具在开发期间发现安全漏洞的能力在安全建设方面起到的作用不容置疑。

不同安全检测工具各具特点,根据一项报告,静态代码分析发现的最常见的缺陷是CRLF注入、信息泄漏和密码问题,而动态分析发现的最常见的缺陷是服务器配置、不安全的依赖关系和信息泄漏问题。软件组合分析(SCA)发现最常见的是输入验证不足、信息泄漏和封装问题。

为什么会产生误报、漏报?

静态应用程序测试工具本身基于一些算法,对程序数据、控制流分析,预判程序中存在的潜在问题。而算法耗时与准确度成正比。作为工具产品,高运行、高准确度的检测并不容易实现。因此在设计中存在简化、取舍,导致精度流失,运行时间和算法精度之间要达到平衡,因此产生误报。

检测工具评估.png

Wukong工具在取舍、算法优化和删减过程中做过很多研究工作,确保在同样运行时间下,Wukong工具的算法设计、逻辑设计引入的误报更低。

Wukong软件代码安全检测修复系统

Wukong软件代码安全检测修复系统是一款国产化用于检测代码语义缺陷/运行时缺陷、安全漏洞的静态代码安全检测工具。

Wukong支持的语言有:

  • C/C++
  • Java
  • Python
  • JS
  • HTML
  • PHP...等

支持标准:

  • OWASP top 10
  • CWE/SANS top 25
  • GB 34944(Java)
  • GB 34943(C/C++)
  • SJT 11683-2017(Java)
  • SJT 11682-2017(C/C++)
  • Cert Java 安全编程规则...等

支持框架:

  • Spring
  • Mybatis
  • Hibernate 等

由于Wukong是一款国产化自主可控软件,因此在定制方面更灵活,更适用于不同企业对代码检测工具的多种需求。