In this article
適切なDASTツールを選ぶための5つのポイント
WebアプリやAPIを脅威から守ることは重要であり、そのプロセスの中心的な役割を担うのが動的アプリケーションセキュリティテスト(DAST)ツールです。この記事では、最新のDASTツールに求められる主な特長を解説します。開発チームがAIコーディングアシスタントを活用する機会が増えるなか、これは特に重要です。導入時に直面する可能性のある課題と、イノベーションのスピードに遅れずセキュリティテストを進める方法についてもご紹介します。
Snyk API & Webの高度で効率的な機能を活用し、資産の特定、効果的なセキュリティテストの実施、検出結果の効率的な処理、開発パイプラインへの機能の統合など、DAST導入を成功させるための重要な要素を見ていきます。
1. 資産の検出
組織が公開している資産は、攻撃対象領域を通じて悪意あるサイバー攻撃にさらされる可能性があります。そのため、攻撃対象領域を把握し、効果的な対策を講じることが不可欠です。AIツールによって新たなマイクロサービスやAPIの作成が加速し、セキュリティチームが追跡するよりも速く増えることもある今、その重要性は一層高まっています。
攻撃対象領域を把握する
組織の資産を一覧化し、攻撃対象領域を把握するには、資産検出機能を備えたDASTツールが不可欠です。セキュリティ上の脅威は常に進化しているため、定期的に資産を検出し、一覧を最新の状態に保てるDASTツールを選びましょう。
攻撃対象領域を分析する
DASTツールには、検出した資産を分析し、特に重要な資産を特定して優先順位を付けるために必要な機能がすべて備わっている必要があります。たとえば、資産の重要度を把握するための初期リスクスコア、資産の特定を容易にするスクリーンショット、資産へのアクセス先を確認するためのIPアドレスなどを提供できるとよいでしょう。
セキュリティスキャンとのシームレスな連携
攻撃対象領域のなかから重要な資産を特定したら、効果的に保護するため、詳細なセキュリティ脆弱性テストを実施する必要があります。そのため、DASTツールを選ぶ際には、資産検出とセキュリティスキャンがシームレスに連携することが重要です。
2. セキュリティスキャンの対象
スキャン対象とは、セキュリティ脆弱性を特定するためにスキャンするものです。資産検出で見つかった資産を対象にする場合も、個別に対象を作成する場合も、DASTツールがさまざまな種類の対象をサポートし、最適なスキャン結果を得るための設定手段を備えていることが重要です。DASTツールを選ぶ際には、次の点を考慮しましょう。
対象の種類
基本的に、DASTツールは次の種類の対象をサポートする必要があります。
Web対象
DASTツールは、ブラウザーで動作する一般的な種類のWebアプリをサポートする必要があります。
モダンな シングルページアプリケーション(SPA):多くの場合、バックエンドAPIを利用し、クライアントサイドレンダリングを中心に構成されているため、優れたユーザー体験を提供します。DASTツールは、バックエンドAPIが別のホストにある場合でも、クライアント側のアプリとバックエンドAPIの両方をスキャンできなければなりません。
従来型のWebアプリ:これらのアプリでは、ほとんどの処理がサーバー側で行われます。つまり、各ページはサーバーへのHTTPリクエストに対する応答として表示されるため、ユーザーの操作への反応に少し時間がかかります。これは、どのDASTツールでもスキャンできる必要がある基本的な対象です。
API対象
一般的な仕様形式のAPIをサポートするDASTツールを検討しましょう。
OpenAPI:ツールがコードやドキュメント、テストケースなどを生成する際に利用できる、標準的なAPI仕様です。DASTツールはこの標準形式を使用して、スキャンするAPIエンドポイントを特定できる必要があります。有効なOpenAPI仕様かどうかを確認するには、Swagger Editorをお試しください。
Postman Collection:Postmanを使い、APIエンドポイントへのリクエストをあらかじめ定義したコレクションを通じてAPIにアクセスする方法です。さらに、事前リクエストやテストを利用して、環境変数を設定したりデータを操作したりできます。DASTツールはこれらのコレクションを取り込み、リクエストを実行してAPIエンドポイントをスキャンできる必要があります。また、Postmanコレクションには、複数回実行できる有効なAPIエンドポイントへのリクエストシーケンスが含まれていることが不可欠です。
認証が必要な対象
対象に認証が必要な場合、認証済みユーザーだけがアクセスできる領域があります。DASTツールでは、認証を設定してログインし、認証済みユーザー専用の領域にアクセスできる必要があります。次の認証機能を検討しましょう。
ログインフォーム:対象に認証用のログインフォームがある場合、DASTツールにはログインページを特定し、正常にログインするために必要な認証情報を設定する手段が必要です。
複雑なログイン:対象に複雑なログインフロー(複数ステップのログインなど)がある場合、DASTツールには、正常にログインするための手順と入力値を設定する手段が必要です。
カスタム認証ヘッダー/Cookie:これもDASTツールにあると便利な認証機能です。たとえば、ユーザーにログインリンクをメールで送信する認証ワークフローなど、さらに幅広い認証シナリオに対応できます。
2要素認証(2FA)でのログイン:対象へのログインに2要素認証(2FA)が必要な場合、DASTツールでは、前述の2つの認証機能に加えて、2FAを設定できる必要があります。
ログアウトの検出:セッションの有効期限切れなどにより、自動的にログアウトさせる対象もあります。DASTツールでは、ログアウトした状況を設定・検出して再ログインし、認証済みユーザー専用の領域にスキャン中もアクセスできるようにする必要があります。
対象のカバレッジを調整する
対象が複雑で、必要な範囲を効果的にスキャンするには、カバレッジを細かく調整するための設定が必要になることがあります。そのためDASTツールには、対象範囲内で想定した領域に到達できるよう、スキャンを調整する機能が必要です。
「隠れた」領域へのアクセスを追加する:対象範囲内の特定の領域には、クロールだけでは到達できない場合があります。たとえば、https://example.comのような対象に、https://example.com/back-officeのような直接リンクからしかアクセスできない領域があるとします。このような場合、DASTツールには、こうした「隠れた」領域を対象範囲に追加する手段が必要です。
重要な領域へのアクセスを制限する:ユーザーにメールを送信するフォームのあるページなど、セキュリティテストの対象に含めるべきではない機密性の高い領域がある場合、DASTツールにはその領域を設定し、対象範囲から除外する手段が必要です。
追加ホストへのアクセスを追加する:対象によっては、別のホストにあるサービスの機能を利用します。たとえば、https://example.comという対象が、https://api.example.comのような別ホストにあるAPIへリクエストを送る場合です。DASTツールでは、対象範囲を他のホストにも拡張できる必要があります。
複雑な対象向けのカスタムナビゲーション
対象に複雑なフローや、相互に依存する入力値を組み合わせたフォームのように特定の値が必要なフローがある場合、DASTツールにはカスタムのナビゲーションシーケンスを作成・実行し、意図したとおりにフローを実行して対象内のより多くの領域に到達する手段が必要です。
特定の動作に対応するカスタムヘッダーとCookie
ヘッダーやCookieに特定の情報を設定できるDASTツールは、DASTからのリクエストを識別するうえで欠かせない場合があります。次のように、さまざまな用途があります。
ユーザーエージェントが原因で、ファイアウォールが対象へのDASTリクエストをブロックしている場合があります。ヘッダーにカスタムの「User-Agent」を設定し、ファイアウォールを適切に構成すれば、リクエストのブロックを解除できます。
対象にCAPTCHAのような「人間確認」があり、DASTリクエストがブロックされる場合があります。Cookieにカスタム情報を送信することで、対象側のロジックで「人間確認」を無効にし、セキュリティスキャンを続行できます。
WAFによってブロックされる対象へのアクセス
対象の前段にWebアプリケーションファイアウォール(WAF)を使用している場合、DASTツールから対象へのリクエストが悪意ある攻撃と判定される可能性があります。その結果、リクエストがブロックされ、対象のスキャンが不完全に終わることがあります。これを防ぐには、DASTツールがIPアドレスを提供し、WAFで許可リストに登録してスキャンのブロックを解除できる必要があります。
アクセスできないプライベートネットワーク内の対象
対象が一般公開されておらず、プライベートネットワーク内に存在するため、外部からアクセスできないことがあります。DASTツールには、こうしたプライベートな対象へのアクセスを設定できる機能が必要です。
電子書籍
DASTを最大限に活用するユーザーの7つの習慣
DASTツールを最大限に活用できていますか?DASTの活用方法を変え、成果を高め、セキュリティ体制を強化する7つの習慣をご紹介します。
3. 対象のスキャン
対象を定義したら、DASTツールで対象をクロールし、到達可能なすべての領域を探索して、対象範囲をできるだけ広くカバーする必要があります。その後、それらの領域で徹底的なセキュリティテストを実施し、できる限り多くの脆弱性を特定します。
スキャンカバレッジ
対象全体がスキャンされていることを確認するには、包括的なスキャンカバレッジレポートがDASTツールに不可欠です。優れたカバレッジレポートなら、スキャンが想定どおりの領域に到達しているかを簡単に確認できます。もちろん、レポートから有益な知見を得て最大限に活用するには、対象と、カバーすべきすべての領域を詳しく把握しておく必要があります。
テスト対象の脆弱性
DASTツールが幅広い脆弱性をテストでき、最新の脆弱性の検出に対応できるよう定期的に更新されていることが極めて重要です。セキュリティ要件を満たしているか評価できるよう、DASTツールは脆弱性のリストと更新頻度を確認できる必要があります。これには従来型の脆弱性だけでなく、AI生成コードによって生じる可能性のある新たな種類のロジック上の欠陥も含まれます。
特定のテクノロジーのスキャン
対象で使用されているテクノロジー(PHP、React、Linuxなど)を検出するDASTツールは、セキュリティスキャンに役立つ情報を提供します。これにより、該当するテクノロジーに合わせてセキュリティテストを調整し、より良い結果を得られます。対象のテクノロジーを事前に設定し、確実に考慮されるようにできるDASTツールもあります。
スキャンのスケジュール設定
対象で特定された脆弱性のリストを常に最新に保つには、定期的なスキャンが重要です。スキャンをスケジュールできれば、手動で対応することなく自動化できるため、DASTツールの優れた機能といえます。
スキャンの一時停止と再開
スキャンを一時停止・再開できる機能は、重大な状況への対応に役立つため、DASTツールを選ぶ際に検討すべきです。たとえば、スキャンがアプリケーションの通常運用に影響しているとわかった場合、いったん一時停止し、都合のよいタイミングで再開できます。
DASTツールがスキャン停止時間帯を設定できるなら、さらに便利です。あらかじめ定めた時間帯(たとえば勤務時間中)にツールが自動でスキャンを一時停止し、「安全な」時間帯(たとえば夜間)に自動で再開できます。
部分スキャン
スキャンは通常、対象の範囲全体をカバーするため、完了して結果が出るまでに時間がかかることがあります。初回のフルスキャン後は、毎回対象全体をスキャンする必要がない場合もあるため、関心のある領域にスキャン範囲を絞るとよいでしょう。これを部分スキャンと呼びます。DASTツールが部分スキャンに対応していれば、次のような設定が可能です。
範囲の縮小: 対象のうち、再スキャンが重要な領域を指定して、その範囲だけをスキャンします。
差分スキャン: 対象の新規部分や更新された部分だけをスキャンします。
カスタムスキャンプロファイル
DASTツールで特定のスキャン動作を細かく調整するには、カスタムスキャンプロファイルが重要です。たとえば、次のような場合に利用できます。
重大な脆弱性に焦点を当てる: 修正を最優先すべき重大な脆弱性のみを検出するカスタムスキャンプロファイルを定義します。
速度を重視する: 多数のリクエストを処理できる対象であれば、より多くのリクエストを並列送信するスキャン用のカスタムプロファイルを作成できます。これにより、結果を得るまでの時間を短縮できます。
非侵襲的なスキャン: 対象に破壊的な操作を行わないようにしたい場合は、DELETEリクエストなどの破壊的なリクエストをテストせずにスキャンするカスタムプロファイルを用意できます。
4. スキャン結果の検出事項
対象をスキャンすると、検出された脆弱性は検出事項としてまとめられます。検出事項には、対象のどこを保護すべきか、どう対処すべきかを判断するために必要な情報が含まれます。DASTツールには、この重要な情報に加え、検出事項に効率よく対処し、管理するための機能が求められます。
検出事項の正確性
検出された脆弱性の信頼性が低いと、ユーザーの不信を招き、DASTツールの評価を損なう可能性があるため、これは検出事項に関する最も重要な要素の一つです。ツールが次のような正確な検出結果を提供することを確認しましょう。
誤検知率が 低いこと: DASTツールが通常または無害な動作を脆弱性と誤認すると、誤検知が発生します。誤検知が多いと、実際の脅威ではない「問題」の調査や対応に、個人や組織が多くの時間を費やすことになり、ツールへの信頼も損なわれます。
未検知が少ないこと: DASTツールが、存在するとわかっている実際の脆弱性を検出できない場合に発生します。実際の対象を使い、既知の脆弱性に対して得られた検出結果を比較してみましょう。結果の信頼性が低くなる可能性があるため、一般的なテスト用の対象や、教育目的などで偽の脆弱性を含む対象は避けてください。
検出が一貫していること: DASTツールは一貫性を保ち、脆弱性が修正されるまで、後続のスキャンでも検出事項を最新の状態に維持する必要があります。一方で、特定された脆弱性が修正された後は、その検出事項を報告しなくなる必要があります。
ホワイトペーパー
Snyk API & Webが誤検知率0.08%という業界トップクラスの数値を実現する方法
Snykが誤検知率0.08%を実現する方法をご紹介します。包括的な脆弱性検出により、高精度で効率的にアプリケーションを安全に保ちます。
価値のある有用な検出情報
検出事項を分析する際、DASTツールはできる限り多くの価値ある有用な情報を提供する必要があります。そうすることで、各検出事項について十分な情報に基づいて判断し、対象を保護するための効果的かつ効率的な対策を講じられます。
検出事項に含まれていると役立つ情報の例を紹介します。
脆弱性の説明
対象内で脆弱性が見つかった場所
脆弱性のあるインジェクションポイント
検出事項のリスクとCVSSスコア
脆弱性を裏付ける証拠
実行したリクエストと受信したレスポンスの詳細
脆弱性の修正方法
検出事項の共有
DASTツールには、組織内外の他のチームと共有できるよう、検出事項やスキャン条件に関するレポートを作成する機能が重要です。レポートには、共有相手が自立して分析・判断できるよう、必要な情報を含める必要があります。相手側からのサポートは、ほとんど、あるいはまったく必要ない状態が理想です。たとえば、経営陣に共有する場合は全体の概要のみ、セキュリティチームに共有する場合はより詳細なレポートが適しているでしょう。
組織の要件によっては、PCI DSS、OWASP Top 10、ISO 27001、HIPAAなど、重要な基準への準拠状況をレポートに含められることも利点です。
検出事項への対応
検出事項を分析し、対応方針を決める際、DASTツールには、その判断に応じて検出事項に対処するための機能が必要です。たとえば、次のような操作が役立ちます。
再テスト: スキャン全体を実行する代わりに、特定の検出事項だけを再テストして、検出された脆弱性が実際に修正されたかどうかを簡単に確認できます。
リスクを受容: 特定の状況では、脆弱性が組織にリスクをもたらさない、またはすでに把握済みで許容できる場合があります。そのような検出事項を、リスク受容済みとしてマークできる必要があります。
無効として設定: 検出事項で特定された脆弱性は悪用できないと判断した場合、その検出事項を無効としてマークし、誤検知として報告できる必要があります。
メモの追加: 検出事項にメモを追加すると、組織内で重要な情報を共有し、記録に残すうえで役立ちます。
5. インテグレーションと自動化
組織の効率を高めるには、DASTツールがセキュリティテストのシフトレフトを実現する方法を提供する必要があります。これは、インテグレーションと自動化によって、ソフトウェア開発ライフサイクル(SDLC)の早い段階でセキュリティテストを導入することを意味します。
管理ソリューションや課題管理ツールとのインテグレーション
組織でタスク管理に課題管理ツールを使っている場合(または脆弱性を一元管理するために脆弱性管理ツールを使っている場合)、選択するDASTツールは双方向同期に対応している必要があります。これにより、次のことが可能になります。
DASTツールが新たな脆弱性を検出すると、課題管理ツールに課題を自動で作成できます。
チームが新たな脆弱性を修正すると、DASTツールが再テストを実行します。
再テスト後も脆弱性が残っている場合、DASTツールが課題を再オープンします。
まずはリスクの高いWebアプリやAPIに焦点を当て、関連チームと優先的に取り組みましょう。すべてが円滑に進むようになったら、他のチームにもプロセスを広げます。こうすることで、セキュリティ上の問題を修正するプロセスを改善し、各チームの開発ライフサイクルに組み込めます。
CI/CDパイプラインの自動化
また、CI/CDパイプライン内でDASTツールを自動化することもできます。DASTツールがこの種の自動化に対応していれば、開発から本番環境まで、さまざまな環境でセキュリティテストを自動的に実行できます。
これにより、手動操作なしでソフトウェアライフサイクルにセキュリティテストを組み込める一方、CI/CDプロセスに手順が増え、チームのワークフローが変わる可能性があります。そのため、各チームへの自動化の影響を評価し、必要な変更を把握して計画を立てるために、DevOpsチームも交えて話し合うことが重要です。
Snyk API & Webを使ってDASTの導入を簡素化
AIを活用したDASTソリューションを効果的に導入することは、WebアプリやAPIを潜在的な脅威から守るうえで不可欠です。その第一歩となるのが、攻撃対象領域を把握・管理するための徹底したアセットディスカバリーです。保護すべきアセットを正確に把握すれば、対象をより適切に設定し、漏れのないスキャンを実現できます。さらに、検出事項の正確性を確保し、効果的に管理できるようになります。これらすべてを、既存のワークフローにDASTツールを組み込みながら実現できます。
この記事で紹介した重要な要素をすべて備えたDASTツールを導入することで、組織のセキュリティ態勢を強化し、AIが生成したコードに潜む脅威を含む、進化し続けるサイバー脅威からアセットをしっかりと保護できます。
Snyk API & Webは、Snyk AI Trust Platformの重要な一部として、このプロセス全体を効率化し、脆弱性の特定とアセットの保護を容易にします。開発者ファーストのDAST機能を既存のワークフローに組み込むことで、アプリケーションを保護し、チームがAIを活用したイノベーションを安全に進められるよう支援します。
ぜひ試してみませんか?今すぐ登録して、Snyk API & Webでできることをご確認ください。