このページでは、Web Security Scanner の概要について説明します。
はじめに
Web Security Scanner は、App Engine、Google Kubernetes Engine(GKE)、Compute Engine ウェブ アプリケーションにおけるセキュリティの脆弱性を特定します。アプリケーションをクロールして、開始 URL の範囲内にあるすべてのリンクをたどり、できる限り多くのユーザー入力とイベント ハンドラの処理を試みます。現在、Web Security Scanner は、ファイアウォールの背後にない、公開 URL と IP のみをサポートしています。
Web Security Scanner は、現時点で App Engine スタンダード環境と App Engine フレキシブル環境、Compute Engine インスタンス、GKE リソースをサポートしています。
Web Security Scanner は、既存の安全な設計プロセスと開発プロセスを補完することを目的に設計されています。誤検出があると注意がそがれるため、Web Security Scanner はあまり多くの情報が報告されないようになっています。また信頼度が低いアラートは表示されません。Web Security Scanner は、人によるセキュリティ レビューに置き換わるものではなく、アプリケーションにセキュリティの欠陥がないことを保証するものでもありません。ウェブ セキュリティについて詳しくは、OWASP 上位 10 件のプロジェクトをご覧ください。
詳細については、Google Cloud のセキュリティをご覧ください。
スキャンの種類
Web Security Scanner は、一般公開された App Engine、GKE、Compute Engine のサービス対象ウェブ アプリケーションのマネージドおよびカスタムウェブ脆弱性スキャンを提供します。
マネージド スキャン
Web Security Scanner のマネージド スキャンは Security Command Center によって構成され、管理されます。マネージド スキャンは、週に 1 回自動的に実行され、一般公開のウェブ エンドポイントを検出してスキャンします。このスキャンは認証を使用せず、公開ウェブサイトにはフォームを送信しないので、GET のみのリクエストを送信します。
マネージド スキャンは、プロジェクト レベルで定義したカスタム スキャンとは別に実行されます。マネージド スキャンを使用すると、個々のプロジェクト チームを関与させることなく、組織内のプロジェクトのために、ウェブ アプリケーションの基本的な脆弱性の検出を一元管理できます。検出が見つかったら、それらのチームと協力してより包括的なカスタム スキャンを設定できます。
Web Security Scanner をサービスとして有効にする場合、マネージド スキャンの検出結果は、Security Command Center の [脆弱性] タブと関連レポートで自動的に利用可能になります。Web Security Scanner のマネージド スキャンを有効にする方法については、Security Command Center の構成をご覧ください。
カスタム スキャン
Web Security Scanner のカスタム スキャンは、古いライブラリ、クロスサイト スクリプティング、混合コンテンツの使用など、アプリケーションの脆弱性の検出に関する詳細な情報を提供します。Web Security Scanner のカスタム スキャンを設定するのガイドを完了すると、Security Command Center でカスタム スキャンの検出が利用可能になります。
スキャンの検出結果
以下の表は、サポートされている検出器間のマッピングと、関連するコンプライアンス制度へのベスト エフォートのマッピングを示しています。
CIS Google Cloud Foundation 1.0 のマッピングは、CIS Google Cloud Computing Foundations Benchmark v1.0.0 への整合のために、Center for Internet Security によって審査され、認定されています。その他のコンプライアンスのマッピングは参照用として含まれ、Payment Card Industry Data Security Standard または OWASP Foundation による提供や審査は行われません。これらの違反の手動での確認方法については、CIS Google Cloud Computing Foundations Benchmark v1.0.0(CIS Google Cloud Foundation 1.0)、Payment Card Industry Data Security Standard 3.2.1(PCI-DSS v3.2.1)、OWASP Top 10、National Institute of Standards and Technology 800-53(NIST 800-53)、International Organization for Standardization 27001(ISO 27001)をご覧ください。
この機能は、コンプライアンス制御違反をモニタリングするためのだけのものです。このマッピングは、規制、業界ベンチマーク、基準に準拠した製品またはサービスの、監査、認定、コンプライアンスの報告に基づいて、または代わりとして使用するために提供されるものではありません。
Web Security Scanner のカスタム スキャンとマネージド スキャンによって特定される検出の種類は次のとおりです。スタンダード ティアの Web Security Scanner は、ファイアウォールの背後にない公開 URL と IP でデプロイされたアプリケーションのカスタム スキャンをサポートしています。
カテゴリ | 検出の説明 | CIS GCP Foundation 1.0 | PCI-DSS v3.2.1 | OWASP Top 10 | NIST 800-53 | ISO-27001 |
---|---|---|---|---|---|---|
ACCESSIBLE_GIT_REPOSITORY |
GIT リポジトリが一般公開されている。この問題を解決するには、GIT リポジトリへの意図しない公開アクセスを削除します。 | A3 | ||||
ACCESSIBLE_SVN_REPOSITORY |
SVN リポジトリが一般公開されている。この問題を解決するには、SVN リポジトリへの意図しない公開アクセスを削除します。 | A3 | ||||
CLEAR_TEXT_PASSWORD |
パスワードがクリアテキストで送信されているため、傍受される可能性がある。この問題を解決するには、ネットワーク経由で送信されたパスワードを暗号化します。 | A3 | ||||
INVALID_CONTENT_TYPE |
レスポンスの Content-Type HTTP ヘッダーに一致しないリソースが読み込まれました。この問題を解決するには、「X-Content-Type-Options」HTTP ヘッダーに正しい値を設定します。 | A6 | ||||
INVALID_HEADER |
セキュリティ ヘッダーに構文エラーがあるため、ブラウザで無視される。この問題を解決するには、HTTP セキュリティ ヘッダーを正しく設定します。 | A6 | ||||
MISMATCHING_SECURITY_HEADER_VALUES |
セキュリティ ヘッダーが重複し、値が一致しないため、未定義の動作が起こる。この問題を解決するには、HTTP セキュリティ ヘッダーを正しく設定します。 | A6 | ||||
MISSPELLED_SECURITY_HEADER_NAME |
セキュリティ ヘッダーにスペルミスがあるため、無視される。この問題を解決するには、HTTP セキュリティ ヘッダーを正しく設定します。 | A6 | ||||
MIXED_CONTENT |
リソースが、HTTPS ページ上で HTTP を介して提供されている。この問題を解決するには、すべてのリソースが HTTPS を介して提供されるようにします。 | A6 | ||||
OUTDATED_LIBRARY |
既知の脆弱性があるライブラリが検出された。この問題を解決するには、ライブラリを新しいバージョンにアップグレードします。 | A9 | ||||
XSS |
このウェブ アプリケーションのフィールドは、クロスサイト スクリプティング(XSS)攻撃に対して脆弱である。この問題を解決するには、信頼されていないユーザーが提供したデータを検証してエスケープします。 | A7 | ||||
XSS_ANGULAR_CALLBACK |
ユーザー指定の文字列がエスケープされず、AngularJS によって補間される場合がある。この問題を解決するには、Angular フレームワークによって処理される、信頼されていないユーザー提供のデータを検証してエスケープします。 | A7 | ||||
XSS_ERROR |
このウェブ アプリケーションのフィールドは、クロスサイト スクリプティング攻撃に対して脆弱である。この問題を解決するには、信頼されていないユーザー提供のデータを検証してエスケープします。 | A7 |
使用上の注意
Web Security Scanner を使用するときは、次の点に留意してください。
- Web Security Scanner は現在も継続的に改善が進められているため、現在のスキャンでは報告されない問題が今後報告される可能性があります。
- アプリケーションの機能やセクションをすべてテストしているとは限りません。
- Web Security Scanner は、検出するすべてのコントロールと入力を有効化しようと試みます。
- テスト アカウントが権限を持つ状態変更アクションを公開した場合、Web Security Scanner はそのアクションを有効にすることがあります。これは望ましくない結果につながる可能性があります。
セキュリティ スキャンを実行できるユーザー
Web Security Scanner で使用できる Identity and Access Management(IAM)のロールについては、アクセス制御をご覧ください。
セキュリティ スキャンにかかる時間
セキュリティ スキャンはすぐには実行されません。まずキューに追加され、後で実行されます。そのため、システム負荷によっては数時間後になる場合もあります。スキャンの実行が始まったら、その所要時間はアプリケーションのサイズによって異なります。 多くの URL が含まれた大規模なアプリケーションの場合、完了するまでに数時間かかる場合があります。
ターゲットの制限
Web Security Scanner には、スキャンのターゲットをスキャンが作成される特定の App Engine インスタンスに制限するフィルタが導入されています。別の App Engine プロジェクトや外部ドメインの URL を入力すると、エラー メッセージが表示されます。
プロジェクト内では、Web Security Scanner はログアウト URL と、スキャンに悪影響を与える可能性があるその他の汎用的な場所を自動的に回避しようとします。ただし、スキャン設定を使用して手動で URL を除外し、これを確実に行うこともできます。
おすすめの方法
Web Security Scanner を実行すると、フィールドに値が入力されたり、ボタンが押されたり、リンクがクリックされたりするため、十分に注意して使用してください。Web Security Scanner により、データやシステムの状態が変更される機能が有効になり、望ましくない結果がもたらされる場合があります。
例:
- ブログ アプリケーションで一般からのコメントを受け付けるようにしていると、Web Security Scanner により、すべてのブログ記事にコメントとしてテスト文字列が投稿される場合があります。
- メール登録ページで、Web Security Scanner により多数のテストメールが生成される場合があります。
望ましくない結果を避けるために、個別または組み合わせて使用できる手法を以下に紹介します。
- テスト環境でスキャンを実行します。 テスト環境を設定するには、別途 App Engine プロジェクトを作成し、このプロジェクトにアプリケーションとデータを読み込みます。
gcloud
コマンドライン ツールを使用する場合、アプリをアップロードするときに、対象のプロジェクトをコマンドライン オプションとして指定できます。 - テスト アカウントを使用します。 機密データや有害な操作にアクセスできないユーザー アカウントを作成し、アプリのスキャン時に使用します。多くのアプリケーションでは、ユーザーが初めてログインしたときに、利用規約の同意やプロフィールの作成など特別なワークフローが提示されます。ワークフローが異なるために、初期ユーザーのテスト アカウントで生成されるスキャン結果が、確立したユーザー アカウントのスキャン結果とは異なる場合があります。最初のフローが完了した後、アカウントが通常のユーザー状態のときにスキャンすることをおすすめします。
- CSS クラス
inq-no-click
を適用して、有効にするつもりのない個々のユーザー インターフェース要素をブロックできます。この要素にアタッチされたイベント ハンドラは、そのイベント ハンドラがインラインの JavaScript である、addEventListener
を使用しアタッチされる、または適切なイベント ハンドラのプロパティの設定によりアタッチされるのどれかにかかわらず、クロールやテストの間には有効になりません。 - バックアップ データを使用します。スキャンする前にデータのバックアップを検討してください。
- URL を除外します。クロールやテストを行わない URL パターンを指定できます。構文については、URL の除外をご覧ください。
スキャンする前に、スキャンしようとしている範囲を超えてデータ、ユーザー、システムに影響を及ぼす可能性がある機能がないか慎重にアプリケーションを調べてください。
次のステップ
- Web Security Scanner を使ってみる。