Анализатор источников Fortify и Apache Lenya
-
18-09-2019 - |
Вопрос
Я пытаюсь использовать анализатор исходного кода Fortify для исследовательского проекта в моей школе по проверке безопасности веб-приложений Java с открытым исходным кодом.В настоящее время я работаю над Apache Lenya.Я работаю с последней стабильной версией (Lenya v2.0.2).
В корневом каталоге есть файл с именем build.sh
.Этот файл вызывается для сборки Lenya с использованием версии Ant, поставляемой с выпуском (в tools/bin
папка).Я прекрасно могу построить Леню, когда бегу. ./build.sh
.Итак, можно предположить, что запуск следующей команды в Fortify сработает:
sourceanalyzer -b lenya -Xmx1200M touchless ./build.sh
Однако, когда я пытаюсь запустить:
sourceanayzer -b lenya -Xmx1200M -scan -f lenya.fpr
Я получил:
идентификатор сборки Леня не найден.
Я посмотрел на Build.sh файл и заметил, что он просто сбрасывает текущие переменные 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:
- (Долгий путь) Напишите сценарий для перевода и анализа исходного кода, указав путь к исходному коду и путь к классам исполняемого файла sourceanalyzer.
- (Короткий путь) Используйте 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 $@
См. Руководство пользователя Fortify SCA для трех типов интеграции ant:
Переопределите свойство build.compiler:
ant -lib sourceanalyzer.jar {Усилить параметры ant} {Параметры ant}
Ярлык к вышесказанному:
sourceanalyzer -b {Параметры усиления} ant {Параметры ant}
Или, если вы создадите собственный файл build.xml, как показано в приложении:
ant -lib sourceanalyzer.jar {опции ant}