システム開発

セキュリティテスト(SAST/DAST) せきゅりてぃてすと・さすと・だすと

脆弱性静的解析動的解析セキュリティソースコード自動検査
セキュリティテスト(SAST/DAST)について教えて

簡単に言うとこんな感じ!

SASTは「設計図を見て欠陥を見つける」、DASTは「実際に動かして攻撃してみる」テストだよ! 前者は完成前、後者は完成後に行う。両方やってセキュリティの穴を二重でふさぐのが現代の標準なんだ!


セキュリティテスト(SAST/DAST)とは

SAST(Static Application Security Testing:静的アプリケーションセキュリティテストは、アプリケーションを動かさずにソースコードや設定ファイルを解析して脆弱性を検出する手法です。開発の早い段階(コーディング中〜ビルド前)で問題を発見できるため、修正コストが低く「シフトレフト」の代表的な実践例です。

DAST(Dynamic Application Security Testing:動的アプリケーションセキュリティテスト)は、実際に動作しているアプリケーションに対して攻撃者と同じ手口でリクエストを送り、脆弱性を検出する手法です。SQLインジェクション・クロスサイトスクリプティング(XSS)など、実際の攻撃を模擬して検査します。

発注側の視点では「開発工程にSAST・DASTが組み込まれているか」を確認することが重要です。テストなしにリリースされたシステムは情報漏洩・不正アクセスのリスクを抱えたまま運用されることになります。


SASTとDASTの比較

観点SASTDAST
解析対象ソースコード・バイナリ動作中のアプリケーション
実施タイミング開発中・ビルド時テスト環境・本番直前
発見できる脆弱性ロジックの欠陥・危険な関数の使用実際のHTTPレスポンス問題・認証不備
検知高め(false positive多い)低め(実際に動作確認)
ソースコード不要不要(バイナリ解析も可)不要
代表ツールSonarQube、Semgrep、CheckmarxOWASP ZAPBurp 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パイプラインへの統合

セキュリティテストのCI/CD統合 コード コミット プッシュ SAST 静的解析 コード検査 SCA 依存ライブラリ 脆弱性チェック DAST 動的テスト テスト環境で 本番リリース 全テスト通過後 デプロイ 脆弱性検出 → パイプライン停止 → 開発者に通知 問題のあるコードは本番に届かない仕組みを構築

関連する規格・RFC

規格・RFC番号内容
OWASP Top 10Webアプリの代表的な脆弱性トップ10リスト
OWASP ASVSアプリケーションセキュリティ検証標準
NIST SP 800-115情報セキュリティテストの技術ガイド
CWE(Common Weakness Enumeration)ソフトウェア脆弱性の分類体系

関連用語