40
Visual Studio 安全编码包 用户指南 版本 5.1 2007 12

Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

  • Upload
    hatu

  • View
    343

  • Download
    26

Embed Size (px)

Citation preview

Page 1: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

Visual Studio 安全编码包用户指南

版本 5.12007 年 12 月

Page 2: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

版权所有 © 2007 Fortify Software, Inc.RB_3 5, 2008 11:24 上午保留所有权利。美国印刷。 Fortify Software, Inc.2215 Bridgepointe PkwySuite 400San Mateo, CA 94404 Fortify Software, Inc.(以下简称 "Fortify")及其许可证颁布者保留对此文档(以下简称“文档”)的一切所有权。本文档的使用需遵守适用的版权法。 Fortify 可在不预先通知的情况下随时修改本文档。 本文档按“现状”提供,且不附加任何形式的保证。对于因本文档的任何错误所引起的间接、特殊、意外或任何形式的间接损害,包括但不限于对业务、利润、收益或数据造成的任何损失或者中断,Fortify 均不对此承担责任。Fortify 保留在不预先通知的情况下对本文档中介绍的 终产品的任何功能或组件进行修改和删除的权利。 Fortify 是 Fortify Software, Inc. 的注册商标。本文档中的品牌和产品名称是其各自所有者的商标。

Visual Studio 安全编码包用户指南

Page 3: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

目录

前言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1第 1 章: 使用安全编码包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

扫描解决方案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

关于界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4分析结果面板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4分析跟踪面板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5项目汇总对话框 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6源代码查看器面板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7问题审计面板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

审计分析结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11导航并查看分析结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11问题分组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11使用搜索 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13评估问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15废除问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

生成报告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15打开报告模板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16运行报告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16生成报告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16保存报告模板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22保存默认报告模板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22编辑报告模板 XML 文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

配置选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24配置扫描设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25配置项目设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

将结果上传到 Fortify Team Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

管理审计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34打开一个现有的审计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34从多个审计工具中合并审计结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34保存审计项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

管理规则包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34更新安全编码规则包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

故障排除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Visual Studio 安全编码包用户指南 iii

Page 4: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

iv Visual Studio 安全编码包用户指南

Page 5: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

前言本指南适用于使用安全编码包的 Microsoft Visual Studio 开发人员,用来执行安全扫描和在 Visual Studio 开发环境中进行分析。

如果您对本指南的任何内容存有疑问或建议,请与 Fortify Software 联系:

技术支持

650.358.5679

[email protected]

企业总部

2215 Bridgepointe Pkwy

Suite 400

San Mateo, CA 94404

650.358.5600

[email protected]

Fortify Software 网站

http://www.fortify.com

Visual Studio 安全编码包用户指南 1

Page 6: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

2 Visual Studio 安全编码包用户指南

Page 7: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

第 1 章:使用安全编码包本章包含以下主题:

• 简介

• 扫描解决方案

• 关于界面

• 审计分析结果

• 生成报告

• 配置选项

• 管理审计

• 故障排除

简介Microsoft Visual Studio 安全编码包并入了 Visual Studio 集成式开发环境 (IDE) 中。安全编码包无需

执行应用程序即可查找您的解决方案和规则包中的安全漏洞。扫描结果会显示在 Visual Studio 中。

结果包含一个问题列表,提供了各种漏洞类型的相关描述,同时附带如何修复该问题的建议和示例。

Fortify SCA 和安全编码规则包均支持 Microsoft Visual Studio 安全编码包,它支持以下几种语言:

• C/C++

• C#

• Visual Basic .NET

• ASP .NET

有关 Fortify SCA 源代码分析器的详细信息,请参见 《Fortify Source Code Analysis 用户指南》。

漏洞类别在 《Secure Coding Rulepack Reference》(安全编码规则包参考)中有所介绍。

扫描解决方案在解决方案层面上分析 Visual Studio 中的源代码。解决方案的安全分析操作会执行以下任务:

• 清除旧的 source code analysis 文件

• 重新构建解决方案

• 编译任意现有的 ASP 文件

• 执行安全分析

• 显示结果

Fortify Software 建议您定期升级安全编码规则包。有关更新规则包的信息,请参见第 34 页中的

“更新安全编码规则包”。

扫描解决方案:

1. 在 Visual Studio 中打开一个解决方案。

2. 验证 Visual Studio 配置,如下所示:

• 将配置设置为 debug (调试)。

• 对于 Visual C++ (VC++) 解决方案,要确保所有项目 (.vcproj) 文件均可进行修改。

Visual Studio 安全编码包用户指南 3

Page 8: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

3. 启动扫描,单击工具栏上的 Fortify Software 图标:

扫描进行过程时,“Output (输出)”面板会显示构建和 Fortify 扫描输出。一旦构建结束,您便

可选择取消扫描。

扫描结束后,屏幕上将显示 Fortify 审计界面。

4. 继续审计结果。有关更多信息,请参见第 11 页中的“审计分析结果”。

如果之前已对该解决方案执行了审计,则会自动将之前的审计集成到新的分析结果之中。

警告:为防止数据丢失,请使用迁移工具将审计信息从 FPR v4.5 文件导入到 FPR v5.0 文件中。有

关迁移审计数据的信息,请参见《Fortify Source Code Analysis: Migrating Audit Data from 4.x to 5.0》(Fortify Source Code Analysis:将审计数据从 4.x 迁移到 5.0)。

关于界面界面由以下面板组成:

• 分析结果面板

• 分析跟踪面板

• 项目汇总对话框

• 源代码查看器面板

• 问题审计面板

分析结果面板Analysis Results (分析结果) 面板提供了一种分组以及选择所需审计问题的方法。这个面板由以下

部分组成:

• 过滤器组下拉列表

• 文件夹 (选项卡)

• 分组方式

• 搜索字段

过滤器组下拉列表

所选过滤器组可控制在“Analysis Results (分析结果)”面板中显示的问题。通过确定容器 (文件

夹)的数量和类型以及显示问题的方式和地点,过滤器组可自定义 “Analysis Results (分析结

果)”面板。

每个项目可具有唯一的设置,因为该过滤器组保存在项目文件中。

“Filter Set (过滤器组)”控制以下设置:

• 文件夹名称和颜色 (项目配置,文件夹设置)

• 包含问题的文件夹 (文件夹过滤器和项目配置,默认文件夹设置)

• 显示还是隐藏某个问题 (可见性过滤器)

注意:有两种类型的可见性过滤器:由过滤器组定义的过滤器,以及由审计指南定义的可应用于整个项目的组。

4 Visual Studio 安全编码包用户指南

Page 9: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

关于默认过滤器组

Fortify Software 提供了默认的过滤器组:Broad(广泛)、Medium(中等)、Targeted(定向)和 Developer (开发人员)。“Filter Sets (过滤器组)”将问题按严重性归类于“Hot (严重)”、

“Warning (警告)”和“Info (信息)”文件夹中。所有过滤器组都具有相同的文件夹过滤器。

不同 “Filter Sets (过滤器组)”中会显示和隐藏不同的问题:

• Broad (广泛):使用 全面的规则组显示问题。应使用该过滤器组来发现要审计的一组广泛的

安全问题。

• Medium (中等):显示中等数量的问题,在详细罗列出所有潜在问题和有针对性地显示可能

存在的漏洞之间寻找一个平衡点。

• Targeted (定向):显示在多种行业内及各种环境下经证实具有高优先级的问题类别。应使用这

些过滤器组来发现一组有限的众所周知的关键安全问题。

• Developer (开发人员):显示开发人员尤为关注的问题,如严重的准确性 bug。

文件夹 (选项卡)

“Analysis Results (分析结果)”面板上的选项卡称为 “文件夹”。您可以自定义文件夹,因此,

不同的过滤器组中的文件夹数目、名称、颜色以及文件夹中的问题列表可能会有所不同。

每个文件夹都包含一个问题列表。应用文件夹过滤器后,且该文件夹过滤器条件与问题的属性相符合,

则会在文件夹列表中显示一个问题。过滤器组中的一个文件夹会设置为默认文件夹,在文件夹标题中

以 (default) 指示。如果某个问题与任何文件夹过滤器都不匹配,该问题将被列在该文件夹中。

注意:使用 “Option (选项)”菜单来显示或隐藏已废除、隐藏、或删除的问题。

分组方式

“Group by (分组方式)”选项用于将问题归类到各个子文件夹中。选定的选项将应用于所有可见文

件夹。使用 <none(无) >选项可列出文件夹中的所有项目而不进行任何分组。

通过更改对分组进行归类所依据的属性、添加或删除属性以创建子分组,以及添加您自己的分组选

项,您可以对现有分组进行自定义操作。

搜索字段

使用 Search (搜索)字段,您可以限制文件夹中显示的问题和搜索特定的问题。有关搜索功能的信

息,请参见第 13 页中的 “使用搜索”。

分析跟踪面板当您在 “Analysis Results (分析结果)”面板中选择某个问题后, Analysis Trace (分析跟踪)面

板会显示相关的 trace output。通常情况下,这是一系列进度点,显示了分析器是如何找到该问题

的。对于数据流和控制流问题,这一系列点会按照执行顺序显示出来。

例如,如果您选择某个与可能被污染的数据流相关的问题, Analysis Trace (分析跟踪)面板会显示

这段源代码中数据流的移动方向。

Visual Studio 安全编码包用户指南 5

Page 10: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

“Analysis Trace (分析跟踪)”面板使用以下图标来显示本段源代码中数据流和/或执行顺序的移动

方式:

项目汇总对话框“Project Summary (项目汇总)”对话框提供了有关扫描以下选项卡的详细信息:

• 总结

• 认证

• 构造信息

• 分析信息

表 1:分析跟踪和图示图标

图标 描述

为一个字段或变量赋值

信息读取自某个代码的外部数据源(如 HTML 表单和 URL 等)

为一个全局字段或变量赋值

已执行比较

函数调用收到被感染的数据

函数调用返回被感染的数据

传递,被感染的数据在函数调用中从一个参数传递到另一个参数

为某个内存位置创建一个别名

从一个变量读取数据

从一个全局变量读取数据

从一个函数返回被感染的数据

创建一个指针

取消一个指针

变量范围终止

执行跳转

在代码执行中引入分支

代码执行中未引入分支

常规

6 Visual Studio 安全编码包用户指南

Page 11: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

打开 “Project Summary (项目汇总)”面板:

1. 打开 FPR 文件。

2. 选择 Fortify Software - Project Summary (项目汇总)。

屏幕上将显示 “Project Summary (项目汇总)”窗口。

总结

“Summary (总结)”选项卡显示了关于本项目的高级信息。

认证

“Certification (认证)”选项卡显示了结果认证状态。结果认证用于检查 FPR 文件是否与 Fortify SCA 所生成的文件一致。

构造信息

“Build Information (构造信息)”选项卡显示了以下 Fortify SCA 扫描信息:

• 构造详细信息,如构造 ID、扫描的文件数、扫描日期,可能与文件的转换日期不同

• 扫描的文件列表,包括文件大小和时间戳

分析信息

“Analysis Information (分析信息)”选项卡显示了 Fortify SCA 的版本、计算机详细信息以及执行

扫描的用户。

“Analysis Information (分析信息)”选项卡包含以下信息:

• 规则包:显示所使用的规则包,包括名称、 ID 及版本号

• 属性:显示分析期间的所有运行时属性

• 命令行参数:显示用于分析该项目的命令行

• 警告:显示在分析阶段发生的错误的列表

源代码查看器面板“Source Code Viewer (源代码查看器)”面板显示了与在“Analysis Results (分析结果)”面板

中选择的问题相关联的代码段。如果 “Analysis Trace (分析跟踪)”面板中的多个结点代表一个问

题,则 “Source Code Viewer (源代码查看器)”面板会显示与选定结点相关联的代码。

问题审计面板“Issue Auditing (问题审计)”面板在以下一组选项卡中提供了有关每个问题的详细信息:

• SCA 问题总结

• SCA 问题详细信息

• 建议

• 问题历史纪录

• 图示

• 过滤器

Visual Studio 安全编码包用户指南 7

Page 12: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

SCA 问题总结

Summary (总结) 面板显示了关于当前所选问题的以下信息,并允许审计员按照下表的说明添加注

释和自定义标签值。

SCA 问题详细信息

Details (详细信息)选项卡提供了有关所选问题的详细说明,并提供了用于解决该问题的指导方针。

每项说明均包括下表中所述的部分或全部栏目。

表 2:Fortify 分析总结面板元素

元素 描述

问题 显示问题 ID,其中包含该问题所在文件的文件名。

自定义标签 显示审计员可以添加至问题的值的下拉列表。 例如,名称为分析的默认自定义标签提供了以下默认值:- Not an issue (不是问题) - Reliability issue (可靠性问题)- Unknown (未知)

- Suspicious (可疑)- Exploitable (可利用)

废除问题 更改严重级别以废除和删除“SCA Analysis Results (SCA 分析结

果)”中的问题。

注释 向注释字段中追加有关问题的其他信息。

Rule Information(规则信息)

显示用于描述问题的信息,如所属类别和领域。

More Information(更多信息)

打开 SCA 问题 Details (详细信息)选项卡。

Recommendations(建议)

打开 Recommendations (建议)选项卡。

表 3:详细信息面板

元素 描述

Abstract (摘要) 对问题的概要描述

Explanation (解释) 关于在哪些情况下会发生此类问题的描述,包括针对该漏洞的讨论、通常与该漏洞相关联的构造、该漏洞是如何被利用的,以及潜在的衍生攻击类型

Instance ID (实例 ID) 问题的唯一标识

Rule ID (规则 ID) 识别用于发现问题的主要规则

SCA Confidence(SCA 可信度)

由 Fortify SCA 生成的一个衡量指标

8 Visual Studio 安全编码包用户指南

Page 13: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

建议

“Recommendations (建议)”选项卡包含有关如何避免漏洞引发问题或补救错误做法的建议与示例。

问题历史纪录

显示完整的审计操作列表,包括以下详细信息:日期和时间、执行审计的计算机以及修复问题的用

户名称。

图示

当您在导航树中选择一个数据流问题时, “Diagram (图示)”形象地解释了结点的执行顺序、调用

深度和表达式类型。

图 1:SQL Injection 问题数据流图示示例

“Diagram (图示)”选项卡显示了与规则类型相关的以下信息:

• 数据流规则:纵轴显示了执行顺序。将从顶部第一个调用感染源的函数开始跟踪,然后跟踪对该 source (蓝色结点)的调用情况,并在 sink (红色结点)结束跟踪。在图示中,也会标记 source (src) 和 sink。纵轴上的红 X 表示这个被调用的函数已结束执行。

横轴显示了调用深度。用一条线显示了控制权的转移。如果控制权转移时携带含有被污染数据的变量,那么该线条是红色的;如果没有被污染数据,该线条是黑色的。

• 对于其他所有规则:纵轴显示了执行顺序。

表 4:

元素 描述

Recommendations (建议) 关于如何去定位一个问题的信息

Tips (提示) 普通的或者难以审计的情况示例,给出了有关如何识别特定问题的提示

References (参考信息) 参考相关信息

Visual Studio 安全编码包用户指南 9

Page 14: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

每个结点的表达式类型可以用以下图标之一表示:

过滤器

“Filters (过滤器)”选项卡显示了选定过滤器组中的所有过滤器。有关更多信息,请参见第 26 页中的“理解项目配置和过滤器组”。

表 5:分析跟踪和图示图标

图标 描述

为一个字段或变量赋值

信息读取自某个代码的外部数据源(如 HTML 表单和 URL 等)

为一个全局字段或变量赋值

已执行比较

函数调用收到被感染的数据

函数调用返回被感染的数据

传递,被感染的数据在函数调用中从一个参数传递到另一个参数

为某个内存位置创建一个别名

从一个变量读取数据

从一个全局变量读取数据

从一个函数返回被感染的数据

创建一个指针

取消一个指针

变量范围终止

执行跳转

在代码执行中引入分支

代码执行中未引入分支

常规

10 Visual Studio 安全编码包用户指南

Page 15: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

审计分析结果本节描述了如何执行以下任务:

• 导航并查看分析结果

• 问题分组

• 使用搜索

• 评估问题

• 废除问题

导航并查看分析结果扫描某个解决方案后,会显示 SCA Issue Details (SCA 问题详细信息)和 SCA Issue Summary(SCA 问题总结)选项卡,允许您审计问题。

要检测与某个问题相关的代码,请选择该问题。源代码部分包含了在源代码面板上出现的问题,还

有包含面板标题上所出现问题的文件名。

漏洞类别的详细信息会显示在 Analysis Results (分析结果)面板上。如果您选择了一个具有相应

数据流路径的问题,就会显示这个路径。

考虑下面这个例子:

-Privacy Violation [0/1]

-test.cpp:12 (Privacy Violation)

在本例中, Fortify 在 test.cpp 文件的第 12 行识别出一个 Privacy Violation 问题。如果您单击 test.cpp:12 (Privacy Violation),就会显示包含可疑数据流问题的代码段。因为这是一个

数据流漏洞,您可以从 source (它进入系统的地方)跟踪被感染的数据,并一直跟踪到 sink;这

样,就能看到数据是在什么地方出现问题的。通过单击面板上的条目,您可以在代码中跟踪数据。

问题分组出现在树状菜单上的条目根据选定的 “group by (分组方式)”而有所不同。您可以通过使用任意

一个标准的配置文件来查看问题、创建和编辑自定义的配置文件。

表 6:过滤器选项卡中的选项

元素 描述

Filters 显示选定滤器组中所配置的可见性过滤器和文件夹过滤器的列表。 - 可见性过滤器,显示或隐藏问题- 文件夹过滤器,将问题归类到 “Analysis Results (分析结果)”

面板中的文件夹选项卡中

右键单击某个过滤器可显示与该过滤器匹配的问题,也可启用或禁用该过滤器。

If 显示过滤器匹配的条件。第一个下拉列表显示了问题属性的列表,第二个下拉列表指定了属性的匹配方式,而第三个列表是过滤器必须匹配的值。

Then 显示过滤器可见性(隐藏)类型或文件夹类型

Visual Studio 安全编码包用户指南 11

Page 16: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

本节介绍了:

• 根据配置文件查看标准分组

• 根据配置文件创建和编辑分组

根据配置文件查看标准分组

Group By (分组方式) 菜单中可用的标准配置文件允许您按照不同的方式对问题进行分组及查看。

在实践中,您可能会在多个配置文件之间频繁切换。

以下图表对标准配置文件进行了描述。

根据配置文件创建和编辑分组

您可以创建按层级结构(其顺序依据特定的选项)对问题进行分组的自定义的配置文件。

根据配置文件新建一个分组:

1. 选择“Group By (分组方式)”下拉列表中的 New (新)。系统会打开 Grouping Profiles (分

组配置文件)窗口。

2. 选择以下某个选项并单击右箭头将选项移动到当前栏:

• Analyzer (分析器)

• Category (类别)

• File name (文件名)

• Namespace (命名空间) (Package) (包)

• New issue (新问题)

• Kingdom (领域)

• Sink

• Source

• Source file (源文件)

• Status (状态)

• Taint flag (感染标识)

表 7:按照配置文件进行的标准分组

配置文件 描述

分析器 按照分析器类型将问题分组

类别 按漏洞类别对问题进行分组。这是默认设置。

文件 按文件名对问题进行分组

包 根据包的类型进行分组

未分组 列出没有分组的问题

sink 将共享相同数据流 sink 函数的问题进行分组

source 对共享相同数据流 source 函数的问题进行分组

感染标识 按问题包含的感染标识对其进行分组

12 Visual Studio 安全编码包用户指南

Page 17: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

3. 重复操作可选择其他选项。

例如,选择 “Analyzer (分析器)”会生成这样一个列表:首层结点包含了问题的类别(如 Buffer Overflow);下一层结点则按照问题的分析器分组 (如 semantic 或 data flow)。

-Buffer Overflow [0/2]

--DataFlow [0/1]

----Main.cs:234

-+Semantic [0/1]

使用搜索您可以使用搜索选项来查看问题的子集。搜索条件基于搜索修正器。搜索修正器可指定某个问题的

特定属性,以根据该属性执行搜索。

要使用 “Advanced Search: (高级搜索:)”对话框来建立搜索表达式,请单击 Advanced (高

级)。屏幕上将显示“Search Query (搜索查询)”窗口。

(可选操作)请以下列格式在搜索字段中输入搜索条件:

<modifier>:<criteria>

关于搜索修正器 要执行精确的匹配搜索,请在引号中输入条件。例如,如果您输入 status:reviewed,则无论是

否经过检查,都会返回所有问题,因为它们都包含词汇 "reviewed"。要仅搜索检查过的问题,请输

入 status:"reviewed"。

要使用名称中包含空格的修正器,如自定义标签的名称,请用方括号界定修正器。例如,要搜索新

的问题,请输入 [issue age]:new。

下表描述了搜索修正器。

未用修正器限定的搜索,会尝试匹配有关下列属性的搜索字符串:领域、主规则 ID、分析器、文件

名、严重性、类名、函数名、实例 ID、包、可信度、类型、子类型、感染标识、类别、 sink、 source。

• 要将搜索应用于所有修正器,请输入一个字符串,如 control flow。这样,会搜索所有修正

器,并返回包含字符串 "control flow" 的任何结果。

• 要将搜索应用于特定修正器,请键入修正器的名称和字符串,如下所示:analyzer:control flow。这样,会查找分析器是 "control flow" 的所有结果。

表 8:搜索修正器

修正器 描述

[issue age] 搜索问题状况,即已删除、现存或新问题。

analysis (初级自定义标签的默认名称)搜索问题的分析字段

<custom_tagname> 搜索指定的自定义标签

analyzer 搜索问题,查找已经通过的分析器

audited 搜索问题以查明是真(如果已设置初级自定义标签)还是假(如果未设置初级自定义标签)

category (cat) 搜索指定类别或某一类别的子字符串

Visual Studio 安全编码包用户指南 13

Page 18: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

关于搜索字符串

本小节介绍了搜索字符串字段的语法。

• Contains: 搜索没有任何特殊的限定界定符的短语

• Equals: 若短语包含在 "" 中,则搜索完全匹配项

• Regex: 搜索符合 Java 风格的正则表达式 (以 / 界定)的值例如 /eas.+?/。

• Number range: 标准数学语法:(and) 表示排除, [ and ] 表示包含,因此, (2,4] 意味着大于 2 但小于或等于 4

• Not Equals: 在字符串前添加一个感叹号 !,即表示否定上述任何项。例如, !term 将返回默认

字段中没有短语的所有问题

comments(comment, com)

在针对问题输入的注释中搜索

commentuser 搜索包含指定用户注释的问题

confidence(con) 搜索具有指定可信度值的问题

file 搜索包含问题的文件

historyuser 搜索有关历史记录中用户名的问题

kingdom 搜索指定领域中的所有问题

maxconf 搜索可信度高达某一数值且包含指定为搜索短语的数值的所有问题

<metagroupings> 搜索问题元分组字段。默认元组如下: [Owasp Top Ten 2006][Owasp Top Ten 2007][Fortify Priority Order]

minconf 搜索可信度低于某一数值且包含指定为搜索短语的数值的所有问题

package 搜索指定包中的所有问题

primaryrule (rule)

搜索与指定 sink 规则相关的所有问题

ruleid 搜索由指定规则 ID (用于生成问题 source、 sink 及所有 passthrough)报告的所有问题

severity (sev) 搜索具有指定严重级别的所有问题

sink 返回已有字符串传递到 sink 函数中的问题

source 返回已有字符串传递到 source 函数中的问题

status 搜索已检查、未检查和正在检查的问题的“状态”

taint 搜索已指定感染标识的问题

trace 搜索已有字符串传递到数据流跟踪中的问题

表 8:搜索修正器

修正器 描述

14 Visual Studio 安全编码包用户指南

Page 19: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

评估问题评估审计参数并将它们分派到一个或者一组问题中:

1. 在 Analysis Results (分析结果)面板中选择问题或问题组。

有关 Analysis Trace (分析跟踪)面板的信息,请参见第 5 页中的“分析跟踪面板”。

2. 阅读 “SCA Issue Summary (SCA 问题总结)”选项卡上的摘要,它提供了关于问题的高级信

息,如发现问题的分析器。

例如,"Command Injection (Input Validation and Representation, data flow)" 意味着这个被数据

流分析器检测到的是一个 Command Injection 问题,属于 Input Validation and Representation 领域。

3. 单击 More Information (更多信息)链接或 SCA Issue Details (SCA 问题详细信息)选项

卡,获取有关问题的详细信息。

4. 在 SCA Analysis Summary (SCA 分析总结) 选项卡中,对某个问题赋值以表示您的评估。

Analysis (分析)菜单中的默认选项包括:

• Not an issue (不是问题)

• Reliability issue (可靠性问题)

• Unknown (未知)

• Bad practice (不良实践)

• Exploitable (可利用)

5. 另外可以在注释文本框中输入和问题相关的任何评论和您的评估结果。

注意:您可以使用过滤器组来自定义分析标签和问题选项卡的名称,请参见第 31 页中的 “配置过

滤器”。

废除问题您可以废除已修复的问题 (例如,通过执行数据验证),也可以废除不准备进行修复的问题。

可以使用以下方法中的一种来废除问题:

• 在 SCA Analysis Results (SCA 分析结果)面板中选择问题,然后单击 SCA Issue Summary(SCA 问题总结)选项卡上的 Suppress (废除)图标。

• 在 SCA Analysis Results (SCA 分析结果)面板中右键单击问题,然后在上下文菜单中选择 Suppress (废除)。

如果您想要检查已经废除的结果,请从 Analysis Results (分析结果)工具栏上的显示问题菜单中选

择 Show Suppressed Issues (显示废除的问题)。

生成报告本节包含了以下主题:

• 打开报告模板

• 运行报告

• 使用报告模板

• 保存报告模板

• 保存默认报告模板

• 编辑报告模板 XML 文件

Visual Studio 安全编码包用户指南 15

Page 20: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

打开报告模板打开报告模板:

1. 在“Analysis Results (分析结果)”面板中单击 Generate Reports (生成报告)图标。

屏幕上将显示“Generate Reports (生成报告)窗口”。

2. 从“Report (报告)”下拉列表中选择该报告模板。

“Generate Report (生成报告)”窗口中会显示报告模板设置。

运行报告选择了所需报告模板和报告设置后,即可生成报告以查看其结果。您可以将报告结果另存为 PDF、RTF 和 XML 文件。

运行报告:

1. 在“Analysis Results (分析结果)”面板中单击 Generate Reports (生成报告)图标。

屏幕上将显示“Generate Reports (生成报告)”窗口。

2. 从“Report (报告)”下拉菜单中选择该报告模板。

3. (可选操作)还可以更改报告部分的设置。

4. 单击 Print Report (打印报告)。

屏幕上将显示保存报告的对话框。

5. 指定文件名和保存报告的位置。

6. 选择报告的文件类型。提供的选项有 PDF、 RTF 或 XML。

7. 单击 Save (保存)。

已生成报告并保存为一个文件。

生成报告本节包含了以下主题:

• 打开报告模板

• 运行报告

• 使用报告模板

• 保存报告模板

• 保存默认报告模板

• 编辑报告模板 XML 文件

打开报告模板

打开报告模板:

1. 在“Analysis Results (分析结果)”面板中单击 Generate Reports (生成报告)图标。

屏幕上将显示“Generate Reports (生成报告)”窗口。

2. 从“Report (报告)”的下拉列表中选择报告模板。

“Generate Report (生成报告)”窗口中会显示报告模板设置。

16 Visual Studio 安全编码包用户指南

Page 21: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

运行报告

选择了所需报告模板和报告设置后,即可生成报告以查看其结果。您可以将报告结果另存为 PDF、RTF 和 XML 文件。

运行报告:

1. 在 “Analysis Results (分析结果)”面板中单击 Generate Reports (生成报告)图标。

屏幕上将显示 “Generate Reports (生成报告)”窗口。

2. 从 “Report (报告)”下拉菜单中选择报告模板。

3. (可选操作)还可以更改报告部分的设置。

4. 单击 Print Report (打印报告)。

屏幕上将显示保存报告的对话框。

5. 指定文件名和保存报告的位置。

6. 选择报告的文件类型。提供的选项有 PDF、 RTF 或 XML。

7. 单击 Save (保存)。

已生成报告并保存为一个文件。

使用报告模板

本节介绍了报告模板的选择区和编辑区。其中包括:

• 关于 Fortify 报告模板

• 选择报告小节

• 编辑报告的子小节

关于 Fortify 报告模板

首次安装 Fortify 产品后,下拉列表中会显示 Fortify 报告模板。如果您或其他用户已经编辑或创建了

其他默认报告模板,可能无法查看上述默认报告模板。

Fortify 报告模板包括:

• Fortify 安全报告:一种中级报告,可以提供有关所执行分析的综合信息以及所执行审计的高级

详细信息。还可以为优先级 高的类别提供高级说明和示例。

• Fortify 开发人员工作手册:一份综合列表,其中列出了已找到的所有问题类型,并为每种问题

列举了多个示例。它还为每种类别的问题数目提供了高级汇总信息。

选择报告小节

您可以选择要包含在报告中的各个小节,还可以编辑各小节显示的内容。

选择要包含在报告中的各个小节:

1. 在左侧列表中选中每个小节标题的复选框,即可将其包含在报告中。

2. 单击小节标题可突出显示该标题。

窗口的右侧会显示小节的详细信息。有关编辑各小节的详细信息,请参见第 17 页中的 “编辑报告的

子小节”。

要从报告中删除某个小节,请取消选中小节标题旁边的复选框即可。

编辑报告的子小节

选择了小节标题后,便可以编辑在报告中显示的内容。您可以编辑文本、添加或更改文本变量,还

可以自定义图表或结果列表中显示的问题。

Visual Studio 安全编码包用户指南 17

Page 22: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

其中包括:

• 编辑文本子小节

• 编辑结果列表子小节

• 编辑图表子小节

编辑文本子小节

1. 选中所需子小节标题旁边的复选框,即可将该文本包含在报告中。子小节标题下方会显示对文本的说明。

2. 单击 Edit Text (编辑文本)。

文本框中会显示即将会包含在报告中的文本和变量。

3. 根据需要编辑文本和文本变量。

编辑文本子小节后,您可以插入在运行报告时定义的变量。

表 9:文本变量

变量 描述

$AUDIT_GUIDE_SUMMARY$ 列出了通过回答 Audit Guide (审计指南)的问题所创建的过滤器

$CLASSPATH_LISTING$ 扫描过程中使用的 JAR 文件,每行一个相对路径

$COMMANDLINE_ARGS$ 命令行参数的完整列表 (其格式与项目汇总的格式相同)

$FILE_LISTING$ 已扫描文件的列表,每个文件的格式为 <relative file path> # Lines # kb <timestamp>

$FILTERSET_DETAILS$ 当前过滤器组正在使用的过滤器列表

$FILTERSET_NAME$ 当前过滤器组的名称

$FORTIFY_SCA_VERSION$ Fortify SCA 版本

$LIBDIR_LISTING$ 扫描过程中指定的 libdirs,每行一个相对路径

$LOC$ 代码总行数

$NUMBER_OF_FILES$ 已扫描的文件总数

$PROJECT_BUILD_LABEL$ 项目的构建标签

$PROJECT_NAME$ 构建 ID

$PROPERTIES$ 分析阶段设置的属性的完整列表 (其格式与项目汇总的格式相同)

$RESULTS_CERTIFICATION$ 带有每个文件的有效性列表的完整认证详情 (请参见项目汇总)

$RESULTS_CERTIFICATION_SUMMARY$

用于描述认证的短句 (其格式与项目汇总的格式相同)

$RULEPACKS$ 分析过程中使用的规则包的完整列表 (其格式与项目汇总的格式相同)

$SCAN_COMPUTER_ID$ 执行扫描操作的计算机主机名

$SCAN_DATE$ 使用语言环境的默认格式化类型进行的分析的日期

18 Visual Studio 安全编码包用户指南

Page 23: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

编辑结果列表子小节

1. 选中所需子小节标题旁边的复选框,即可将该文本包含在报告中。子小节标题下方会显示对结果列表的说明。

2. 单击列有标题的问题可展开各个选项。

3. 选择将按其对结果列表进行分组的各种属性。有关用作分组方式的属性列表,请参见第 11 页中

的 “问题分组”。如果选择按类别进行分组,用于类别的建议、摘要和解释也会包含在报告中。

4. 您可以使用搜索功能细化该子小节中显示的各种问题。有关搜索语法的更多详情,请参见第 13 页中的 “使用搜索”。

查询内容会显示在 “Subsection (子小节)”字段的“Refine Issues (细化问题)”中。

5. 选中或清除各组复选框中的 “Limit number of Issues (有限数量的问题)”。

6. 如果选中了该复选框,请键入每个组中显示的问题数量。

编辑图表子小节

1. 选中所需子小节标题旁边的复选框,即可将该文本包含在报告中。子小节标题下方会显示对图表的说明。

2. 选择按其对图表进行分组的各种属性。有关用作分组方式的属性列表,请参见第 11 页中的 “问

题分组”。

3. 您可以使用搜索功能细化该子小节中显示的各种问题。有关搜索语法的更多详情,请参见第 13 页中的 “使用搜索”。

查询内容会显示在 “Subsection (子小节)”字段的“Refine Issues (细化问题)”中。

4. 选择图表类型。图表类型包括表格、直方图和饼图。

保存报告模板

您可以将当前的报告设置另存为新的模板,以便日后选择该模板运行更多报告。

将设置另存为报告模板:

1. 在 “Analysis Results (分析结果)”面板中单击 Generate Reports (生成报告)图标。

系统会显示 “Generate Reports (生成报告)”窗口。

2. 从 “Report (报告)”下拉菜单中选择该报告模板。

3. 更改报告小节和子小节的设置。

4. 单击 Save as New Template (另存为新模板)。

即可保存为新的报告模板。当您从报告下拉菜单中选择该报告模板的名称时,该模板的报告设置便

会显示在 “Generate Report (生成报告)”窗口中。

$SCAN_SUMMARY$ 已扫描代码库的汇总格式为 # files, # lines of code

$SCAN_TIME$ 分析阶段所用的时间

$SCAN_USER$ 执行扫描的用户名

$SOURCE_BASE_PATH$ 代码库的源库路径

$TOTAL_FINDINGS$ 找到的问题总数,不包括已废除或删除的问题

$WARNINGS$ 已出现的警告的完整列表 (其格式与项目汇总的格式相同)

$WARNING_SUMMARY$ 扫描过程中发现的警告次数

表 9:文本变量

变量 描述

Visual Studio 安全编码包用户指南 19

Page 24: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

保存对报告模板的更改

您可以保存对报告模板的更改,这样,当前的新设置即会显示为默认设置。

将某个报告模板另存为默认的报告模板:

1. 在“Analysis Results (分析结果)”面板中单击 Generate Reports (生成报告)图标。

屏幕上将显示“Generate Reports (生成报告)”窗口。

2. 从“Report (报告)”下拉菜单中选择要另存为默认报告模板的模板。

3. (可选操作)还可以更改报告小节和子小节的设置。

4. 单击 Save Settings as Default (另存为默认设置)。

下次打开“Generate Reports (生成报告)”窗口时,窗口中即会显示该报告模板的设置。该报告

模板的名称显示在“Report (报告)”下拉菜单的顶端。

编辑报告模板 XML 文件

报告模板会另存为 XML 文件。您可以编辑这些 XML 文件,以做出更改或创建新的报告模板文件。

编辑 XML 文件时,您可以选择要包含在报告模板中的各个小节和每个小节的内容。

报告模板 XML 文件的默认位置为:

<install_directory>/Core/config/reports

通过在该目录中指定路径或更改 header.png 和 footer.png,还可以自定义报告中使用的标识语。

添加报告小节

您可以通过编辑 XML 文件来添加报告小节。在 XML 的结构中, ReportSection 标签可定义一个

新的小节。在定义的新小节中, Title 标签定义了小节名称,其中必须至少包括一个 Subsection 标签,用于在报告中定义该小节的内容。以下是 Fortify 安全报告中 Results Outline 小节的 XML 代码:

<ReportSection enabled="false" optionalSubsections="true">

<Title>Results Outline</Title> <SubSection enabled="true">

<Title>Overall number of results</Title> <Description>Results count</Description> <Text>The scan found $TOTAL_FINDINGS$ issues.</Text>

</SubSection> <SubSection enabled="true">

<Title>Vulnerability Examples by Category</Title> <Description>Results summary of the highest severity issues. Vulnerability examples are provided by category.</Description> <IssueListing limit="1" listing="true">

<Refinement>severity:(3.0,5.0] confidence:[4.0,5.0]</Refinement> <Chart chartType="list">

<Axis>Category</Axis> </Chart>

</IssueListing> </SubSection>

</ReportSection>

20 Visual Studio 安全编码包用户指南

Page 25: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

在上述示例中, "Results Outline" 小节包含两个子小节。第一个子小节是名为 Overall number of results 的文本子小节。第二个子小节是名为 Vulnerability Examples by Category 的结果列表。一个小节的内容可以包含任何子小节的组合。

添加文本子小节

在文本子小节中,您可以包含 Title 标签、 Description 标签和 Text 标签。在 Text 标签中,

虽然用户可以在生成报告之前编辑其中的内容,您仍可以提供默认内容。关于文本子小节中可用文

本变量的说明,请参见第 18 页中的 “编辑文本子小节”。以下是 Results Outline 小节中 Overall number of results 子小节的 XML 代码:

<SubSection enabled="true"> <Title>Overall number of results</Title> <Description>Results count</Description> <Text>The scan found $TOTAL_FINDINGS$ issues.</Text>

</SubSection>

在上述示例中,该文本子小节的标题为 Overall number of results。用于介绍该文本用途的

说明文字为 Results count。用户可以在运行报告之前编辑 "text" 字段中的文字,该内容使用了一

个名为 $TOTAL_FINDINGS$ 的变量。

添加结果列表子小节

在结果列表子小节中,您可以包含 Title 标签、 Description 标签和 IssueListing 标签。在 IssueListing 标签中,您可以定义 "limit" 的默认内容,并将 listing 设为 true。虽然用户可以

在生成报告之前编辑 Refinement 标签的内容,您仍可以在报告中包含带有默认语句或不带默认语

句的标签。要生成结果列表,请将 Chart 标签的 chartType 属性设为 list。您还可以定义 Axis 标签。以下是 Results Outline 小节中 Vulnerabilities Examples by Category 子小节

的 XML 代码:

<SubSection enabled="true">

<Title>Vulnerability Examples by Category</Title> <Description>Results summary of the highest severity issues. Vulnerability examples are provided by category.</Description> <IssueListing limit="1" listing="true">

<Refinement>severity:(3.0,5.0] confidence:[4.0,5.0]</Refinement> <Chart chartType="list">

<Axis>Category</Axis> </Chart>

</IssueListing>

</SubSection>

在上述示例中,结果列表子小节的标题为 Vulnerability Examples by Category。用于介绍

该文本用途的说明文字为 Results summary of the highest severity issues。Vulnerability examples are provided by category。该子小节将会为每种包含符合 severity:(3.0,5.0] confidence:[4.0,5.0](即 Refinement 标签的值)语句的问题类

别 (即 Axis 标签的值)列出 (listing=true) 一个问题 (limit="1")。

添加图表子小节

在图表子小节中,您可以包含 Title 标签、 Description 标签和 IssueListing 标签。在 IssueListing 标签中,您可以定义 "limit" 的默认内容,并将 listing 设为 false。虽然用户可

以在生成报告之前编辑 Refinement 标签的内容,您仍可以在报告中包含带有默认语句或不带默认

语句的标签。要生成一个饼图,请将 Chart 标签的 chartType 属性设为 pie。提供的选项包括 table、 pie 和 bar。用户可以在生成报告之前更改此设置。您还可以定义 Axis 标签。

Visual Studio 安全编码包用户指南 21

Page 26: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

以下代码显示了图表子小节的一个示例:

<SubSection enabled="true">

<Title>New Issues</Title> <Description>A list of issues discovered since the previous analysis</Description> <Text>The following issues have been discovered since the last scan:</Text> <IssueListing limit="-1" listing="false">

<Refinement /> <Chart chartType="pie">

<Axis>New Issue</Axis> </Chart>

</IssueListing>

</SubSection>

在上述子小节中,图表 (limit="-1" listing="false") 包含名为 New Issues 的标题以及包

含 The following issues have been discovered since the last scan 内容的文本小

节。由于 "Refinement" 标签为空,该图表将会包含所有问题,并按照 New Issue(即 Axis 标签

的值)的值对这些问题进行分组。该图表将会显示为一个饼图 (chartType="pie")。

保存报告模板您可以将当前的报告设置另存为新的模板,以便日后选择该模板运行更多报告。

将设置另存为报告模板:

1. 在“Analysis Results (分析结果)”面板中单击 Generate Reports (生成报告)图标。

屏幕上将显示“Generate Reports (生成报告)”窗口。

2. 从“Report (报告)”下拉菜单中选择该报告模板。

3. 更改报告小节的设置。

4. 单击 Save as New Template (另存为新模板)。

即可保存为新的报告模板。当您从报告下拉菜单中选择该报告模板的名称时,该模板的报告设置便会

显示在“Generate Report (生成报告)”窗口中。

保存默认报告模板您可以将某个报告模板另存为默认报告模板,当您打开“Generate Reports (生成报告)”窗口时

即会显示该模板。

将某个报告模板另存为默认的报告模板:

1. 在“Analysis Results (分析结果)”面板中单击 Generate Reports (生成报告)图标。

屏幕上将显示“Generate Reports (生成报告)”窗口。

2. 从“Report (报告)”下拉菜单中选择要另存为默认报告模板的模板。

3. (可选操作)还可以更改报告一节的设置。

4. 单击 Save Settings as Default (另存为默认设置)。

下次打开“Generate Reports (生成报告)”窗口时,窗口中即会显示该报告模板的设置。该报告

模板的名称显示在“Report (报告)”下拉菜单的顶端。

22 Visual Studio 安全编码包用户指南

Page 27: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

编辑报告模板 XML 文件报告模板会另存为 XML 文件。您可以编辑这些 XML 文件,以做出更改或创建新的报告模板文件。

编辑 XML 文件时,您可以选择要包含在报告模板中的各个小节和每个小节的内容。

报告模板 XML 文件的默认位置为:

<install_directory>/Core/config/reports

通过在该目录中指定路径或更改 header.png 和 footer.png,还可以自定义报告中使用的标识语。

添加报告小节

您可以通过编辑 XML 文件来添加报告小节。在 XML 的结构中, ReportSection 标签可定义一个

新的小节。在定义的新小节中,Title 标签定义了小节名称,其中必须至少包括一个 Subsection 标签,用于在报告中定义该小节的内容。以下代码显示了报告小节的一个示例。

<ReportSection enabled="false" optionalSubsections="true">

<Title>Results Outline</Title> <SubSection enabled="true">

<Title>Overall number of results</Title> <Description>Results count</Description> <Text>The scan found $TOTAL_FINDINGS$ issues.</Text>

</SubSection> <SubSection enabled="true"> <Title>Vulnerabilty Examples by Category</Title> <Description>Results summary of the highest severity issues. Vulnerability examples are provided by category.</Description> <IssueListing limit="1" listing="true">

<Refinement>severity:(3.0,5.0] confidence:[4.0,5.0]</Refinement> <Chart chartType="list">

<Axis>Category</Axis> </Chart>

</IssueListing> </SubSection>

</ReportSection>

添加报告子小节

在报告小节中,您可以添加多个子小节或编辑子小节中的内容。子小节可以生成文本、结果列表或

图表。

添加文本子小节

在文本子小节中,您可以包含 Title 标签、 Description 标签和 Text 标签。在 Text 标签中,

虽然用户可以在生成报告之前编辑其中的内容,您仍可以提供默认内容。以下代码显示了文本子小

节的一个示例。

<SubSection enabled="true">

<Title>Code Base Summary</Title> <Description>Summary of the Codebase that was analyzed</Description> <Text>Code location: $SOURCE_BASE_PATH$ Number of Files: $NUMBER_OF_FILES$ Lines of Code: $LOC$ Build Label:$PROJECT_BUILD_LABEL$</Text>

</SubSection>

Visual Studio 安全编码包用户指南 23

Page 28: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

添加结果列表子小节

在结果列表子小节中,您可以包含 Title 标签、 Description 标签和 IssueListing 标签。在 IssueListing 标签中,您可以定义 "limit" 的默认内容,并将 listing 设为 true。虽然用户可以

在生成报告之前编辑 Refinement 标签的内容,您仍可以在报告中包含带有默认语句或不带默认语

句的标签。要生成结果列表,请将 Chart 标签的 chartType 属性设为 list。您还可以定义 Axis 标签。

以下代码显示了列示结果子小节的一个示例:

<SubSection enabled="true">

<Title>Vulnerabilty Examples by Category</Title> <Description>Results summary of the highest severity issues.Vulnerability examples are provided by category.</Description> <IssueListing limit="1" listing="true">

<Refinement>severity:(3.0,5.0] confidence:[4.0,5.0]</Refinement> <Chart chartType="list">

<Axis>Category</Axis> </Chart>

</IssueListing>

</SubSection>

添加图表子小节

在图表子小节中,您可以包含 Title 标签、 Description 标签和 IssueListing 标签。在 IssueListing 标签中,您可以定义 "limit" 的默认内容,并将 listing 设为 false。虽然用户可以

在生成报告之前编辑 Refinement 标签的内容,您仍可以在报告中包含带有默认语句或不带默认语句

的标签。要生成一个饼图,请将 Chart 标签的 chartType 属性设为 pie。提供的选项包括 table、pie 和 bar。用户可以在生成报告之前更改此设置。您还可以定义 Axis 标签。

以下代码显示了图表子小节的一个示例:

<SubSection enabled="true">

<Title>New Issues</Title> <Description>A list of issues discovered since the previous analysis.</Description> <Text>The following issues have been discovered since the last scan.</Text> <IssueListing limit="-1" listing="false">

<Refinement /> <Chart chartType="pie">

<Axis>New Issue</Axis> </Chart>

</IssueListing>

</SubSection>

配置选项您可以按照以下几节的描述,自定义安全编码包以满足特殊分析要求:

• 配置扫描设置

• 配置项目设置

24 Visual Studio 安全编码包用户指南

Page 29: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

配置扫描设置本小节包含以下主题:

• 配置分析设置

• 配置高级扫描选项

配置分析设置

source code analysis 设置配置不同的规则包和内存容量以在扫描中使用,修改执行扫描时 Fortify SCA 查找的内容。

要配置分析设置:

1. 选择 Fortify Software - Options (选项)。

屏幕上将显示 Fortify Options (Fortify 选项)窗口。

2. 选择 Project Scan Settings (项目扫描设置)。

屏幕上将显示 Analysis Configuration (分析配置)选项卡。

3. 选择保存设置的方式,如下所示:

• 要仅为该解决方案自定义设置,请选择 Enable Project Specific Settings (启用项目特

定设置)。

• 要为该 Visual Studio 实例中扫描到的所有项目更改其默认扫描设置,请单击 Configure Default Settings (配置默认设置)。

4. 要指定用来扫描的内存总量 (如 500 MB),请在 Memory (MB) (内存) 字段中输入一个整

数。

5. 默认情况下, Fortify SCA 假设 SQL 文件包含 PL/SQL。要将其更改为 T-SQL,请选择 TSQL。

6. 选择安全编码规则包及您希望使用的自定义规则包。

有关安全编码规则包的信息,请参见 《《Secure Coding Rulepack Reference》(安全编码规则

包参考)》。

7. 单击 OK (确定)。

配置高级扫描选项

更改高级扫描选项:

1. 选择 Fortify Software - Options (选项)。

屏幕上将显示 Fortify Options (Fortify 选项)窗口。

2. 选择 Project Scan Settings (项目扫描设置)。

屏幕上将显示 Analysis Configuration (分析配置) 和 Advanced Options (高级选项)选项卡。

3. 单击 Advanced Options (高级选项)选项卡。

4. 选择保存设置的方式,如下所示:

• 要仅为某个解决方案自定义设置,请选择 Enable Project Specific Settings (启用项目特

定的设置)。

• 要为该 Visual Studio 实例中扫描到的所有项目更改其默认扫描设置,请单击 Configure Default Settings (配置默认设置)。

5. 选择 Use Additional SCA Arguments (使用其他 SCA 参数),并为转换或扫描阶段输入命令

行选项。

例如,如果您将 -verbose 命令行参数包含在内,则详细的状态消息会在分析期间传递到控

制台。

有关可用的参数和语法格式的信息,请参见 《Fortify Source Code Analyzer 用户指南》。

Visual Studio 安全编码包用户指南 25

Page 30: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

6. 扫描未包含在该解决方案内的文件:

• 要将文件添加至扫描,请单击 Add (添加),找到所需文件,然后单击 OK (确定)。

• 要删除文件,请选择该文件,然后单击 Remove (删除)。

7. 单击 OK (确定)。

会保存对高级扫描选项所作的更改。

配置项目设置本节介绍了如何管理项目配置的设置,其中包含以下主题:

• 理解项目配置和过滤器组

• 保存项目配置设置

• 管理文件夹

• 配置审计的自定义标签

• 配置过滤器

• 使用过滤器组模板

理解项目配置和过滤器组

Fortify SCA 使用安全编码规则包和自定义规则包来分析源代码,确定其中是否包含任何安全漏洞或

程序编写的不良之处。Fortify SCA 会识别每个潜在的漏洞,并将其视为一个问题。然后 Fortify SCA 会创建一个 FPR 文件,其中包含关于该项目中存在的全部问题的详细信息,包括源代码片段和位置

的详情(如文件名、包和类)。一个 FPR 文件可能包含许多问题。

过滤器组可以控制 Fortify 安全编码包如何为 Visual Studio 显示这些问题,并允许用户自定义以下项

目设置:

• Folders (文件夹),即“Analysis Results (分析结果)”面板上的选项卡:

• 显示的文件夹(选项卡)数量

• 每个文件夹的名称和属性

• Custom Tags (自定义标签),即 “SCA Issue Summary (SCA 问题总结)”选项卡上的审计

标签:

• 可用审计字段的数量

• 每个字段的名称和值

• 每个过滤器组的过滤器:

• Visibility Filters (可见性过滤器),可隐藏问题

• Folder Filters (文件夹过滤器),可将问题归类到“Issue (问题)”面板上的各个文件夹中

注意:版本 4.5 及更低版本中的 “Analysis and status (分析和状态)”等审计标签已经替换为

“Custom Tags (自定义标签)”。

保存项目配置设置

要保存项目配置设置,请选择 Fortify Software - Save Audit Project (保存审计项目)。

26 Visual Studio 安全编码包用户指南

Page 31: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

管理文件夹

“Analysis Results (分析结果)”面板上的选项卡称为 “文件夹”。您可以为每个项目自定义文件

夹。文件夹在该项目内有效,可供该项目中每个过滤器组使用。在一个项目中,不同的过滤器组之

间的文件夹属性可能会有所不同。

本小节包含以下主题:

• 新建文件夹

• 添加文件夹

• 重命名文件夹

• 删除文件夹

新建文件夹

本小节会说明如何将某个文件夹添加到 “Filter Sets (过滤器组)”。文件夹必须具有唯一的名称。

新建文件夹:

1. 选择 Fortify Software - Project Configuration (项目配置)。

屏幕上将显示 Project Configuration (项目配置)对话框。

2. 单击 Folders (文件夹)选项卡。

3. 从 Folders for Filter Set (过滤器组的文件夹)中,选择下列选项之一:

• All Folders (所有文件夹),创建可以在每个过滤器组中显示的文件夹。

• 一个过滤器组,创建的文件夹只能所选过滤器组中显示。

4. 添加文件夹:

a. 单击 Folders (文件夹) 旁边的 + (加号)。

屏幕上将显示 Create a New Folder (新建文件夹)对话框。

b. 为新文件夹输入一个名称,然后单击 OK (确定)。

该文件夹将显示在文件夹列表的底部。

5. (可选操作)向上或向下拖动该文件夹,以改变该选项卡在“Issue (问题)”面板上的位置,

在面板中会按照从左到右的顺序排列。

6. (可选操作)选择 Default (默认)将所有与文件夹过滤器不符的问题放到此文件夹中。

7. 单击 OK (确定)。

该文件夹会在 “Issue (问题)”面板上显示为一个选项卡。如果您选择了“Default (默认)”,则

会显示所有与文件夹过滤器不符的问题。

注意:要将问题导向此文件夹,请添加一个以新文件夹作为目标的文件夹过滤器。

添加文件夹

本节介绍了如何添加另一过滤器组中的文件夹。按照第 27 页中的 “新建文件夹”中的说明,新建一

个只能在选定过滤器组中显示的文件夹。要在此文件夹中显示问题,请使用文件夹过滤器将此文件

夹设为目标。

添加文件夹:

1. 选择 Fortify Software - Project Configuration (项目配置)。

屏幕上将显示 Project Configuration (项目配置)对话框。

2. 单击 Folders (文件夹)选项卡。

3. 从 Folders for Filter Set (过滤器组的文件夹)中,选择您要添加该过滤器的过滤器组。

注意:选择 All Filter Sets (所有过滤器组)选项,创建的文件夹可以在每个过滤器组中显示。

Visual Studio 安全编码包用户指南 27

Page 32: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

4. 单击 Folders (文件夹)旁边的 + (加号)。

如果此过滤器组中有尚未显示的文件夹,则屏幕上将显示 Add a new Folder to the Filter Set(向过滤器组中添加新文件夹)窗口。

5. 选择您要添加的文件夹,然后单击 Select (选择)。

该文件夹会显示在文件夹列表中。

6. 单击 OK (确定)。

该文件夹会显示在“Issue (问题)”面板中,而且会选中修改过的过滤器组。

重命名文件夹

本小节介绍了如何重命名文件夹。修改文件夹名称属于全局性更改。

重命名文件夹:

1. 选择 Fortify Software - Project Configuration (项目配置)。

屏幕上将显示 Project Configuration (项目配置) 对话框。

2. 单击 Folders (文件夹) 选项卡。

3. 在列表中选择该文件夹。

4. 屏幕上将显示该文件夹的属性。

5. 为该文件夹输入一个新名称。

在列表中,该文件夹的名称会随着您的键入而改变。

6. 单击 OK (确定)。

在“Issue (问题)”面板的选项卡上,该文件夹的名称也会随之改变。

删除文件夹

本小节介绍了如何将文件夹从所有过滤器组删除,或从某个过滤器组中删除而在其他过滤器组中保留。

删除文件夹:

1. 选择 Fortify Software - Project Configuration (项目配置)。

屏幕上将显示 Project Configuration (项目配置) 对话框。

2. 单击 Folders (文件夹) 选项卡。

3. 从 Folders for Filter Set (过滤器组的文件夹) 中,选择下列选项之一:

a. 选择 All Folders (所有文件夹),将文件夹从所有过滤器组中删除。

如果此文件夹是某个文件夹过滤器的目标,则该删除文件夹的选项会处于隐藏状态。

b. 选择一个过滤器组,仅将该文件夹从所选过滤器组删除。

文件夹列表会显示所选过滤器组中的文件夹。

4. 选择该文件夹,然后单击 Folders (文件夹)旁边的 - (减号)。

如果该文件夹是某个文件夹过滤器的目标,则屏幕上将显示 Conflicts Occurred Removing a Folder (删除文件夹时出现冲突) 窗口。

5. 根据需要重新设置文件夹过滤器的目标或删除该文件夹过滤器。

该文件夹便会从文件夹列表中消失。

6. 单击 OK (确定)。

该文件夹将不再在“Issue (问题)”面板上显示为选项卡。

28 Visual Studio 安全编码包用户指南

Page 33: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

配置审计的自定义标签

自定义标签会显示在 “Auditing (审计)”面板的 “SCA Issue Summary (SCA 问题总结)”选项

卡上。自定义标签可以让审计员设置描述该问题的其他属性。您可以使用自定义标签值来过滤及查

找问题。在默认情况下,已经配置了自定义标签 Analysis,而且当 Analysis 标签应用到某个问题

时,在问题列表中会显示图标来指示分析状态。

设定可见性过滤器和文件夹过滤器的条件,以与自定义标签值相符。例如,选择可见性过滤器

“Analysis:matches not an issue hide issue (分析:匹配 “不是问题”的问题将被隐藏)”,则审

计员标记的所有 “不是问题”的问题均会从问题列表中删除。

下图显示了 “Project Configuration (项目配置)”对话框中的 “Custom tag (自定义标签)”设置

与 “SCA Issue Summary (SCA 问题总结)”选项卡的关系。

图 2:自定义标签配置窗口与审计总结面板

本小节包含以下主题:

• 创建自定义标签

• 删除自定义标签

创建自定义标签

自定义标签属于项目内的设置,可以保存在过滤器组模板中。如果自定义标签不属于全局性模板组,

则可能会隐藏某些标签信息。

创建自定义标签:

1. 选择 Fortify Software - Project Configuration (项目配置)。

屏幕上将显示 Project Configuration (项目配置) 窗口。

2. 单击 Custom Tag (自定义标签) 选项卡。

3. 单击 Tags (标签) 旁边的 + (加号)。

注意:如果您之前删除了一些标签,则会显示这些标签的列表,单击 Create New (新建)。

屏幕上将显示 Enter Value (输入值) 窗口。

Visual Studio 安全编码包用户指南 29

Page 34: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

4. 为该标签输入一个名称,然后单击 OK (确定)。

该新标签便会显示在列表中。

5. 为标签添加值:

a. 从 Tag (标签)列表中选择该标签。

该标签会显示在 Tag (标签)字段中,而且会启动 Value (值)菜单。

b. 单击 Value (值)旁边的 + (加号)。

屏幕上将显示 Enter Value (输入值) 窗口。

c. 为该值输入一个字串或数字,然后单击 OK (确定)。

d. (可选操作)如果审计员未选择任何值,则选择 default (默认)来设置该属性的值。如果

未选择“default (默认)”,则该值为 null。

6. 重复步骤 4,直到添加完所有标签值。

注意:如果您为所有值输入的均为数字,则您可以利用范围过滤该属性的问题。

7. 为您要添加的每个标签重复步骤 2 至 5。

8. 添加完标签和值之后,单击 OK (确定),关闭 Project Configuration (项目配置)窗口。

标签和值会显示在“Summary (总结)”选项卡上。

删除自定义标签

删除标签后,将不再在“SCA Issue Summary (SCA 问题总结)”选项卡和过滤器选项中显示该标

签。然而,如果该标签是为问题而设置,则删除标签这一操作并不从该问题中删除该标签或值。为该

标签创建的过滤器仍然有效。您可以修改现有的过滤器,但您无法为该属性创建新的过滤器。

删除自定义标签:

1. 选择 Fortify Software - Project Configuration (项目配置)。

屏幕上将显示 Project Configuration (项目配置)窗口。

2. 单击 Custom Tag (自定义标签)选项卡。

3. 从列表中选择该标签。

4. 单击 Tags (标签)旁边的 - (减号)。

5. 单击 OK (确定)。

6. 如果您删除的标签具有关联的过滤器,则会提示您同时删除该过滤器。

新建过滤器组

本小节介绍了如何新建过滤器组。要新建过滤器组,您可以直接复制一个现有的过滤器组。创建副本

之后,再修改其中的设置。

新建模板组:

1. 选择 Fortify Software - Project Configuration (项目配置)。

2. 单击 Filter Set (过滤器组)选项卡。

3. 选择 Filter Set (过滤器组)。

屏幕上将显示 Create New Filter Set (新建过滤器组)对话框。

4. 为新的模板组输入名称。

5. 选择一个现有模板进行复制。

6. 单击 OK (确定)。

即可创建一个新的具有相同文件夹、可见性过滤器和文件夹过滤器的过滤器组。

30 Visual Studio 安全编码包用户指南

Page 35: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

配置过滤器

本小节包含以下主题:

• 将过滤器复制到另一过滤器组

• 添加文件夹

从问题面板创建过滤器

如果文件夹列表中有问题需要隐藏或导向其他文件夹,则您可以使用过滤器向导新建一个过滤器。

向导会显示该过滤器的所有属性及相符的条件。

注意:要查找将问题导向至该文件夹的过滤器,请右键单击该问题,然后选择 Why is this issue here? (该问题为什么会在这里?)。

注意:要查找导致隐藏该问题的过滤器,请右键单击该问题,然后选择 Why is this issue hidden?(该问题为什么隐藏?)。

根据问题新建过滤器:

1. 从 Filter Set (过滤器组)下拉菜单中,选择一个过滤器组。

2. 在 “Analysis Results (分析结果)”面板上,选择一个问题。

3. 右键单击,然后选择 Generate Filter (生成过滤器)。

屏幕上将显示 Create Filter (创建过滤器) 窗口,其中包含一个简短的建议条件列表。

4. (可选操作)单击 More Choices (更多选择),展开条件列表。

将显示其他更多条件。

5. 选择要在此过滤器中使用的条件。

稍后可以在 Filter (过滤器)选项卡上进行修改,以进一步调整该过滤器。

6. 选择您希望创建的过滤器类型,如下所示:

• 选择 Hide Issue (隐藏问题)以创建 Visibility Filter (可见性过滤器)。

• 选择 Set to Folder (设置给文件夹)以创建 Folder Filter (文件夹过滤器),然后选择文件

夹的名称,或者选择“Other Folder (其他文件夹)”来添加现有文件夹或新建一个文件夹。

新文件夹只会显示在此过滤器组中。

7. 单击 Create Filter (创建过滤器)。

向导会将新过滤器放置在列表的末尾处。对于文件夹过滤器来说,这会赋予新过滤器 高的优先级。符合新文件夹过滤器的问题会显示在目标文件夹中。

8. (文件夹过滤器的可选操作)在文件夹过滤器列表中,向上拖动该过滤器,从而更改其优先级。

问题会使用新过滤器进行排序。

注意:过滤器仅在选定的过滤器组中创建。

在过滤器选项卡上新建过滤器

使用 “Filters (过滤器)”选项卡选项,为您要过滤的属性和值创建常规过滤器。过滤器仅在选定

的过滤器组中创建。

文件夹过滤器会按顺序依次进行应用,然后问题会导向列表中其符合的 后一个文件夹过滤器。向导会

将新过滤器放置在列表的末尾处。请根据需要调整文件夹过滤器的结构,以便获得您想要的过滤行为。

Visual Studio 安全编码包用户指南 31

Page 36: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

在“Filters (过滤器)”选项卡上新建过滤器:

1. 从 Filter Set (过滤器组)下拉菜单中,选择一个过滤器组。

2. 右键单击 Visibility Filter (可见性过滤器)或 Folder Filter (文件夹过滤器),然后选择 Create New Filter (新建过滤器)。

If (如果) 面板会显示一则消息:Please specify a modifier for the search (请为搜索指定

修正器)。

3. 从第一个下拉菜单中选择问题属性。

4. 第二个下拉菜单会自动填充相应内容。

5. 从第二个下拉菜单中选择该值的匹配方式。

6. 第三个下拉菜单将自动显示该属性的值。

7. 根据 If 行的说明,选择一个值,或指定一个范围。

8. 然后设置为下列选项之一:

• 选择 Hide Issue (隐藏问题)以创建 Visibility Filter (可见性过滤器)。

• 选择 Set to Folder (设置给文件夹)以创建 Folder Filter (文件夹过滤器),然后选择文

件夹的名称,或者选择“Other Folder (其他文件夹)”添加其他过滤器组中的文件夹或新

建一个文件夹。

新过滤器会显示在列表的末尾处。对于文件夹过滤器来说,这会赋予新过滤器 高的优先级。符合新文件夹过滤器的问题会显示在目标文件夹中。

9. (文件夹过滤器的可选操作)在文件夹过滤器列表中,向上拖动该过滤器,从而更改其优先级。

问题会使用新过滤器进行排序。

注意:过滤器仅在选定的过滤器组中创建。

将过滤器复制到另一过滤器组

过滤器的设置仅作用于该过滤器组。然而,您可以将过滤器复制到该项目中设置的其他过滤器组。如

果您要将文件夹过滤器复制到其他过滤器组,而且该文件夹在该过滤器组中尚未处于活动状态,则会

自动添加该文件夹。

复制过滤器:

1. 从 Filter Set (过滤器组)下拉菜单中,选择一个过滤器组。

2. 在“Filters (过滤器)”选项卡上,选择一个过滤器。

3. 右键单击,然后选择 Copy Filter to (复制过滤器到)。

屏幕上将显示 Select a Filter Set (选择过滤器组)窗口,其中显示了全部过滤器组的列表。

4. 选择一个过滤器组,然后单击 OK (确定)。

过滤器即可添加到该过滤器组中,位于末尾的位置处。

5. (文件夹管理器的可选操作)通过拖放过滤器,将过滤器列表的顺序调整成所需的正确顺序。

问题会根据新过滤器随之进行调整。

使用过滤器组模板

过滤器组模板可让您在不同的项目中使用相同的项目设置。过滤器组模板包含以下设置:

• Folder Filters (文件夹过滤器):控制问题如何排列到文件夹中

• Visibility Filters (可见性过滤器):控制显示及隐藏哪些问题

• Folders properties (文件夹属性):名称、颜色及其在哪些过滤器中处于活动状态

• Custom Tags (自定义标签):显示哪些审计字段及每个字段的值

32 Visual Studio 安全编码包用户指南

Page 37: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

本小节包含以下主题:

• 导出模板

• 导入模板

导出模板

导出模板时会创建一个文件,其中包含当前项目的过滤器组和自定义标签。使用该模板可以将项目

配置导入到其他项目文件中。

导出模板:

1. 选择 Fortify Software - Project Configuration (项目配置)。

屏幕上将显示 Project Configuration (项目配置) 对话框。

2. 单击 Filter Set (过滤器组)选项卡。

3. 单击 Export Project Template (导出项目模板)。

屏幕上将显示 Save Project Template (保存项目模板)对话框。

4. 浏览至您要保存该文件的位置。

5. 输入一个文件名,不必包含扩展名。

6. 单击 Save (保存)。

模板组的当前设置即会保存到该文件中。

导入模板

导入模板时会覆盖项目配置的设置。过滤器组和自定义标签也会替换成模板中相应的内容。

导入模板:

1. 选择 Fortify Software - Project Configuration (项目配置)。

屏幕上将显示 Project Configuration (项目配置)对话框。

2. 单击 Filter Set (过滤器组)选项卡。

3. 单击 Import Project Template (导入项目模板)。

屏幕上将显示 Import Project Template (导入项目模板)对话框。

4. 选择该模板文件。

5. 单击 Import (导入)。

模板过滤器组和自定义标签会随之更新。

将结果上传到 Fortify Team Server扫描项目之后,您可以将审计结果和任何审计信息上传到 Fortify SCA Team Server。

您可以使用命令行实用程序 tsclient.bat,以列出项目、上传 FPR 文件以及下载 FPR 文件。

tsclient 命令行实用程序位于:

<install_directory>/bin/tsclient/tsclient.bat

使用以下语法将 FPR 文件上传至特定的项目:

tsclient -u <FPRfile> -p <ProjectID>

使用以下语法下载 FPR 文件:

tsclient -d -p <ProjectID> -o <FPRfilename> -dir <directory>

使用以下语法列出 Fortify Team Server 上的当前项目和项目 ID:

tsclient -l

Visual Studio 安全编码包用户指南 33

Page 38: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

更改 Fortify Team Server 的 URL, serversettings.properties 文件中的 fortify.teamservers.base.uri 属性。该文件位于:

<installdir>/Core/private-bin/tsclient/serversettings.properties

注意:如果没有对 Fortify Team Server 进行配置以便使用 authentication,那么 tsclient 将无法识

别登录信息。

管理审计本节介绍了:

• 打开一个现有的审计

• 从多个审计工具中合并审计结果

• 保存审计项目

打开一个现有的审计要恢复之前保存的审计工作,选择 Fortify Software - Open Audit Project (打开审计项目)。

您也可以恢复外部生成的审计的工作。这一点非常有用,例如,如果针对您使用的解决方案的分析已

经被别人在其他计算机上运行了,而您希望在自己的计算机上运行分析的时候打开该审计项目。

从多个审计工具中合并审计结果您可以将审计信息从一个外部的审计资源合并到一个现有的审计中。这个选项允许一个审计工具去合

并一个在其他地方创建的,或者来自其他工具的审计项目。

要合并审计,请选择 Fortify Software - Merge Audit Projects (合并审计项目)。

注意:如果您使用该选项,且没有现存的审计项目,则会创建一个新的审计项目。

保存审计项目您可以按以下方式保存审计项目:

• Save Audit Project (保存审计项目)选项会将审计项目保存到包含 .sln 文件的目录中。

• Save Audit As (另存审计)选项会将该审计项目保存到您指定的位置。

要保存审计项目,请选择 Fortify Software - Save Audit Project (保存审计项目)或 Save Audit Project As (另存审计项目)。

管理规则包本节介绍了如何更新安全编码规则包并管理规则的安全设置。

更新安全编码规则包安全编码规则包会找出核心语言和和第三方编程接口中的安全漏洞。

要充分利用安全编码包提供的行业领先技术,需要完整和 新的安全编码规则包。

您可以通过以下方式来获得新的安全编码规则包:

• 轮询规则包更新服务器

• 将自定义的规则文件手动复制到 <install_directory>/Core/config/customrules 目录

注意:当您更新一个规则包时,会覆盖对规则包掩码的任何更改。

34 Visual Studio 安全编码包用户指南

Page 39: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

更新规则包:

1. 选择 Fortify Software - Options (选项) - Rulepack Management (规则包管理)。

2. 单击 Update (更新)。

会更新安全编码规则包。

有关可用的安全编码规则包的说明,请参见 《Secure Coding Rulepack Reference》(安全编码规

则包参考)。

故障排除要排除问题,请通过启动带有 Fortify 调试选项的 devenv (Visual Studio 可执行文件)来启用调试

模式,如下所示:

devenv /fortifydebug

注意:如果您看到了 “translation failed (转换失败)”的信息,请参见《Fortify Source Code Analyzer 用户指南》。

要获取诊断问题的帮助,请将日志文件发送到 Fortify Software。

日志文件的位置是:

C:\Documents and Settings\<username>\Local Settings\Application Data\Fortify\sca5.0\log

C:\Documents and Settings\<username>\Local Settings\Application Data\Fortify\IDE\VSPlugin\log

Visual Studio 安全编码包用户指南 35

Page 40: Visual Studio 安全编码包 用户指南 - old.sebug.netold.sebug.net/paper/books/Fortify/...Visual_Studio_User_Guide_v5.2.pdf · 本指南适用于使用安全编码包的 Microsoft

36 Visual Studio 安全编码包用户指南