Brakeman은 보안 취약점에 대한 Ruby on Rails 응용 프로그램을 확인하는 정적 분석 도구입니다.
Rubygems 사용 :
gem install brakeman
Bundler 사용 :
group :development do
gem 'brakeman' , require : false
endDocker 사용 :
docker pull presidentbeef/brakeman
Docker를 사용하여 출처에서 빌드 :
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
Rails 응용 프로그램의 루트 디렉토리에서 :
brakeman
Rails Root 외부 :
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은 2.3.x에서 7.x에서 모든 버전의 레일과 협력해야합니다.
Brakeman은 Ruby 2.0 구문 및 최신 코드를 분석 할 수 있지만 최소한 Ruby 3.0.0이 필요합니다.
전체 옵션 목록의 경우 brakeman --help 또는 옵션 .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은 보안 경고가 발견되거나 스캔 오류가 발생하면 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 에서 configuration 파일을 찾습니다. 이 파일을 만들고 관리하려면 다음을 사용하십시오.
brakeman -I
출구 코드에 영향을 미치지 않고 무시하는 경고를 일시적으로보고 싶다면 다음을 사용하십시오.
brakeman --show-ignored
이 도구에서보고 한 경고에 대한 자세한 내용은 경고 _types를 참조하십시오.
HTML 출력 형식은 경고가 트리거 된 원래 응용 프로그램 소스의 발췌를 제공합니다. 취약점을 찾는 동안 수행 된 처리로 인해 소스는보고 된 경고와 비슷하지 않을 수 있으며보고 된 줄 번호는 약간 꺼질 수 있습니다. 그러나 컨텍스트는 여전히 경고를 제기 한 코드를 빠르게 살펴 봅니다.
Brakeman은 각 경고에 신뢰 수준을 할당합니다. 이것은 주어진 경고가 실제로 문제라는 도구가 얼마나 확실한 지에 대한 대략적인 추정치를 제공합니다. 당연히 이러한 등급은 절대적인 진실로 받아 들여서는 안됩니다.
세 가지 수준의 신뢰가 있습니다.
주어진 신뢰 수준 이상의 경고를 얻으려면 :
brakeman -w3
-w 스위치는 1에서 3까지의 숫자를, 1은 1이 낮고 (모든 경고), 3은 높고 (가장 높은 신뢰 경고 만).
Brakeman 옵션은 YAML 파일에서 저장하고 읽을 수 있습니다.
구성 파일을 작성하는 프로세스를 단순화하기 위해 -C 옵션은 현재 설정된 옵션을 출력합니다.
$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/CommandLine에서 전달 된 옵션은 구성 파일보다 우선 순위가 있습니다.
기본 구성 위치는 ./config/brakeman.yml , ~/.brakeman/config.yml 및 /etc/brakeman/config.yml 입니다.
-c 옵션을 사용하여 사용할 구성 파일을 지정할 수 있습니다.
Jenkins/Hudson에 사용할 수있는 플러그인이 있습니다.
보다 지속적인 테스트를 위해 가드 플러그인을 사용해보십시오.
사용할 수있는 몇 가지 github 작업이 있습니다.
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
.. 그리고 더!
웹 사이트 : http://brakemanscanner.org/
트위터 : https://twitter.com/brakeman
채팅 : https://gitter.im/presidentbeef/brakeman
Brakeman은 비상업적 용도로 무료입니다.
자세한 내용은 복사를 참조하십시오.