强化源分析器和Apache Lenya

时间:2009-07-21 19:03:58

标签: java apache static-analysis fortify

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

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

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

然而,当我尝试并运行时:

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

我明白了:

  

建立身份Lenya找不到。

我查看了 buid.sh 文件,发现它只是重置当前的ant home,classpath和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没有正确做的事情。任何见解都会很棒。

3 个答案:

答案 0 :(得分:2)

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

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

  1. (很长的路)编写一个脚本来翻译和分析源代码,方法是提供源代码的路径和类路径到sourceanalyzer可执行文件。
  2. (简短的方法)使用SCACompiler而不是javac作为编译器。您需要为此修改构建脚本。
  3. 我更喜欢前者,因为它在处理大型代码库时具有可自定义性。

    PS:这是哪个版本的Fortify?

答案 1 :(得分:1)

不要使用非接触式命令,即用于C / C ++集成。由于Lenya是用Java编写的,因此最好使用其他命令。试试这个第一个翻译步骤(从你的基础lenya目录开始):

sourceanalyzer -b lenya -Xmx1200M -source 1.5 -cp "**/*.jar" "**/*"

答案 2 :(得分: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 {Fortify ant options} {ant options}

  2. 上述内容的快捷方式:

    sourceanalyzer -b {Fortify options} ant {ant options}

  3. 或者,如果您创建自定义build.xml,如附录所示:

    ant -lib sourceanalyzer.jar {ant options}