___ _____ _ _
/ _ | _ _ | | | |
/ /_ _ __ _ __ | | | | __ _ __ ___ __ _ | | _
| _ | ' _ | ' _ | | | ' _ | ' __/ _ / _ ` | __ |
| | | | | _) | | _) | | | | | | | | __/ (_ | | | _
_ | | _/ .__/ | .__/ _ / | _ | | _ | _ | _ __ | _ _,_ | _ _ |
| | | |
| _ | | _ | 이 repo는 appthreat/sast-scan (및 quay.io/appthreat/sast-scan )을 구축합니다. 이것은 DevSecops 엔지니어를위한 스위스 군용 나이프와 같습니다.
| 프로그래밍 언어 | 도구 |
|---|---|
| ansible | ansible-lint |
| 꼭대기 | PMD |
| AWS | CFN-LINT, CFN_NAG |
| 세게 때리다 | 쉘 점검 |
| Bom | cdxgen |
| 신조 | gitleaks |
| DEPSCAN | dep-scan |
| 가다 | GOSEC, 정적 체크 |
| 자바 | CDXGEN, Gradle, Find-Sec-Bugs, PMD |
| JSP | PMD |
| JSON | JQ, JSONDIFF, JSONSCHEMA |
| 코 틀린 | Detekt |
| Kubernetes | Kube-Score |
| nodejs | cdxgen, nodejsscan, eslint, yarn |
| 인형 | 꼭두각시 린트 |
| plsql | PMD |
| 파이썬 | 산적, cdxgen, pipenv |
| 루비 | Cyclonedx-ruby |
| 녹 | CDXGEN,화물 확인 |
| Terraform | TFSEC |
| 시각적 힘 (VF) | PMD |
| 아파치 속도 (VM) | PMD |
| 얌 | yamllint |
일부 보고서는 Sarif라는 개방형 표준으로 전환됩니다. 이를위한 다양한 시청자 옵션에 대한 Viewing reports 섹션을 참조하십시오.
Sast-Scan은 CI와 함께 사용하고 지역 개발을위한 사전 커밋 훅으로 사용하기에 이상적입니다.
문서를 참조하십시오
이 도구는이 작업을 사용하여 Github 작업과 함께 사용할 수 있습니다. 지원되는 모든 언어를 사용할 수 있습니다.
이 저장소는 Sast-Scan과 자체 테스트합니다! 이 repo의 github 워크 플로 파일을 확인하십시오.
- name : Self sast-scan
uses : AppThreat/[email protected]
with :
output : reports
type : python,bash
- name : Upload scan reports
uses : actions/[email protected]
with :
name : sast-scan-reports
path : reports 이 사용자 정의 빌더를 사용하여 Sast-Scan을 빌드 단계로 추가하십시오.
전체 단계는 아래에서 재현됩니다.
git clone https://github.com/CloudBuildr/google-custom-builders.git
cd google-custom-builders/sast-scan
gcloud builds submit --config cloudbuild.yaml . steps :
- name : " gcr.io/$PROJECT_ID/sast-scan "
args : ["--type", "python"] 문서를 참조하십시오
구성이있는 샘플 프로젝트는 여기에서 찾을 수 있습니다
sast :
stage : test
image :
name : appthreat/sast-scan
script :
- scan --src ${CI_PROJECT_DIR} --type nodejs --out_dir ${CI_PROJECT_DIR}/reports
artifacts :
paths :
- $CI_PROJECT_DIR/reports/ Sast-Scan에서 제작 한 SARIF 보고서는 다른 호환 도구와 통합 될 수 있습니다. 시각화 목적으로 BigQuery와 같은 데이터베이스로 쉽게 가져올 수도 있습니다. SARIF 형식에 대한 자세한 설명은 통합 문서를 참조하십시오.
파이썬 프로젝트를 스캔하십시오
docker run --rm -e " WORKSPACE= ${PWD} " -v " $PWD :/app:cached " quay.io/appthreat/sast-scan scan --src /app --type pythonWindows에서는 터미널에 따라 명령이 약간 변경됩니다.
CMD
docker run --rm -e "WORKSPACE=%cd%" -e "GITHUB_TOKEN=%GITHUB_TOKEN%" -v "%cd%:/app:cached" quay.io/appthreat/sast-scan scan
PowerShell 및 PowerShell Core
docker run --rm -e "WORKSPACE=$(pwd)" -e "GITHUB_TOKEN=$env:GITHUB_TOKEN" -v "$(pwd):/app:cached" quay.io/appthreat/sast-scan scan
WSL 배쉬
docker run --rm -e "WORKSPACE=${PWD}" -e "GITHUB_TOKEN=${GITHUB_TOKEN}" -v "$PWD:/app:cached" quay.io/appthreat/sast-scan scan
git- 배쉬
docker run --rm -e "WORKSPACE=${PWD}" -e "GITHUB_TOKEN=${GITHUB_TOKEN}" -v "/$PWD:/app:cached" quay.io/appthreat/sast-scan scan
Git-Bash의 $ PWD 이전의 슬래시 (/)를 잊지 마십시오!
여러 프로젝트를 스캔하십시오
docker run --rm -e " WORKSPACE= ${PWD} " -v " $PWD :/app:cached " quay.io/appthreat/sast-scan scan --src /app --type credscan,nodejs,python,yaml --out_dir /app/reportsJava 프로젝트를 스캔하십시오
Java 및 JVM 언어 기반 프로젝트의 경우 Dev 및 CI 워크 플로에서 Sast-Scan을 호출하기 전에 프로젝트를 컴파일하는 것이 중요합니다.
docker run --rm -e " WORKSPACE= ${PWD} " -v ~ /.m2:/.m2 -v < source path > :/app quay.io/appthreat/sast-scan scan --src /app --type java
# For gradle project
docker run --rm -e " WORKSPACE= ${PWD} " -v ~ /.gradle:/.gradle -v < source path > :/app quay.io/appthreat/sast-scan scan --src /app --type java파이썬 프로젝트 스캔 (원격 측정없이)
docker run --rm -e " WORKSPACE= ${PWD} " -e " DISABLE_TELEMETRY=true " -v $PWD :/app quay.io/appthreat/sast-scan scan --src /app --type python자동 프로젝트 감지
자동 감지를 활성화하려면 건너 뛰십시오 --type 하십시오. 또는 프로젝트에 여러 유형이있는 경우 쉼표로 구분 된 값을 통과합니다.
적기
docker run --rm -v < source path > :/app quay.io/appthreat/sast-scan bandit -r /app 보고서는 --out_dir 에 지정된 디렉토리에서 작성됩니다. 위의 예에서는 소스 코드 루트 디렉토리의 디렉토리가 될 reports 로 설정됩니다.
보고서 중 일부는 Sarif라는 표준으로 변환됩니다. 이러한 보고서는 Extension .sarif 로 끝납니다. SARIF 파일을 열고 보려면 다음과 같은 뷰어가 필요합니다.
예제 보고서 :
온라인 뷰어를 사용하여 표시된대로 .sarif 파일을 수동으로 업로드 할 수 있습니다.

Azure DevOps SARIF 플러그인을 통합하여 표시된대로 빌드 실행과 통합 된 분석을 표시 할 수 있습니다.


Gitlab Sast는 수많은 단일 목적 분석기를 사용하고 GO 기반 컨버터를 사용하여 사용자 정의 JSON 형식을 생성합니다. 이 모델은 여러 컨테이너 이미지가 다운로드되어야하므로 Azure Pipelines, CodeBuild 및 Google CloudBuild와 같은 CI 환경에 적합하지 않기 때문에 빌드 시간이 증가하는 단점이 있습니다. 또한 Gitlab에서 사용하는 라이센스는 분석기가 기존 OSS 도구를 감싸더라도 OpenSource가 아닙니다!
Mir Swamp는 Sast-Scan에 대한 여러 언어 Simillar에 대한 OSS 및 상업용 정적 분석을 모두 실행하기위한 무료 온라인 서비스입니다. 무료 Swamp-in-A-Box 제품이 있지만 설정은 약간 번거 듭니다. 그들은 많은 Perl 기반 변환기와 함께 Scarf라는 XML 형식을 사용합니다. 반면 Sarif는 JSON 기반이며 통합 및 UI 목적으로 작업하기가 훨씬 쉽습니다. Python을 채택함으로써 Sast-Scan은 사용자 정의를 위해 작업하기가 약간 쉽습니다.
Appthreat는 Shiftleft가 자금을 지원하고 지원합니다. 일반적인 토론 및 제안은 Github 문제 또는 Shiftleft 토론 포럼을 자유롭게 사용하십시오.