Brakeman 是一种静态分析工具,用于检查 Ruby on Rails 应用程序是否存在安全漏洞。
使用 RubyGems:
gem install brakeman
使用捆绑器:
group :development do
gem 'brakeman'
end
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
使用presidentbeef:
docker pull presidentbeef/brakeman
使用 Docker 从源代码构建:
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
从 Rails 应用程序的根目录:
brakeman
在 Rails 根之外:
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 root 之外(注意输出文件是相对于 path/to/rails/application 的):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
Brakeman 应该适用于从 2.3.x 到 7.x 的任何版本的 Rails。
Brakeman 可以分析使用 Ruby 1.8 和更新语法编写的代码,但至少需要 Ruby 2.5.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
请注意,除报告外,所有 Brakeman 输出都发送到 stderr,这使得将 stdout 重定向到文件并获取报告变得简单。
查看各种调试信息:
brakeman -d
如果需要,可以跳过特定检查。名称需要大小写正确。例如,要跳过查找默认路由 ( DefaultRoutes
):
brakeman -x DefaultRoutes
多项检查应以逗号分隔:
brakeman -x DefaultRoutes,Redirect
做相反的事情,只运行一组特定的测试:
brakeman -t SQL,ValidationRegex
如果 Brakeman 运行有点慢,试试
brakeman --faster
这将禁用一些功能,但可能会快得多(目前它与 相同--skip-libs --no-branching
)。警告:这可能会导致 Brakeman 遗漏一些漏洞。
默认情况下,如果发现任何安全警告或遇到扫描错误,Brakeman 将返回一个非零退出代码。要禁用此功能:
brakeman --no-exit-on-warn --no-exit-on-error
要跳过 Brakeman 可能无法解析的某些文件或目录,请使用:
brakeman --skip-files file1,/path1/,path2/
要将一次扫描的结果与之前的扫描进行比较,请使用 JSON 输出选项,然后:
brakeman --compare old_report.json
这将输出带有两个列表的 JSON:一个固定警告和一个新警告。
如果配置为这样做,Brakeman 将忽略警告。默认情况下,它会在config/brakeman.ignore
. 要创建和管理此文件,请使用:
brakeman -I
有关此工具报告的警告的更多信息,请参阅warning_types 。
HTML 输出格式提供了触发警告的原始应用程序源的摘录。由于在查找漏洞时进行的处理,来源可能与报告的警告不同,报告的行号可能略有偏差。但是,上下文仍然提供了对引发警告的代码的快速查看。
Brakeman 为每个警告分配一个置信度。这提供了一个粗略的估计,即工具在多大程度上确定给定的警告实际上是一个问题。当然,这些评级不应被视为绝对真理。
信心分为三个层次:
仅获得高于给定置信度的警告:
brakeman -w3
该-w
开关采用 1 到 3 之间的数字,1 表示低(所有警告),3 表示高(仅最高置信度警告)。
可以从 YAML 文件中存储和读取 Brakeman 选项。
为了简化编写配置文件的过程,该-C
选项将输出当前设置的选项:
$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/
在命令行上传递的选项优先于配置文件。
默认配置位置是./config/brakeman.yml
、~/.brakeman/config.yml
和/etc/brakeman/config.yml
该-c
选项可用于指定要使用的配置文件。
[/hidecontent]