업데이트로 돌아가기
New releaseAug 13, 2026

brakeman v8.0.6

Ruby on Rails 애플리케이션을 위한 정적 분석 보안 취약점 스캐너

공유

Brakeman Logo

Build Status Code Coverage

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은 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

Brakeman을 사용하는 곳

..그 외 더!

홈페이지/뉴스

Website: http://brakemanscanner.org/

Twitter: https://twitter.com/brakeman

Chat: https://gitter.im/presidentbeef/brakeman

라이선스

Brakeman은 비상업적 용도로 무료입니다.

자세한 내용은 COPYING을 참조하세요.

카테고리