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免費用於非商業用途。
有關詳細信息,請參見複製。