Sobelow는 Elixir & The Phoenix Framework의 보안 중심 정적 분석 도구입니다. 보안 연구원에게는 이번 지점을 빠르게 볼 수있는 유용한 도구입니다. 프로젝트 관리자의 경우 여러 가지 일반적인 취약점의 도입을 방지하는 데 사용될 수 있습니다.
현재 Sobelow는 다음 유형의 다음 보안 문제를 감지합니다.
잠재적 취약점은 불안에 대한 신뢰에 따라 다른 색상으로 표시됩니다. 신뢰도는 빨간색이고, 중간 신뢰는 노란색이며, 신뢰가 낮은 신뢰는 녹색입니다.
결과는 일반적으로 함수가 불안하게 사용될 수있는 것처럼 보이는 경우 "낮은 신뢰"로 표시되지만 기능이 사용자가 제공 한 입력을 수락하는 경우 안정적으로 결정할 수는 없습니다. 즉 , 발견이 녹색으로 표시되면 매우 불안 할 수 있지만 더 큰 수동 검증이 필요합니다.
참고 : 이 프로젝트는 지속적인 개발 중이며 시간이 지남에 따라 추가 취약점이 표시됩니다. 버그가 발생하거나 추가 기능이나 보안 점검을 요청하려면 문제를여십시오!
Sobelow를 사용하려면 응용 프로그램의 종속성에 추가 할 수 있습니다.
def deps do
[
{ :sobelow , "~> 0.13" , only: [ :dev , :test ] , runtime: false }
]
end명령 줄에서 다음을 실행하여 전 세계적으로 Sobelow를 설치할 수도 있습니다.
$ mix escript.install hex sobelow
최신 릴리스가 아닌 마스터 브랜치에서 설치하려면 다음 명령을 사용할 수 있습니다.
$ mix escript.install github nccgroup/sobelow
설치 후 피닉스 프로젝트를 스캔하는 가장 간단한 방법은 프로젝트 루트에서 다음을 실행하는 것입니다.
$ mix sobelow
참고 : 모든 경로 인수는 절대 경로이거나 응용 프로그램 루트와 관련이 있어야합니다.
--root 또는 -r 응용 프로그램 루트 디렉토리를 지정합니다. 경로 인수, 예를 들어 ../my_project 수락합니다.
--verbose 또는 -v 인쇄 코드 스 니펫 및 추가 찾기 세부 사항.
--ignore 또는 -i 주어진 찾기 유형을 무시하십시오. 쉼표로 구분 된 모듈 이름 (예 : XSS.Raw,Traversal 목록을 허용합니다.
--ignore-files 파일을 무시합니다. 쉼표로 구분 된 파일 이름 (예 : config/prod.exs 목록을 허용합니다.
--details 또는 -d 찾기 유형 세부 정보를 얻습니다. 단일 모듈 이름 (예 : Config.CSRF 허용합니다.
--all-details -모든 발견 유형의 세부 정보를 얻습니다.
--private -업데이트 점검을 건너 뜁니다.
--router 라우터 위치를 지정합니다. 라우터 위치가 비표준 인 경우에만 사용해야합니다. 경로 인수, 예를 들어 my/strange/router.ex 수락합니다.
--exit low , medium 또는 high 의 신뢰 임계 값 이상에서 0이 아닌 출구 상태를 반환합니다. 기본값으로 false 으로 퇴장하여 제로 출구 상태를 반환합니다
--threshold 신뢰 수준 이상의 low (기본값), medium 또는 high 이상의 결과.
--format 또는 -f 결과 출력 형식을 지정합니다. 예를 들어 txt 또는 json (예 : 형식)을 수락합니다.
--verbose 와 같은 옵션은 json 형식에서는 작동하지 않습니다. 모든 json 형식의 결과에는 type , file 및 line 키가 포함됩니다. 다른 키는 다를 수 있습니다.
--quiet 결과 수를 나타내는 단일 줄을 반환합니다. 그렇지 않으면 결과가 없으면 출력을 반환하지 마십시오.
--compact -신뢰에 따라 출력을 가진 최소 단일 라인 결과.
--flycheck -플라이 쉐크 기반 툴링과 호환되는 최소 단일 라인 결과.
--save-config 명령 줄 옵션을 기반으로 구성 파일을 생성합니다. 자세한 내용은 구성 파일을 참조하십시오.
--config 구성 파일로 Sobelow를 실행합니다. 자세한 내용은 구성 파일을 참조하십시오.
--mark-skip-all -표시된 모든 결과를 건너 뛰기 쉬운 것으로 표시합니다.
--clear-skip --mark-skip-all 에 의해 생성 된 명확한 구성.
--skip -건너 뛰기에 표시된 결과를 무시합니다. 자세한 내용은 잘못된 긍정을 참조하십시오.
--version 현재 버전의 Sobelow를 출력합니다. 이것은 CI 단계 또는 Salus와 같은 다른 도구와의 통합에 유용합니다.
Sobelow를 사용하면 사용자가 자주 사용하는 옵션을 구성 파일로 저장할 수 있습니다. 예를 들어, 자신이 끊임없이 달리는 것을 발견하면 다음과 같습니다.
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low
--save-config 플래그를 사용하여 .sobelow-conf config 파일을 만들 수 있습니다.
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low --save-config
이 명령은 응용 프로그램의 루트에서 .sobelow-conf 파일을 만듭니다. 이 파일을 직접 편집하여 변경할 수 있습니다.
옵션 없이는 명령을 실행할 수도 있습니다.
$ mix sobelow --save-config
이 패키지를 사용하여 처음 시작하면 생성 된 구성 파일은 각 옵션의 기본값으로 채워집니다. (이 패키지를 기존 코드베이스에 빠르게 통합하는 데 도움이됩니다.)
이제 저장된 구성으로 Sobelow를 실행하려면 --config 플래그로 Sobelow를 실행할 수 있습니다.
$ mix sobelow --config
Sobelow는 과도한보고 대보자를 선호합니다. 따라서 일반적인 스캔에서 여러 가지 오 탐지를 찾을 수 있습니다. 이러한 결과는 함수 정의 전에 모듈 목록과 함께 # sobelow_skip 댓글을 추가하여 개별적으로 무시할 수 있습니다.
# sobelow_skip ["Traversal"]
def vuln_func ( ... ) do
...
end Sobelow를 새로운 프로젝트에 통합 할 때 많은 오 탐지가있을 수 있습니다. 인쇄 된 모든 결과를 잘못된 양성으로 표시하려면 --mark-skip-all 알 플래그와 함께 Sobelow를 실행하십시오.
적절한 결과를 태그에 올린 후에는 --skip 플래그로 Sobelow를 실행하십시오.
$ mix sobelow --skip
# sobelow_skip 댓글은 함수 레벨 결과 만 표시 할 수 있지만 (구성 문제를 건너 뛰는 데 사용할 수 없음) --mark-skip-all 알 플래그를 사용하여 모든 찾기 유형을 건너 뛸 수 있습니다.
결과 범주는 모듈로 나뉩니다. 그런 다음 이러한 모듈을 사용하여 결과 클래스 ( ignore 및 skip 옵션을 통해)를 무시하거나 취약점 세부 사항 ( details 옵션을 통해)을 얻을 수 있습니다.
이 목록 및 기타 유용한 정보는 명령 줄에서 찾을 수 있습니다.
$ mix help sobelow
단일 명령으로 우산 앱 내의 모든 자식 앱에 대해 Sobelow를 실행하려면 Root mix.exs 파일에서 Sobelow에 대한 별명을 추가 할 수 있습니다.
defp aliases do
[
sobelow: [ "cmd mix sobelow" ]
]
end 우산 앱에서 구성 파일을 사용하려면 각 어린이 애플리케이션에서 .sobelow-conf 작성하고 --config 그 플래그를 사용하십시오.
프로젝트를 스캔 할 때 Sobelow는 때때로 업데이트를 확인하고 새 버전을 사용할 수있는 경우 경고를 인쇄합니다. Sobelow는 스캔 한 프로젝트의 루트에서 .sobelow 파일을 작성하여 마지막 업데이트 확인을 추적합니다.
이 기능이 필요하지 않은 경우 --private 플래그를 스캔과 함께 사용할 수 있습니다.