SAST/DAST

ソースコードの静的解析と実行中のアプリケーションの動的解析によるセキュリティテスト

セキュリティテスト

SAST/DAST とは

SAST (Static Application Security Testing) はソースコードを解析して脆弱性を検出する手法、DAST (Dynamic Application Security Testing) は実行中のアプリケーションに対して攻撃を模擬し脆弱性を検出する手法である。両者は補完関係にあり、組み合わせて使うことでカバレッジを最大化する。

SAST vs DAST

SAST と DAST の違いを以下にまとめる。

観点SASTDAST
解析対象ソースコード、バイトコード実行中のアプリケーション
実行タイミングコーディング〜ビルドデプロイ後
検出できる脆弱性SQL インジェクションXSS、ハードコードされた秘密情報認証不備、設定ミス、ランタイムの脆弱性
誤検知多い (コンテキスト不足)少ない (実際に攻撃を試行)
言語依存あり (言語ごとのパーサーが必要)なし (HTTP で通信)
CI/CD 統合容易 (ビルドステップに追加)やや複雑 (実行環境が必要)

CI/CD パイプラインへの組み込み

CI/CD パイプラインへの組み込みを図で示す。

[コード Push][SAST スキャン][ビルド][デプロイ (dev)][DAST スキャン]
                     ↓                                              ↓
              脆弱性レポート                                   脆弱性レポート
              (重大なら失敗)                                   (重大なら通知)

SAST はビルド前に実行し、問題があればパイプラインを停止する。DAST はデプロイ後に実行し、結果をチームに通知する。

主要ツール

主要ツールを以下にまとめる。

カテゴリツール特徴
SASTCodeGuru ReviewerAWS ネイティブ、Java/Python
SASTSemgrepOSS、多言語対応、カスタムルール
SASTSonarQube品質 + セキュリティ、広いエコシステム
DASTOWASP ZAPOSS、CI/CD 統合が容易
DASTBurp Suite商用、高精度
SCADependabot依存ライブラリの脆弱性検出

SCA (Software Composition Analysis) は SAST の一種で、依存ライブラリの既知の脆弱性を検出する。npm audit、Dependabot、Snyk が代表的。

IAST と RASP

IAST と RASP を以下にまとめる。

手法説明
IASTアプリ内にエージェントを組み込み、実行時にコードフローを追跡。SAST と DAST の中間
RASP本番環境でリアルタイムに攻撃を検知・ブロック。WAF のアプリ層版

関連書籍も参考になる。

この記事は役に立ちましたか?

関連用語

関連する記事