SASTとDASTは、どちらもアプリケーションの脆弱性を見つけるための重要な手法です。違いは「いつ」「どこを見るか」です。
SAST(Static Application Security Testing)
-
ソースコードやバイナリを実行せずに静的解析する
-
開発の早い段階(実装中、CI)で問題を見つけやすい
-
例
- 入力値検証不足、危険なAPI利用、ハードコードされた秘密情報
-
代表的なツール
- Semgrep、GitHub CodeQL、Snyk Code
SCA(Software Composition Analysis)との関係
SASTが自作コードの欠陥を検出するのに対し、SCAはOSSや外部ライブラリなど依存関係の脆弱性やライセンスリスクを検出します。実運用では、SAST + SCAをセットで回すことで、コード本体と依存関係の両面をカバーできます。
- 代表的なツール
- Dependabot、Snyk Open Source、OWASP Dependency-Check
DAST(Dynamic Application Security Testing)
-
実際に動作しているアプリケーションへ疑似攻撃して検査する
-
実行環境に近い状態で、挙動ベースの問題を見つける
-
例: XSS、SQLインジェクション、認証・認可不備、設定不備
-
代表的なツール
- OWASP ZAP、Burp Suite
使い分けの要点
- SAST: 早期検出に強い(開発中の改善サイクル向け)
- DAST: 実動作上の露出リスク確認に強い(リリース前後の確認向け)
- SCA: 依存ライブラリ由来の脆弱性検出に必須
これらを組み合わせて脆弱性によるリスクを低減します。