___ _____ _ _
/ _ | _ _ | | | |
/ /_ _ __ _ __ | | | | __ _ __ ___ __ _ | | _
| _ | ' _ | ' _ | | | ' _ | ' __/ _ / _ ` | __ |
| | | | | _) | | _) | | | | | | | | __/ (_ | | | _
_ | | _/ .__/ | .__/ _ / | _ | | _ | _ | _ __ | _ _,_ | _ _ |
| | | |
| _ | | _ |此存儲庫構建appthreat/sast-scan (以及quay.io/appthreat/sast-scan ),這是一個具有許多捆綁開放式靜態分析安全測試(SAST)工具的容器映像。這就像Devsecops工程師的瑞士軍刀。
| 程式設計語言 | 工具 |
|---|---|
| Ansible | Ansible薄荷 |
| 頂點 | PMD |
| AWS | cfn-lint,cfn_nag |
| bash | 殼牌 |
| bom | CDXGEN |
| CredScan | gitleaks |
| DepScan | depscan |
| 去 | Gosec,靜態 |
| 爪哇 | CDXGEN,Gradle,Find-Sec-Bugs,PMD |
| JSP | PMD |
| JSON | JQ,Jsondiff,Jsonschema |
| 科特林 | detekt |
| Kubernetes | Kube得分 |
| nodejs | cdxgen,nodejsscan,eslint,紗線 |
| 木偶 | 木偶薄荷 |
| PLSQL | PMD |
| Python | 強盜,CDXGEN,PIPENV |
| 紅寶石 | Cyclonedx-Ruby |
| 銹 | CDXGEN,貨物審計 |
| Terraform | TFSEC |
| 視覺力(VF) | PMD |
| Apache速度(VM) | PMD |
| yaml | Yamllint |
一些報告被轉換為一個名為Sarif的開放標準。請參閱有關此視圖選項的Viewing reports的部分。
Sast-Scan是與CI一起使用的理想選擇,也是用於本地開發的預設掛鉤。
參考文檔
可以使用此操作將此工具與GitHub動作一起使用。所有支持的語言都可以使用。
這與Sast-Scan一起回購自我測試!檢查此存儲庫的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格式的詳細說明,請參閱集成文檔。
掃描Python項目
docker run --rm -e " WORKSPACE= ${PWD} " -v " $PWD :/app:cached " quay.io/appthreat/sast-scan scan --src /app --type python在Windows上,命令根據終端略有變化。
CMD
docker run --rm -e "WORKSPACE=%cd%" -e "GITHUB_TOKEN=%GITHUB_TOKEN%" -v "%cd%:/app:cached" quay.io/appthreat/sast-scan scan
Powershell和Powershell核心
docker run --rm -e "WORKSPACE=$(pwd)" -e "GITHUB_TOKEN=$env:GITHUB_TOKEN" -v "$(pwd):/app:cached" quay.io/appthreat/sast-scan scan
WSL bash
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
不要在$ 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/reports掃描Java項目
對於基於Java和JVM語言的項目,在調用DEV和CI工作流程中的SASTSCAN之前進行編譯很重要。
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掃描Python項目(無遙測)
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 ,該報告將是源代碼root目錄下的目錄。
一些報告將轉換為稱為SARIF的標準。此類報告將以擴展名.sarif結束。打開並查看SARIF文件需要一個查看器,例如:
示例報告:
如圖所示,在線查看器可用於手動上傳.sarif文件。

可以集成Azure Devops Sarif插件,以顯示與構建運行集成的分析,如圖所示。


Gitlab Sast使用眾多單一目的分析儀和GO基轉換器來生成自定義JSON格式。該模型具有增加構建時間的缺點,因為多個容器圖像應下載,因此不適合CI環境,例如Azure Pipelines,CodeBuild和Google CloudBuild。再加上Gitlab使用的許可證並不是開放源,即使分析儀僅包裝現有的OSS工具!
Mir Swamp是一項免費的在線服務,用於運行多種語言Simillar到Sast-Scan的OSS和商業靜態分析。有一個免費的沼澤產品,但設置有點麻煩。他們使用帶有許多基於Perl的轉換器的XML格式。相比之下,薩里夫(Sarif)是基於JSON的,並且為集成和UI目的而更容易使用。通過採用Python,Sast-Scan可以輕鬆地進行自定義。
AppThreat由Shiftleft資助和支持。有關一般討論和建議,請隨時使用GitHub問題或Shiftleft討論論壇