4

我们在一个团队中工作,并在本地机器上运行 Fortify 软件。我们都在不同的根目录中设置了项目代码,例如我在 C:\work\development\ 有项目代码,我的几个同事有 C:\Development\mainCodeLine\ 等类似的东西,即项目所在的根文件夹-代码所在的位置不同。最初只有我在 Fortify 上工作,但现在团队中有很多成员在运行 Fortify。我们目前共享保存在存储库中的 FPR 文件。我们从存储库下载它并在同一文件上运行 SCA 命令,以保留隐藏/抑制问题等详细信息。在一段时间内,我们观察到:

  1. 生成的唯一实例 ID 仅在单台机器上是唯一的。即,唯一实例 ID 仅在我的机器上扫描时保持不变,并且在我队友的机器上进行扫描时它会改变。有什么方法可以配置 Fortify 在多台机器上的多次扫描中保持相同?因此,我们不能在过滤器文件中使用唯一实例 ID。

  2. 如果我和我的队友在 2 台不同的机器上以相同的代码并行运行扫描(如前所述,只有项目的根目录不同),那么我们有什么办法可以整合这 2 份报告?

4

4 回答 4

3

确实有一些方法可以组合在不同机器上生成的扫描结果。我认为实现这一目标的最佳方法是利用 Fortify 软件安全中心 (SSC)。用户每次都进行“新”扫描,当上传到 SSC 中的项目时,它们将被合并 - 保留任何以前的审计信息。

另一种方法是使用命令行 FPRUtility。(目前我面前没有安装,因此名称可能略有不同 - 但它与 sourceanalyzer 和 auditworkbench 一起位于 bin 目录中)。该-h选项应提供开始合并 FPR 的信息。

希望这可以帮助。

于 2013-02-25T19:49:41.810 回答
3

如果不同的 IID 被不同的整体根更改,那似乎是一个错误。SCA 通常使用规范根,因此它的放置位置不应该有任何区别。Xelco52 部分正确,但如果您想在它们具有不同 IID 时进行合并,最好将 FPRUtility 与-forceMigration选项一起使用,例如:

FPRUtility -merge -project Results1.fpr -source Results2.fpr -f mergedResults.fpr -forceMigration

您还应该能够通过com.fortify.model.ForceIIDMigration=true在 Core/config/fortify.properties 中设置(并重新启动 AWB)在 AWB 中获得这种影响

于 2013-11-28T11:02:31.970 回答
2

如果可能,请考虑使用 HP Fortify 软件安全中心 (SSC)。这将允许用户将扫描上传到中央存储库并合并结果。这有助于创建扫描的运行历史并知道谁上传了什么。

此外,这将允许您的团队使用名为“协作审计”的功能,该功能将让每个开发人员将最新的 FPR 从软件安全中心 (SSC) 拉到他们的 IDE 中。然后,开发人员可以进行更改并推送回 SSC,结果再次合并。

于 2016-06-17T00:24:18.327 回答
0

我不认为合并是正确的方法。我会这样做:(1)​​在所有开发人员(user#)中,在他们自己的机器上,建立ProjectRoot的命名约定(指向user#的代码库,即/home/user#/mycode)和工作目录(即 /local/sharebuild)

(2) 每个用户在自己的机器上使用以下命令: (2a) CLEAN CACHE: ~/sourceanalyzer -b user# -Dcom.fortify.sca.ProjectRoot=/home/user#/mycode -Dcom.fortify.WorkingDirectory= /local/sharebuild/ -logfile /local/sharebuild/user#.sca.log -clean
(2b) 翻译:~/sourceanalyzer -b user# -64 -Xmx11000M -Xss24M -Dcom.fortify.sca.ProjectRoot=/home/ user#/mycode/ -Dcom.fortify.WorkingDirectory=/local/sharebuild/ -logfile /local/sharebuild/user#.sca.log -source 1.5 -cp 'your_class_path' -extdirs '你的 *.war 文件' '/home /user#/mycode/**/*'

(3) 将所有中间代码集成到构建机器:每个用户将他的整个 /local/sharebuild/sca#.## 复制到集中构建机器的目录 /local/sharebuild/sca#.##/build/ 下(你将找到包含所有中间代码树 (.nst) 的子目录 ./user#(每个用户的构建 ID)。

(4) SCAN:在构建服务器上,使用以下命令进行扫描:~/sourceanalyzer -b user1 -b user2 -b user3 -b user# -64 -Xmx11000M -Xss24M -Dcom.fortify.sca.ProjectRoot=/home/user #/mycode/ -Dcom.fortify.WorkingDirectory=/local/sharebuild/ -logfile /local/sharebuild/scan.sca.log -scan -f build_all.fpr

第 4 步将拾取所有 .nst(规范化语法树)文件并执行扫描。

如果每个用户在步骤 2a 将他的代码部分安装到集中式机器上,则可以省略步骤 3。

于 2015-01-27T21:26:35.150 回答