SAST/DAST

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

セキュリティテスト

SAST/DAST とは

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

SAST vs DAST

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

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

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

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

主要ツール

カテゴリ ツール 特徴
SAST CodeGuru Reviewer AWS ネイティブ、Java/Python
SAST Semgrep OSS、多言語対応、カスタムルール
SAST SonarQube 品質 + セキュリティ、広いエコシステム
DAST OWASP ZAP OSS、CI/CD 統合が容易
DAST Burp Suite 商用、高精度
SCA Dependabot 依存ライブラリの脆弱性検出

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

IAST と RASP

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

関連書籍も参考になる。

関連用語