项目接入Checkmarx后,扫描结果并不只是由源代码决定,所使用的查询预设同样会影响检测范围。预设中如果没有包含项目语言对应的查询,或者项目规则、扫描命令覆盖了原来的设置,就可能出现漏洞数量偏少、部分语言没有结果等情况。弄清Checkmarx查询预设怎么配置Checkmarx查询预设不适配项目语言怎么办,有助于让预设、项目语言和实际扫描范围保持一致。
一、Checkmarx查询预设怎么配置
查询预设是由多条SAST查询组成的规则集合。配置时可以新建空白预设,也可以复制现有预设后再调整,后者更适合已有项目。
1、创建自定义查询预设
①登录Checkmarx One。
②进入【资源管理】→【SAST预设】。
③点击【添加预设】。
④在【预设名称】中填写便于识别的名称。
⑤根据需要填写【说明】。
⑥点击【下一步】。
⑦勾选项目使用的编程语言。
⑧展开对应语言,选择需要加入的查询。
⑨点击【保存预设】。
选择查询时,可以通过搜索框输入CWE编号、语言名称或查询名称。预设名称不能与现有预设重复,保存后会显示在自定义预设列表中。
2、复制现有预设后修改
①进入【资源管理】→【SAST预设】。
②把鼠标移动到需要参考的预设上。
③点击【克隆】。
④填写新的【预设名称】和【说明】。
⑤点击【保存预设】。
⑥打开新生成的预设,检查语言和查询范围。
⑦补充项目需要的查询,再保存修改。
系统预设不能直接删除,复制后形成的自定义预设可以根据项目要求调整。这样不需要从空白状态逐条选择查询,也不容易遗漏基础规则。
3、把预设应用到指定项目
①进入【项目】并找到目标项目。
②点击项目右侧的更多操作按钮。
③进入【项目设置】→【项目规则】。
④点击【添加规则】。
⑤选择【SAST】。
⑥在参数中选择【预设名称】。
⑦选择刚创建的查询预设。
⑧确认【允许覆盖】是否符合当前管理要求。
⑨保存项目规则。
项目规则会覆盖账户层面的同名设置。如果扫描命令或代码配置文件又指定了其他预设,扫描级配置仍可能再次覆盖项目规则。
二、Checkmarx查询预设不适配项目语言怎么办
出现某种语言没有结果时,不要只在预设中随意增加查询。应先确认平台识别到了哪些语言,再检查预设和扫描范围。
1、查看本次扫描实际使用的预设
①找到目标项目。
②点击更多操作按钮,进入【项目设置】。
③打开【扫描历史】。
④选择出现问题的扫描记录。
⑤进入【扫描配置】。
⑥展开【SAST】。
⑦查看【预设名称】和配置来源。
如果这里显示的不是刚配置的预设,说明项目规则被账户设置、代码配置文件或扫描命令覆盖。使用命令行扫描时,还要检查是否传入了--sast-preset-name参数。
2、补充项目语言对应的查询
①进入【资源管理】→【SAST预设】。
②找到当前项目使用的自定义预设。
③打开预设详情,查看已包含的语言。
④确认项目语言是否出现在列表中。
⑤没有对应语言时,编辑自定义预设,勾选该语言。
⑥展开语言分类,选择需要执行的查询。
⑦保存预设并重新发起扫描。
如果使用的是系统预设,不建议直接改变原有规则范围。可以先克隆该预设,再在副本中增加项目语言和查询。
3、检查语言模式和文件筛选
多语言项目只按主语言扫描时,其他语言文件可能不会完整参与分析。
①进入【项目设置】→【项目规则】。
②查看SAST中的【语言模式】。
③多语言项目选择【多语言】。
④继续检查【文件和文件夹筛选】。
⑤确认没有使用!*.js、!*.py等规则排除实际源码。
⑥保存后执行一次完整扫描。
Checkmarx支持的语言和文件扩展名存在明确范围。项目使用的语言、框架或文件后缀不在支持范围内时,仅调整预设无法产生对应结果。
三、预设调整后怎么确认已经生效
修改预设后,应通过一次完整扫描验证,避免增量扫描只处理少量变更,导致前后结果难以比较。
1、重新运行完整扫描
①进入目标项目。
②点击【开始扫描】。
③选择SAST扫描。
④关闭增量扫描选项。
⑤确认本次使用的预设名称。
⑥提交完整代码并开始扫描。
扫描结束后,再进入【项目设置】→【扫描历史】→【扫描配置】→【SAST】,确认预设名称、语言模式和筛选规则均为调整后的内容。
2、对比语言和查询结果
打开扫描结果,按照语言、查询名称和严重程度筛选。重点查看原本没有结果的语言是否已经出现查询记录,同时确认漏洞数量变化是否与新增查询范围相符。
如果预设已经生效,但某类文件仍没有结果,应继续核对文件扩展名、源码目录、排除规则和语言支持范围,而不是反复更换预设。
总结
查询预设的作用,是让Checkmarx按照项目需要组合检测规则,而不是让所有项目机械使用同一套查询。处理Checkmarx查询预设怎么配置Checkmarx查询预设不适配项目语言怎么办时,需要把预设内容、项目规则、语言模式和扫描配置放在一起检查,才能判断问题究竟出在规则范围还是源码识别。希望本文能为Checkmarx查询预设的配置与排查提供帮助,如有相关需求,欢迎联系咨询。