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 のアプリ層版 |
関連書籍も参考になる。