presidentbeef/brakeman

GitHub: presidentbeef/brakeman

Brakeman 是一款用于检测 Ruby on Rails 应用程序中安全漏洞的静态分析工具。

Stars: 7247 | Forks: 772

[![Brakeman Logo](http://brakemanscanner.org/images/logo_medium.png)](http://brakemanscanner.org/) [![Build Status](https://circleci.com/gh/presidentbeef/brakeman.svg?style=svg)](https://circleci.com/gh/presidentbeef/brakeman) [![Code Coverage](https://qlty.sh/gh/presidentbeef/projects/brakeman/coverage.svg)](https://qlty.sh/gh/presidentbeef/projects/brakeman) # Brakeman Brakeman 是一款静态分析工具,用于检查 Ruby on 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 ``` 在 Rails 根目录之外: ``` brakeman /path/to/rails/application ``` #### 使用 Docker 运行 在 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 ``` # 兼容性 Brakeman 应该兼容从 2.3.x 到 8.x 的任何 Rails 版本。 Brakeman 可以分析使用 Ruby 2.0 及更新版本语法编写的代码,但至少需要 Ruby 3.2.0 才能运行。 # 基本选项 要获取完整的选项列表,请使用 `brakeman --help` 或查看 [OPTIONS.md](OPTIONS.md) 文件。 为结果指定一个输出文件: ``` brakeman -o output_file ``` 输出格式由文件扩展名或使用 `-f` 选项决定。当前的选项有:`text`、`html`、`tabs`、`json`、`junit`、`markdown`、`csv`、`codeclimate`、`github`、`sarif` 和 `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 ``` 如果你想在不影响退出码的情况下临时查看你忽略的警告,请使用: ``` brakeman --show-ignored ``` # 警告信息 有关此工具报告的警告的更多信息,请参见 [warning\_types](docs/warning_types)。 # 警告上下文 HTML 输出格式提供了触发警告的原始应用程序源码的摘录。由于在寻找漏洞时进行了处理,源码可能看起来不像报告的警告,并且报告的行号可能会略有偏差。然而,上下文仍然提供了对引发警告的代码的快速查看。 # 置信度 Brakeman 为每个警告分配一个置信度。这提供了一个粗略的估计,表明该工具有多大把握认为给定的警告确实是一个问题。当然,这些评级不应被视为绝对真理。 有三个置信度级别: + High(高) - 要么这是一个简单的警告(布尔值),要么非常有可能以不安全的方式使用了用户输入。 + Medium(中) - 这通常表示变量的不安全使用,但该变量可能是也可能不是用户输入。 + Weak(弱) - 通常意味着用户输入以潜在不安全的方式被间接使用。 要仅获取高于给定置信度级别的警告: ``` brakeman -w3 ``` `-w` 开关接受一个 1 到 3 的数字,1 表示低(所有警告),3 表示高(仅最高置信度的警告)。 # 配置文件 Brakeman 选项可以存储在 YAML 文件中并从中读取。 为了简化编写配置文件的过程,`-C` 选项将输出当前设置的选项: ``` $ brakeman -C --skip-files plugins/ --- :skip_files: - plugins/ ``` 在命令行中传递的选项优先于配置文件。 默认的配置文件位置是 `./config/brakeman.yml`、`~/.brakeman/config.yml` 和 `/etc/brakeman/config.yml` 可以使用 `-c` 选项来指定要使用的配置文件。 # 持续集成 Jenkins/Hudson 有一个可用的[插件](http://brakemanscanner.org/docs/jenkins/)。 为了进行更多持续的测试,请尝试 [Guard 插件](https://github.com/guard/guard-brakeman)。 还有几个可用的 [GitHub Actions](https://github.com/marketplace?type=actions&query=brakeman)。 # 构建 ``` git clone git://github.com/presidentbeef/brakeman.git cd brakeman gem build brakeman.gemspec gem install brakeman*.gem ``` # 谁在使用 Brakeman? * [Code Climate](https://codeclimate.com/) * [GitHub](https://github.com/) * [Groupon](http://www.groupon.com/) * [New Relic](http://newrelic.com) * [Twitter](https://twitter.com/) [……以及更多!](http://brakemanscanner.org/brakeman_users) # 主页/新闻 网站:http://brakemanscanner.org/ Twitter:https://twitter.com/brakeman 聊天:https://gitter.im/presidentbeef/brakeman # 许可证 Brakeman 可免费用于非商业用途。 详情请参阅 [COPYING](COPYING.md)。
标签:LNA, Ruby on Rails, 内存转储, 安全漏洞扫描, 聊天机器人, 请求拦截, 错误基检测, 静态代码分析