软件供应链安全:源代码缺陷实例剖析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6 代码审计工具使用实例

本书中缺陷代码的检测使用了奇安信代码卫士平台。该平台是基于B/S架构开发的新一代源代码安全检测系统,企业可通过源代码检测,发现代码开发中的缺陷和漏洞,减小系统上线的安全风险,提升信息系统自身的免疫力。该平台能与代码仓库Git、Svn、TFS等整合,实现源代码自动化周期性检测、漏洞管理,为开发人员提供修复建议,帮助开发人员实现代码安全的可视化、自动化、智能化。下面以Java语言代码快速检测任务为例简要地介绍代码审计工具的使用方法。

1.6.1 任务配置页面

Java语言的快速检测任务配置页面如图1-1所示。

配置页面各个项目的含义如下。

(1)任务名称:可自定义任务名称,支持数字、英文字母、中文汉字,以及-、_、.符号,任务名称可以重复。

(2)检测语言:显示引擎配置的语言类型,若没有配置,则不显示该语言。此处选择Java。

(3)JDK版本:选择和源文件一致的JDK版本。

(4)Web工程:检测源文件是否为Web工程。

(5)工程类型:可选择普通工程、Maven工程或Gradle工程。

(6)源代码来源:可选择本地、Svn、Git、TFS、StarTeam、共享目录或FTP。配置好仓库地址,代码卫士可自动下载代码进行检测。

图1-1 Java语言的快速检测任务配置页面

(7)上传文件:上传源代码文件。

(8)检测方式:根据实际情况选择检测模板。

(9)是否携带:设置当前任务是否携带其他任务的审计信息。

(10)访问权限:可选择仅自己或指定人员。具体可参考修改访问权限。

(11)函数白名单:可对用户自定义的函数(如过滤函数)设置白名单,有效降低误报。

(12)例外文件:可设置例外文件,即不参与检测统计的文件。

(13)例外文件夹:可设置例外文件夹,即不参与检测统计的文件夹。

(14)描述:添加本次检测任务的描述信息。

1.6.2 检测结果页面

配置信息输入完毕后,单击“发起检测”按钮,即可发起Java语言的快速检测任务,代码审计后的结果如图1-2所示。在左侧树状菜单的每个缺陷后会显示该缺陷爆发行最后一次编辑的代码提交者,在右侧上部会显示该文件的源码内容,并会自动定位到缺陷爆发的行数。

图1-2 代码审计后的结果

检测结果页面右侧下部各功能的含义如下。

(1)跟踪路径表:显示缺陷的函数跟踪信息,帮助用户理解缺陷成因。

(2)跟踪路径图:显示一个文件下的所有缺陷实例的跟踪路径的合集,同分类跟踪路径图。

(3)详细信息:缺陷详细信息描述,方便理解缺陷。

(4)修复建议:缺陷的修复建议。

(5)参考信息:缺陷对应的相关标准或规范(如CWE)。

(6)缺陷审计:根据实际情况,对缺陷进行审计,审计时可以填写备注信息,也可以不填写。

(7)提交者信息:显示爆发行最后一次编辑的代码提交者信息、提交分支、提交时间、CommitID、提交备注。