
Ruby on Rails 애플리케이션을 위한 정적 분석 보안 취약점 스캐너
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
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은 Rails 2.3.x부터 8.x까지 모든 버전에서 작동해야 합니다.
Brakeman은 Ruby 2.0 이상 구문으로 작성된 코드를 분석할 수 있지만, 실행하려면 최소 Ruby 3.2.0이 필요합니다.
전체 옵션 목록은 brakeman --help를 사용하거나 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은 보안 경고가 발견되거나 스캔 오류가 발생하면 0이 아닌 종료 코드를 반환합니다. 이를 비활성화하려면:
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를 참조하세요.
HTML 출력 형식은 경고가 트리거된 원본 애플리케이션 소스의 발췌문을 제공합니다. 취약점을 찾는 동안 처리되는 과정 때문에 소스가 보고된 경고와 일치하지 않을 수 있으며 보고된 줄 번호가 약간 다를 수 있습니다. 그러나 컨텍스트는 여전히 경고를 발생시킨 코드를 빠르게 살펴볼 수 있게 해줍니다.
Brakeman은 각 경고에 신뢰 수준을 할당합니다. 이는 주어진 경고가 실제로 문제일 가능성에 대한 대략적인 추정치를 제공합니다. 당연히 이러한 평가는 절대적인 진실로 받아들여서는 안 됩니다.
세 가지 신뢰 수준이 있습니다:
특정 신뢰 수준 이상의 경고만 얻으려면:
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용 플러그인이 있습니다.
더욱 지속적인 테스트를 위해 Guard 플러그인을 사용해 보세요.
몇 가지 GitHub Actions을 사용할 수 있습니다.
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
Website: http://brakemanscanner.org/
Twitter: https://twitter.com/brakeman
Chat: https://gitter.im/presidentbeef/brakeman
Brakeman은 비상업적 용도로 무료입니다.
자세한 내용은 COPYING을 참조하세요.