用語辞典8分で読める

DASTとは:動いているアプリに外から疑似攻撃を試して弱点を探すテスト

DASTは、動作中のWebアプリを外から検査して脆弱性を探すテストです。SAST・IAST・SCAとの違いと、自分のアプリでの使い方を解説します。

本文を読む
公開日
更新日
目次

DAST(動的アプリケーションセキュリティテスト)は、動いているアプリを外から検査して弱点を探すテストです。他のテストとの違いと、自分のアプリでの使い方を解説します(他人のサイトを検査する方法は載せません)。

DASTとは

DASTは、Dynamic Application Security Testingの略です。OWASPのDevSecOpsガイドラインは、DASTを、実行中のアプリケーションの脆弱性や弱点を探すブラックボックステストと説明しています。ブラックボックスとは、内部のソースコードを見ず、外から見える入出力だけで調べる、という意味です。

実際には、ツールがアプリのページや入力欄をたどり、検査用のリクエストを送って、その反応から問題の兆候を探します。同ガイドラインは、入出力の検証、認証の問題、サーバー設定のミスの検出に特に役立つとしています。

仕組み

① 自分のテスト環境のURLを、ツールに指定する
② ツールがページや入力欄をたどり、検査用の通信を送る
↓ 応答の内容やヘッダー、エラーの出方を観察
③ 問題の兆候を一覧にする。人が内容を確かめ、直す
DASTは、動いているアプリに外から検査用のリクエストを送り、反応の違いから問題を探す。ソースコードは見ない。

SAST・IAST・SCAとの違い

手法何を調べるか動かすか向いている問題
DAST動作中のアプリの外側の振る舞い動かす入出力の検証、認証、サーバー設定
SASTソースコードや、コンパイル後のコード動かさないコードの書き方の問題を、開発の早い段階で見つける
IASTアプリの内部の動作(センサーで監視)動かす(テスト中)自動テスト中に現れる問題
SCA使っているライブラリなどの依存関係動かさない既知の脆弱性(CVE)を含む部品

OWASPは、SASTについて、自動で見つけられるアプリのセキュリティ上の欠陥は比較的少ないこと、誤検知が多いこと、設定の不備を見落としやすいことを挙げています。DASTはこの弱点を補いますが、同じく万能ではありません。SCAについては、OSV-Scannerで依存関係を点検する方法を解説しています。

自分のアプリで使う方法(OWASP ZAPの例)

ZAP(Zed Attack Proxy。以前の呼び名はOWASP ZAP)は、無料で、ソースコードが公開されているDASTツールです。現在の公式サイトでは「ZAP by Checkmarx」と表記されています。

  1. まず、自分が管理するテスト環境のURLを用意する。本番ではなく、テスト用の環境を使う
  2. ベースラインスキャンを実行する。公式ドキュメントによると、これはパッシブなスキャンのみで、既定ではスパイダー(ページをたどる機能)を1分動かし、攻撃的な検査は行いません。数分程度で終わります
  3. 結果を読み、問題の兆候が実際の問題かを人が確かめる。誤検知もあります
  4. 必要に応じて、テスト環境に限ってアクティブスキャンに進む。これは既知の攻撃を対象に試すため、自分のものではないWebアプリには使ってはいけないと、公式ドキュメントに明記されています
  5. 修正のたびに、CIなどで定期的に再実行する

自分が所有・管理するアプリのテスト環境だけに行う

DASTのツールは、実際に攻撃に近い通信を送ります。許可を得ていないサイトに実行すると、不正アクセスや業務妨害にあたるおそれがあります。OWASP ZAPの公式ドキュメントも、アクティブスキャンを自分が所有していないWebアプリに使ってはいけないとしています。また、本番環境に実行すると、データの作成や負荷など、意図しない影響が出ることがあります。

DASTで見つからないこと

ZAPの公式ドキュメントは、アクティブスキャンでは、アクセス制御の不備のような論理的な問題は見つけられないため、手動の診断も組み合わせるよう述べています。たとえばIDORのような「他人のデータを見られる」問題は、自動ツールが「正しい挙動」を知らないため、見つけにくい種類です。別の利用者のIDでアクセスして拒否されるかを確かめるテストを、自分で書く必要があります。

また、セキュリティヘッダーのような設定の確認は、DASTが得意な領域です。何を設定すれば意味があるかは、セキュリティヘッダー:今も意味があるもので整理しています。

当サイトの視点:DASTは『最後の網』。順番はコード、部品、動作の三段で考える

1つのツールで全部を見つけようとするより、見る場所の違う三つを組み合わせるのが現実的です。まずコードを読む(SAST)、次に部品の既知の脆弱性を見る(SCA)、最後に動かして外から確かめる(DAST)。そして、ツールが苦手な「誰が何をしてよいか」は、自分で書いたテストで守ります。ツールの結果は、そのまま信じず、人が確かめてから直します。

出典(一次情報)

  • OWASP DevSecOps Guideline「Dynamic Application Security Testing」 — owasp.github.io(DASTの定義、ブラックボックス)
  • OWASP DevSecOps Guideline「Interactive Application Security Testing」 — owasp.github.io(IAST)
  • OWASP Community「Source Code Analysis Tools」 — owasp.org(SASTと、その限界)
  • ZAP Documentation「Active Scan」 — zaproxy.org(自分のものではないアプリに使わない、論理的な問題は見つけられない)
  • ZAP Documentation「Baseline Scan」 — zaproxy.org(パッシブのみ、実行時間)
  • SCAについては、本文では一般的な定義を示しています。個別の公的な定義は確認していません

次に読む

よくある質問

QDASTとは何ですか?
A

Dynamic Application Security Testing(動的アプリケーションセキュリティテスト)の略で、動作中のアプリケーションに外から検査用のリクエストを送り、脆弱性や弱点を探すテストです。OWASPのDevSecOpsガイドラインは、DASTを、実行中のアプリの脆弱性や弱点を見つけるブラックボックステストとし、ソースコードへのアクセスは不要と説明しています。

QDASTとSASTの違いは?
A

SAST(静的アプリケーションセキュリティテスト)は、ソースコードやコンパイル後のコードを動かさずに解析します。DASTは、アプリを実際に動かし、外からの通信で調べます。SASTは開発の早い段階で使えますが、設定の不備などは見つけにくく、誤検知も多いとOWASPは述べています。DASTは、動かして初めて現れる問題に向いています。

QIAST・SCAとは何ですか?
A

IAST(インタラクティブ・テスト)は、アプリの中に検知用のモジュールを組み込み、テスト中の動作を監視する方式です。SCA(ソフトウェア構成分析)は、使っているライブラリなどの依存関係に既知の脆弱性がないかを調べます。DASTとは見る場所が違うため、組み合わせて使います。

QDASTでは何が見つかりますか?
A

OWASPのガイドラインは、入出力の検証、認証の問題、サーバー設定のミスの検出に特に有効だとしています。一方、OWASP ZAPの公式ドキュメントは、アクティブスキャンでは、アクセス制御の不備のような論理的な問題は見つけられないので、手動の診断も組み合わせるよう述べています。

Q他人のサイトにDASTを実行してもよいですか?
A

いけません。OWASP ZAPの公式ドキュメントも、アクティブスキャンは自分が所有していないWebアプリに対して使ってはいけないと明記しています。対象は、自分が所有・管理するアプリや、書面などで許可を得た環境に限ります。本番ではなく、テスト用の環境で行うのが安全です。

QDASTは何から始めればよいですか?
A

まず、自分のテスト環境のURLに対して、OWASP ZAPのベースラインスキャンを実行します。これは通信を観察するパッシブなスキャンのみで、攻撃的な検査は行いません。その結果を見てから、必要に応じて、テスト環境に限ってアクティブスキャンへ進みます。