Fortify 源分析器和 Apache Lenya
-
18-09-2019 - |
题
我正在尝试将 Fortify 源代码分析器用于我学校的一个研究项目,以测试开源 Java Web 应用程序的安全性。我目前正在研究 Apache Lenya。我正在使用最新的稳定版本(Lenya v2.0.2)。
根目录下有一个文件名为 build.sh
. 。调用此文件是为了使用发行版附带的 Ant 版本(在 tools/bin
文件夹)。当我跑步时我可以很好地构建 Lenya ./build.sh
. 。因此,假设在 Fortify 中运行以下命令可以工作:
sourceanalyzer -b lenya -Xmx1200M touchless ./build.sh
但是,当我尝试运行时:
sourceanayzer -b lenya -Xmx1200M -scan -f lenya.fpr
我得到:
未找到构建 ID Lenya。
我看了看 构建文件 文件并注意到它只是重置当前的 ant home、classpath 和 ant options 变量,运行 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 做得不正确。任何见解都会很棒。
解决方案
我不确定您是否有权访问 Fortify 文档,但这肯定会有所帮助。您应该参阅《SCA 用户指南》以了解如何使用 sourceanalyzer 可执行文件。
简而言之,有两种获取 FPR 文件的方法:
- (漫长的路)通过提供源代码的路径和源分析器可执行文件的类路径来编写脚本来翻译和分析源代码。
- (简短的方法)使用 SCACompiler 而不是 javac 作为编译器。您需要为此修改构建脚本。
我更喜欢前者,因为它在处理大型代码库时具有可定制性。
附:这是哪个版本的 Fortify?
其他提示
不要使用非接触式命令,该命令用于 C/C++ 集成。由于 Lenya 是用 Java 编写的,因此您最好使用其他命令。尝试执行您的第一个翻译步骤(从您的基本 lenya 目录运行):
sourceanalyzer -b lenya -Xmx1200M -source 1.5 -cp "**/*.jar" "**/*"
您使用的命令实际上可以与 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 用户指南》:
覆盖 build.compiler 属性:
ant -lib sourceanalyzer.jar {强化 ant 选项} {ant 选项}
上面的快捷方式:
sourceanalyzer -b {强化选项} ant {ant 选项}
或者,如果您制作自定义 build.xml,如附录所示:
ant -lib sourceanalyzer.jar {ant 选项}