CB/T 34943-2017《C/C++语言源代码漏洞测试规范》、CB/T 34944-2017《Java语言源代码漏洞测试规范》、GB/T 34946-2017《C#语言源代码漏洞测试规范》等文件中对源代码漏洞测试工具的要求有:
5.4 源代码漏洞测试工具
选择源代码漏洞测试工具应首先明确 GB/T15532-2008 中4.8.2的要求。重点应考虑工具的漏报率和误报率,可过过调查或比较的方式评估工具的漏报率和误报率,选择的代码漏洞测试工具应覆盖但不限于本标准的代码漏洞测试内容,测试前应对工具的漏洞规则库和测试引擎进行必要的升级和维护。
这其中提到了GB/T15532-2008《计算机软件测试规范》中的4.8.2条款:
4.8.2 测试工具选择
软件测试应尽量采用测试工具,避免或减少人工工作。为让工具在测试工作中发挥应有的作用,应确定工具的详细需求,并制定统一的工具评价、采购(开发)、培训、实施和维护计划。
选择软件测试工具应考虑如下因素:
a)软件测试工具的需求及确认:
1)应明确对测试工具的功能、性能、安全性等需求,并据此进行验证或确认;
2)可通过在实际运行环境下的演示来确认工具是否满足需求,演示应依据工具的功能和技术特征、用户使用信息(安装和使用手册等)以及工具的操作环境描述等进行。
b) 成本和收益分析:
1)估计工具的总成本,除了最基本的产品价格,总成本还包括附加成本,如工具的挑选、安装、运行、培训、维护和支持等成本,以及为使用工具而改变测试过程或流程的成本等;
2)分析工具的总体收益,如工具的首次使用范围和长期使用前景、工具应用效果、与其他工具协同工作所提高的生产力程度等。
c)测试工具的整体质量因素:
1)易用性;
2)互操作性;
3)稳定性;
4)经济实用性;
5)维护性。
CNAS/CMA软件检测实验室在进行源代码漏洞测试工具选型与比对时,需要充分考虑上述两份标准的相关要求,做好源代码漏洞测试工具的对比对验证工作。可参考下表进行工具的比对:
| 大类 | 小类 | 测试项 |
|---|---|---|
| 1.功能比对 | 1.1产品基本要求 | 是否能设置并发扫描域名个数。 |
| 1.功能比对 | 1.1产品基本要求 | 是否能设置并发任务个数。 |
| 1.功能比对 | 1.1产品基本要求 | 是否能设置扫描页面超时时间设置。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持Web 2.0(Ajax、Flash、JS) 等应用。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持对基于HTTPS应用系统的检测。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持解析Javascript脚本、Flash对象中的URL。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持自动过滤重复URL页面。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持对指定URL、当前域、整个域的漏洞扫描。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持自动发现并扫描整个域下所有子域名。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持预登陆或指定Cookie扫描。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持WAF或其它防护工具的识别,能识别国内外常见WAF。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持对OWASP TOP10高风险漏洞检测,包括注入攻击漏洞、认证和会话管理失效、跨站脚本攻击、不安全的直接对象引用、不安全的配置、敏感信息泄露、未授权访问、跨站请求伪造、使用的不安全组件、未验证的重定向等。 |
| 1.功能比对 | 1.2漏洞检测要求 | SQL注入检测功能是否支持对Get参数的注入检测、Post参数的注入检测、Cookie中变量的注入检测、SQL盲注检测功能。 |
| 1.功能比对 | 1.2漏洞检测要求 | XSS跨站脚本检测功能是否支持对Get、Post、Cookie的参数、HTTP头部的user-agent检测。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持Webshell木马检测。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持网站管理后台地址检测。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持隐藏字段检测。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持Cookie安全问题检测。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持Web路径下敏感文件检测。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持对检测的高风险漏洞进行自动验证,直观展现漏洞细节信息,如数据库信息、数据表信息和数据库用户名等。 |
| 1.功能比对 | 1.2漏洞检测要求 | 是否支持在漏洞验证过程中,列出正常请求与检测请求的区别。 |
| 1.功能比对 | 1.3风险管理要求 | 是否支持统一的风险管理页面,以站点为单位显示所有任务中所有站点的风险状况、漏洞信息、问题URL等。 |
| 1.功能比对 | 1.4任务策略要求 | 是否支持创建单次任务和周期任务,并能自定义任务开始时间。 |
| 1.功能比对 | 1.4任务策略要求 | 是否支持任务暂停、继续扫描、重新扫描、断点续扫等功能。 |
| 1.功能比对 | 1.4任务策略要求 | 是否支持以上任务管理功能的批量操作。 |
| 1.功能比对 | 1.4任务策略要求 | 是否能够通过手工输入和文件导入两种方式录入被扫网站域名列表 |
| 1.功能比对 | 1.4任务策略要求 | 是否支持自定义扫描任务策略模板。 |
| 1.功能比对 | 1.5报表分析要求 | 是否支持报表样式定制,包括LOGO、标题、页眉页脚等。 |
| 1.功能比对 | 1.5报表分析要求 | 是否支持多种格式输出报表,包括但不限于HTLM、WORD、PDF等格式。 |
| 1.功能比对 | 1.5报表分析要求 | 是否支持在任务执行过程中或暂停时,对已完成扫描的域名直接输出报表。 |
| 1.功能比对 | 1.5报表分析要求 | 报表的内容应包括但不限于任务执行情况、任务策略、站点基本信息、站点风险统计、站点风险分布、漏洞名称、漏洞类型、漏洞影响的站点URL、漏洞详细描述和威胁级别等。 |
| 1.功能比对 | 1.5报表分析要求 | 是否支持单个站点历史数据的纵向分析,实现风险对比、风险跟踪功能,风险对比和跟踪应具体到URL。 |
| 1.功能比对 | 1.5报表分析要求 | 是否支持多个站点扫描结果横向分析,按照风险等级、漏洞分类等进行对比。 |
| 1.功能比对 | 1.5报表分析要求 | 是否支持报表的在线浏览和离线下载。 |
| 2.性能比对 | 2.1误报率 | 选择一个已知漏洞情况的测试环境,设置基准,运行漏洞扫描工具,记录扫描结果,验证扫描结果,计算漏报率 |
| 2.性能比对 | 2.2漏报率 | 选择一个已知漏洞情况的测试环境,设置基准,运行漏洞扫描工具,记录扫描结果,验证扫描结果,计算漏报率 |
| 3.安全比对 | 3.1权限管理 | 支持多用户分权管理。 |
| 3.安全比对 | 3.2审计功能 | 支持用户审计功能。能够对用户登录日志、操作记录、系统异常等信息进行纪录和查询。 |
| 3.安全比对 | 3.3备份机制 | 支持配置备份恢复机制,能够对扫描结果、日志、扫描策略模板等配置文件进行导出和导入操作。 |
| 3.安全比对 | 3.4接口管理 | 开放接口支持情况,列出对外接口开放接口情况如XML、API、Web Service。 |
| 3.安全比对 | 3.4接口管理 | 是否能获取任务状态接口、任务控制接口。 |
| 3.安全比对 | 3.4接口管理 | 是否能活取扫描结果导出接口、漏洞信息接口。 |
| 4.成本与收益 | 4.1成本分析 | 产品价格 |
| 4.成本与收益 | 4.1成本分析 | 安装、运行、培训、维护、支持成本 |
| 4.成本与收益 | 4.2收益分析 | 使用范围和长期使用前景、工具应用效果、与其他工具协同工作所提高的生产力程度 |
针对行业内较常用到的源代码漏洞测试工具,我们也做过调查和比对。如果您有漏洞扫描工具采购相关的需要,或者计划申请CNAS/CMA软件检测实验室资质认证,可以私信我获取具体的比对参数,了解行业主流漏洞扫描工具之间的主要差异。