Brakeman是一种静态分析工具,可检查Ruby在Rails应用程序上是否有安全漏洞。
使用红宝石:
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
在铁轨根部之外(请注意,输出文件是相对于路径/到/导轨/应用程序的):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
Brakeman应使用2.3.x至7.x的任何版本的Rails。
Brakeman可以分析使用Ruby 2.0语法和较新的编写代码,但至少需要Ruby 3.0.0运行。
有关选项的完整列表,请使用brakeman --help或查看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
有关此工具报告的警告的更多信息,请参见WARNNING_TYPES。
HTML输出格式提供了触发警告的原始应用程序源的摘录。由于在寻找漏洞时进行的处理,该来源可能不类似于报告的警告,并且报告的行号可能会稍微关闭。但是,上下文仍然可以快速查看提高警告的代码。
Brakeman向每个警告分配一个信心级别。这提供了一个粗略的估计,即该工具如何确定给定警告实际上是一个问题。自然,这些评级不应被视为绝对真理。
有三个级别的信心:
只能获得高于给定信心水平的警告:
brakeman -w3
-w开关的数字从1到3,其中1个较低(所有警告)和3个高(仅最高信心警告)。
可以存储Brakeman选项并从YAML文件中读取。
为了简化编写配置文件的过程, -C选项将输出当前设置的选项:
$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/在命令行中传递的选项优先于配置文件。
默认~/.brakeman/config.yml位置是./config/brakeman.yml和/etc/brakeman/config.yml
-c选项可用于指定要使用的配置文件。
Jenkins/Hudson有一个插件。
要进行更连续的测试,请尝试使用Guard插件。
有几个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
Brakeman免费用于非商业用途。
有关详细信息,请参见复制。