セキュリティテスト(SAST/DAST) せきゅりてぃてすと・さすと・だすと
脆弱性静的解析動的解析セキュリティソースコード自動検査
セキュリティテスト(SAST/DAST)について教えて
セキュリティテスト(SAST/DAST)とは
SAST(Static Application Security Testing:静的アプリケーションセキュリティテスト)は、アプリケーションを動かさずにソースコードや設定ファイルを解析して脆弱性を検出する手法です。開発の早い段階(コーディング中〜ビルド前)で問題を発見できるため、修正コストが低く「シフトレフト」の代表的な実践例です。
DAST(Dynamic Application Security Testing:動的アプリケーションセキュリティテスト)は、実際に動作しているアプリケーションに対して攻撃者と同じ手口でリクエストを送り、脆弱性を検出する手法です。SQLインジェクション・クロスサイトスクリプティング(XSS)など、実際の攻撃を模擬して検査します。
発注側の視点では「開発工程にSAST・DASTが組み込まれているか」を確認することが重要です。テストなしにリリースされたシステムは情報漏洩・不正アクセスのリスクを抱えたまま運用されることになります。
SASTとDASTの比較
| 観点 | SAST | DAST |
|---|---|---|
| 解析対象 | ソースコード・バイナリ | 動作中のアプリケーション |
| 実施タイミング | 開発中・ビルド時 | テスト環境・本番直前 |
| 発見できる脆弱性 | ロジックの欠陥・危険な関数の使用 | 実際のHTTPレスポンス問題・認証不備 |
| 誤検知率 | 高め(false positive多い) | 低め(実際に動作確認) |
| ソースコード不要 | 不要(バイナリ解析も可) | 不要 |
| 代表ツール | SonarQube、Semgrep、Checkmarx | OWASP ZAP、Burp Suite、Nikto |
さらに広がるテスト手法
| 手法 | 内容 |
|---|---|
| IAST | アプリ動作中に内部から監視。SASTとDASTの中間 |
| SCA(Software Composition Analysis) | 使用ライブラリの既知脆弱性をチェック |
| ペネトレーションテスト | 人間が手動で攻撃を試みる高度なテスト |
| RASP(Runtime Application Self-Protection) | アプリ自身が攻撃を検知・遮断 |
歴史と背景
- 1990年代 — ソースコードの静的解析ツール(Lint等)が登場。セキュリティ目的ではなくバグ検出用として使われていた
- 2001年 — OWASP(Open Web Application Security Project)設立。Webアプリのセキュリティ標準化が始まる
- 2003年 — OWASP Top 10が初版公開。XSS・SQLインジェクション等の脆弱性が広く認識される
- 2006年頃 — SASTツールが商用化。Fortify・Checkmarx等が登場
- 2010年代 — CI/CDパイプラインへのSAST組み込みが一般化。開発速度を落とさずにセキュリティ検査が可能に
- 2020年代 — SCA(サプライチェーン管理)の重要性が急浮上。Log4Shell等のOSSライブラリ脆弱性問題が契機
CI/CDパイプラインへの統合
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| OWASP Top 10 | Webアプリの代表的な脆弱性トップ10リスト |
| OWASP ASVS | アプリケーションセキュリティ検証標準 |
| NIST SP 800-115 | 情報セキュリティテストの技術ガイド |
| CWE(Common Weakness Enumeration) | ソフトウェア脆弱性の分類体系 |
関連用語
- ペネトレーションテスト — 実際に攻撃手法を使って脆弱性を検証するテスト
- 依存関係管理・SBOM — 使用ライブラリの脆弱性を管理する手法
- セキュリティシフトレフト — 開発の早い段階からセキュリティを組み込む考え方
- DevSecOps — 開発・セキュリティ・運用を統合したプロセス
- ソフトウェアサプライチェーンセキュリティ — 開発から配布までの全工程のセキュリティ管理
- CI/CD — 継続的インテグレーション・デリバリーの自動化パイプライン