4

我正在尝试将 Fortify 源代码分析器用于我学校的一个研究项目,以测试开源 Java Web 应用程序的安全性。我目前正在研究 Apache Lenya。我正在使用最后一个稳定版本(Lenya v2.0.2)。

在根目录中有一个名为build.sh. 调用此文件以使用发行版附带的 Ant 版本(在tools/bin文件夹中)构建 Lenya。当我运行时,我可以很好地构建 Lenya ./build.sh。因此,假设在 Fortify 中运行以下命令会起作用:

sourceanalyzer -b lenya -Xmx1200M touchless ./build.sh

但是,当我尝试运行时:

sourceanayzer -b lenya -Xmx1200M -scan -f lenya.fpr

我得到:

未找到构建 ID Lenya。

我查看了buid.sh文件并注意到它只是重置当前的 ant home、类路径和 ant 选项变量,运行 ant build 命令,并将值重置为默认值。所以我手动重置所有变量(没有脚本)而不是运行脚本并运行:

sourceanalyzer -b lenya -Xmx1200M touchless tools/bin/ant -logger org.apache.tools.ant.NoBannerLogger

然后我跑了:

sourceanalyzer -b lenya -Xmx1200M -scan -f lenya.fpr

但我得到了同样的错误。我不确定这是因为我做错了什么,还是 Fortify 做错了什么。任何见解都会很棒。

4

3 回答 3

2

我不确定您是否可以访问 Fortify 文档,但这肯定会有所帮助。您应该参考 SCA 用户指南以了解如何使用 sourceanalyzer 可执行文件。

简而言之,有两种获取 FPR 文件的方法:

  1. (很长的路)通过提供源代码的路径和 sourceanalyzer 可执行文件的类路径,编写一个脚本来翻译和分析源代码。
  2. (捷径)使用 SCACompiler 而不是 javac 作为编译器。您需要为此修改构建脚本。

我更喜欢前者,因为它在处理大型代码库时具有可定制性。

PS:这是哪个版本的 Fortify?

于 2009-07-21T21:00:09.210 回答
1

不要使用 touchless 命令,即用于 C/C++ 集成。由于 Lenya 是用 Java 编写的,因此最好使用其他命令。在您的第一个翻译步骤中尝试此操作(从您的基本 lenya 目录运行):

sourceanalyzer -b lenya -Xmx1200M -source 1.5 -cp "**/*.jar" "**/*"
于 2009-12-16T20:53:34.087 回答
0

您实际使用的命令可以与 Java 构建一起使用,但它有一些限制。使用非接触式构建包装器会创建许多编译器包装器,例如用于 javac,并将这些包装器放在 PATH 环境变量的前面。

如果您的 build.sh 脚本包含对 javac 的完全限定引用,例如 /usr/java/bin/javac,那么非接触式构建集成将不起作用。

user233276 的说明是最有用的。如果您想尝试使用 Fortify SCA 构建集成,我建议该技术是修改 build.sh(请参阅http://svn.apache.org/viewvc/lenya/trunk/build.sh?view=markup&pathrev=400414 ) 并将第 43 行从:

"$ANT_HOME/bin/ant" -logger org.apache.tools.ant.NoBannerLogger -emacs $@

到:

sourceanalyzer -b Lenya "$ANT_HOME/bin/ant" -logger org.apache.tools.ant.NoBannerLogger -emacs $@

有关三种类型的 ant 集成,请参阅 Fortify SCA 用户指南:

  1. 覆盖 build.compiler 属性:

    ant -lib sourceanalyzer.jar {强化 ant 选项} {ant 选项}

  2. 上述方法的捷径:

    sourceanalyzer -b {强化选项} ant {ant 选项}

  3. 或者,如果您按照附录所示制作自定义 build.xml:

    ant -lib sourceanalyzer.jar {ant 选项}

于 2010-11-21T23:23:33.140 回答