___ _____ _ _
/ _ | _ _ | | | |
/ /_ _ __ _ __ | | | | __ _ __ ___ __ _ | | _
| _ | ' _ | ' _ | | | ' _ | ' __/ _ / _ ` | __ |
| | | | | _) | | _) | | | | | | | | __/ (_ | | | _
_ | | _/ .__/ | .__/ _ / | _ | | _ | _ | _ __ | _ _,_ | _ _ |
| | | |
| _ | | _ |このレポは、多くのバンドルされたオープンソース静的分析セキュリティテスト(SAST)ツールを備えたコンテナ画像であるappthreat/sast-scan (およびquay.io/appthreat/sast-scan )を構築します。これは、DevSecopsエンジニアのスイスアーミーナイフのようなものです。
| プログラミング言語 | ツール |
|---|---|
| Ansible | ansible-lint |
| 頂点 | PMD |
| aws | CFN-LINT、CFN_NAG |
| バッシュ | シェルチェック |
| ボム | cdxgen |
| Credscan | GitLeaks |
| depscan | depscan |
| 行く | Gosec、StaticCheck |
| Java | cdxgen、gradle、find-sec-bugs、pmd |
| jsp | PMD |
| JSON | JQ、JSondiff、Jsonschema |
| コトリン | Detekt |
| Kubernetes | kube-score |
| nodejs | cdxgen、nodejsscan、eslint、yarn |
| 人形 | パペットリント |
| plsql | PMD |
| Python | Bandit、Cdxgen、Pipenv |
| ルビー | Cyclonedx-ruby |
| さび | cdxgen、貨物監査 |
| テラフォーム | TFSEC |
| 視覚力(VF) | PMD |
| Apache Velocity(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 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-bash
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言語ベースのプロジェクトの場合、開発者と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 javaPythonプロジェクトをスキャン(テレメトリなし)
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と呼ばれる標準に変換されます。このようなレポートは、拡張.sarifで終了します。 SARIFファイルを開いて表示するには、次のような視聴者が必要です。
レポートの例:
オンラインビューアを使用して、図のように.sarifファイルを手動でアップロードできます。

Azure DevOps Sarifプラグインを統合して、図のようにビルド実行と統合された分析を表示できます。


Gitlab Sastは、多数の単一目的アナライザーとGOベースのコンバーターを使用して、カスタムJSON形式を作成します。このモデルには、複数のコンテナ画像がダウンロードされるため、Azure Pipelines、CodeBuild、Google CloudBuildなどのCI環境には適していないため、ビルド時間が増加するという欠点があります。さらに、GitLabが使用するライセンスは、アナライザーが既存のOSSツールをラップするだけであっても、OpenSourceではありません!
Mir Swampは、多くの言語SimillarからSast-ScanのOSSおよび商用静的分析の両方を実行するための無料のオンラインサービスです。無料のスワンプインボックスオファリングがありますが、セットアップは少し面倒です。彼らは、多くのPERLベースのコンバーターを備えたスカーフと呼ばれるXML形式を使用します。対照的に、SARIFはJSONベースであり、統合とUIの目的で操作するのがはるかに簡単です。 Pythonを採用することにより、Sast-Scanはカスタマイズのために少し簡単に作業できます。
App -TreatはShiftleftによって資金提供され、サポートされています。一般的な議論や提案については、GitHubの問題またはShiftleftディスカッションフォーラムのいずれかを自由に使用してください