Brakeman - это статический инструмент анализа, который проверяет Ruby на Rails приложения на уязвимости безопасности.
Использование Rubygems:
gem install brakeman
Использование Bundler:
group :development do
gem 'brakeman' , require : false
endИспользование Docker:
docker pull presidentbeef/brakeman
Использование Docker для построения из источника:
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
Из корневого каталога приложения Rails:
brakeman
За пределами корня рельсов:
brakeman /path/to/rails/application
Из корневого каталога приложения Rails:
docker run -v "$(pwd)":/code presidentbeef/brakeman
С немного более приятным цветом:
docker run -v "$(pwd)":/code presidentbeef/brakeman --color
Для отчета HTML:
docker run -v "$(pwd)":/code presidentbeef/brakeman -o brakeman_results.html
За пределами корня Rails (обратите внимание, что выходной файл относится к Path/To/Rails/Application):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
Тормоник должен работать с любой версией Rails с 2.3.x до 7.x.
Торерскиймон может проанализировать код, написанный с помощью синтаксиса Ruby 2.0 и новым, но требует как минимум Ruby 3.0.0 для работы.
Для полного списка параметров используйте brakeman --help или см. File Options.md.
Чтобы указать выходной файл для результатов:
brakeman -o output_file
Выходной формат определяется расширением файла или с помощью опции -f . Текущие параметры: text , html , tabs , json , junit , markdown , csv , codeclimate и sonar .
Можно указать несколько выходных файлов:
brakeman -o output.html -o output.json
Для вывода как в файл, так и на консоли, с цветом:
brakeman --color -o /dev/stdout -o output.json
Чтобы подавить информационные предупреждения и просто вывести отчет:
brakeman -q
Обратите внимание на все выводы тормоза, за исключением того, что отчеты отправляются в STDERR, что делает его простым перенаправлять STDOUT в файл и просто получить отчет.
Чтобы увидеть все виды отладки информации:
brakeman -d
Конкретные проверки могут быть пропущены, при желании. Имя должно быть правильным случаем. Например, чтобы пропустить поиск маршрутов по умолчанию ( DefaultRoutes ):
brakeman -x DefaultRoutes
Несколько чеков должны быть разделены запятой:
brakeman -x DefaultRoutes,Redirect
Чтобы сделать обратное и запустить только определенный набор тестов:
brakeman -t SQL,ValidationRegex
Если тормоец работает немного медленно, попробуйте
brakeman --faster
Это отключит некоторые функции, но, вероятно, будет намного быстрее (в настоящее время это то же самое, что и --skip-libs --no-branching ). ПРЕДУПРЕЖДЕНИЕ : Это может привести к тому, что торможник пропустит некоторые уязвимости.
По умолчанию Brakeman вернет ненулевой код выхода, если будут обнаружены какие-либо предупреждения о безопасности или возникнут ошибки сканирования. Чтобы отключить это:
brakeman --no-exit-on-warn --no-exit-on-error
Чтобы пропустить определенные файлы или каталогов, которые у тормоза может возникнуть проблемы, используйте:
brakeman --skip-files file1,/path1/,path2/
Чтобы сравнить результаты сканирования с предыдущим сканированием, используйте опцию вывода JSON, а затем:
brakeman --compare old_report.json
Это выведет JSON с двумя списками: одно из фиксированных предупреждений и одно из новых предупреждений.
Тормоник будет игнорировать предупреждения, если настроен на это. По умолчанию он ищет файл конфигурации в config/brakeman.ignore . Чтобы создать и управлять этим файлом, используйте:
brakeman -I
Если вы хотите временно увидеть предупреждения, которые вы проигнорировали, не влияя на код выхода, используйте:
brakeman --show-ignored
См. Warning_types для получения дополнительной информации о предупреждениях, о которых сообщалось этим инструментом.
Выходной формат HTML предоставляет отрывок из исходного источника приложения, где было запускается предупреждение. Из -за обработки, выполненной при поиске уязвимостей, источник может не напоминать сообщаемого предупреждения, и сообщенные номера строк могут быть немного выключены. Тем не менее, контекст по -прежнему обеспечивает быстрый взгляд на код, который поднял предупреждение.
Тормоник назначает уровень уверенности каждому предупреждению. Это обеспечивает приблизительную оценку того, насколько определенным инструментом является то, что заданное предупреждение на самом деле является проблемой. Естественно, эти рейтинги не должны восприниматься как абсолютная истина.
Есть три уровня доверия:
Чтобы получить только предупреждения выше данного уровня доверия:
brakeman -w3
Переключатель -w занимает число от 1 до 3, причем 1 является низким (все предупреждения) и 3 -высокие (только наиболее высокие предупреждения о доверии).
Параметры тормоза могут быть сохранены и прочитаны в файлах YAML.
Чтобы упростить процесс написания файла конфигурации, параметр -C выведет параметры установленных в данный момент:
$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/Параметры, передаваемые в командной линии, имеют приоритет над файлами конфигурации.
/etc/brakeman/config.yml конфигурации ~/.brakeman/config.yml умолчанию ./config/brakeman.yml
Параметр -c можно использовать для указания файла конфигурации для использования.
Для Дженкинса/Гудзона доступен плагин.
Для еще более непрерывного тестирования попробуйте плагин охраны.
Есть пара действий GitHub.
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
.. и еще!
Веб -сайт: http://brakemanscanner.org/
Twitter: https://twitter.com/brakeman
Чат: https://gitter.im/presidentbeef/brakeman
Тудовой человек свободен для некоммерческого использования.
Смотрите копирование для деталей.