V14 構成検証の要件
管理目標 †
検証済みのアプリケーションに以下が含まれていることを確認します。
- 安全で、再現性があり、自動化可能なビルド環境
- サードパーティのライブラリ、依存関係、構成管理を強化し、アプリケーションに古いコンポーネントや安全でないコンポーネントが含まれないようにします
- 管理者とユーザが既定のセキュリティ体制を弱める必要がある、セキュアバイデフォルト構成
既定のアプリケーションを構成することは、インターネット上で安全である必要があり、安全に構成する必要があります。
V14.1 ビルド †
ビルドパイプラインは再現性のあるセキュリティの基盤です。安全でない何かが発見されるたびに、それをソースコード、ビルドまたはデプロイスクリプトで解決し、自動的にテストが可能。既知のセキュリティの問題が本番環境に展開されないようにビルドを警告または中断する自動セキュリティおよび依存関係のチェックを備えたビルドパイプラインの使用を強く勧めます。不規則に実行される手動手順は、回避可能なセキュリティのミスに直結します。
業界としてDevSecOpsモデルに移行するにつれ、「Known good(既知の良好な)」状態を実現するには、デプロイメントと構成の継続的な可用性と整合性を確保することが重要。以前はシステムがハッキングされた場合に、それ以上の侵害が生じていないことを証明するのに数日から数か月かかりました。今日では、ソフトウェア定義のインフラストラクチャ、ダウンタイム無しでの迅速なA/Bデプロイメント、そして自動化コンテナ化されたビルドでは、侵害された「既知の良好な」代替品を自動的かつ継続的にビルド、強化、デプロイすることができます。
もし従来のモデルがまだ存在する場合は、その構成を強化してバックアップするために手動の手順を実行し、侵害されたシステムを整合性の高い妥協のないシステムに迅速に交換できるようにする必要があります。
このセクションに準拠するには、自動ビルドシステムと、ビルドおよびデプロイスクリプトへのアクセスが必要です。
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 |
14.1.1 | アプリケーションのビルドおよびデプロイプロセスが、CI / CDの自動化、自動構成管理、自動デプロイスクリプトなどの安全で再現性のある方法で実行されている。 | ✓ | ✓ | ||||
14.1.2 | コンパイラフラグが、スタックのランダム化、データ実行防止などの利用可能なすべてのバッファオーバーフローの保護と警告を有効にし、安全でないポインタ、メモリ、フォーマット文字列、整数、または文字列操作が見つかった場合にビルドを中断するように構成されている。 | ✓ | ✓ | 120 | 入力のサイズを確認せずにバッファをコピー ('Classic Buffer Overflow') | このプログラムは、入力バッファのサイズが出力バッファのサイズよりも小さいことを確認せずに、入力バッファを出力バッファにコピーします。 | |
14.1.3 | 使用しているアプリケーションサーバとフレームワークの推奨事項に従って、サーバ構成が強化されている。 | ✓ | ✓ | 16 | カテゴリ:構成 | このカテゴリの弱点は、通常、ソフトウェアの構成時に発生します。 | |
14.1.4 | アプリケーション、構成、およびすべての依存関係が、自動でデプロイスクリプトを使用して再度デプロイできるか、文書化およびテストされたRunbookから妥当な時間で構築できるか、またはバックアップからタイムリーに復元できる。 | ✓ | ✓ | ||||
14.1.5 | 許可された管理者が、セキュリティ関連のすべての構成の整合性を検証して改ざんを検出できる。 | ✓ |
V14.2 依存関係 †
依存関係の管理は、あらゆる種類のあらゆるアプリケーションの安全な運用に欠かせません。 古くなった、または安全でない依存関係で最新の状態を維持できないことは、これまでで規模が大きく、とても高くつく攻撃の根本的な原因です。
注:レベル1では、14.2.1の準拠は、より正確なビルド時の静的コード分析または依存関係分析ではなく、クライアント側およびその他のライブラリとコンポーネントの観察または検出に関係します。 これらのより正確な手法は、必要に応じてインタビューによって発見できる場合があります。
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 |
14.2.1 | すべてのコンポーネントが最新となっている。できればビルド時またはコンパイル時にディペンデンシチェッカを使用する。 (C2) | ✓ | ✓ | ✓ | 1026 | view: OWASPトップテンの弱点(2017年 | 0 |
14.2.2 | サンプルアプリケーション、プラットフォームのドキュメント、デフォルトまたはサンプルのユーザなど、不要な機能、ドキュメント、サンプル、コンフィギュレーションがすべて削除されている。 | ✓ | ✓ | ✓ | 1002 | カテゴリ:ソフトウェア障害パターンセカンダリクラスター:予期せぬエントリーポイント | このカテゴリは、予期しないエントリポイントクラスタ内のソフトウェア障害パターン(SFP)を識別します。 |
14.2.3 | JavaScriptライブラリ、CSSスタイルシート、Webフォントなどのアプリケーション資産がコンテンツ配信ネットワーク(CDN)または外部プロバイダで外部的にホストされている場合、資産の整合性を検証するためにサブリソース完全性(SRI)が使用されている。 | ✓ | ✓ | ✓ | 714 | サーバー側でのHTTPパーミッションメソッドの信頼性 | サーバーには、HTTP GET を使用してアクセスされた URI は、関連するリソースの状態変化を引き起こさないことを前提とした保護メカニズムが含まれています。これにより、攻撃者は意図したアクセス制限を迂回して、リソースの変更や削除攻撃を行うことができるかもしれません |
14.2.4 | サードパーティのコンポーネントが、事前に定義され、信頼され、継続的に維持されるリポジトリからのものとなっている。 (C2) | ✓ | ✓ | 829 | 信頼されていない制御領域からの機能の包含 | ソフトウェアは、意図された制御領域外のソースから実行可能な機能(ライブラリなど)をインポート、要求、またはインクルードします。 | |
14.2.5 | 使用しているすべてのサードパーティライブラリのインベントリカタログが維持されている。 (C2) | ✓ | ✓ | ||||
14.2.6 | サードパーティのライブラリをサンドボックス化またはカプセル化して、必要な動作だけをアプリケーションに公開することで、攻撃対象領域を最小化する。 (C2) | ✓ | ✓ | 265 | カテゴリ:特権問題 | このカテゴリの弱点は、特権の不適切な取り扱い、割り当て、または管理によって発生します。特権とは、ユーザなどのエージェントのプロパティです。特権は、通常は許可されていないことをエージェントに可能にします。例えば、コンピュータの再起動などのメンテナンス機能をエージェントに実行させる特権があります。 |
V14.3 意図しないセキュリティの開示の要件 †
本番環境の構成を強化して、デバッグコンソールなどの一般的な攻撃から保護し、クロスサイトスクリプティング(XSS)とリモートファイルインクルード(RFI)攻撃の基準を引き上げ、歓迎されない多くのペネトレーションテストの報告の特徴である発見された些細な脆弱性を排除します。
これらの問題の多くはめったに重大なリスクとして評価されませんが、他の脆弱性と連鎖します。これらの問題がデフォルトで存在しない場合、ほとんどの攻撃が成功する前にレベルが引き上げられます。
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 |
14.3.1 | Webまたはアプリケーションサーバとフレームワークのエラーメッセージが、意図しないセキュリティ情報の開示を排除するために、ユーザが実行可能なカスタマイズされた応答を返すように構成されている。 | ✓ | ✓ | ✓ | 209 | 機密情報を含むエラーメッセージの生成 | ソフトウェアは、その環境、ユーザー、または関連データに関する機密情報を含むエラーメッセージを生成します。 |
14.3.2 | Webまたはアプリケーションサーバとアプリケーションフレームワークのデバッグモードが運用環境で無効になっていることを確認して、デバッグ機能、開発者コンソール、および意図しないセキュリティ開示を排除する。 | ✓ | ✓ | ✓ | 497 | 機密システム情報の不正な制御範囲への曝露 | アプリケーションは、アプリケーションと同じレベルのアクセス権を持たない無許可のアクターによるシステムレベルの機密情報へのアクセスを適切に防いでいません。 |
14.3.3 | HTTPヘッダまたはHTTPレスポンスの一部がシステムコンポーネントの詳細なバージョン情報を公開していない。 | ✓ | ✓ | ✓ | 200 | 機密情報の非公認俳優への暴露について | この製品は、その情報へのアクセスを明示的に許可されていないアクターに機密情報を公開します。 |
V14.4 HTTPセキュリティヘッダの要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 |
14.4.1 | すべてのHTTPレスポンスに、安全な文字セット(例:UTF-8、ISO 8859-1)を指定するコンテントタイプヘッダが含まれている。 | ✓ | ✓ | ✓ | 173 | 代替エンコーディングの不適切な処理 | 入力が送信先の制御球に対して有効な代替エンコーディングを使用している場合、ソフトウェアは適切に処理しません。 |
14.4.2 | すべてのAPIレスポンスにContent-Disposition:attachment; filename="api.json"が含まれている(または他のコンテントタイプの適切なファイル名)。 | ✓ | ✓ | ✓ | 116 | 出力の不適切なエンコードまたはエスケープ | 不適切なエンコーディングまたは出力のエスケープソフトウェアは、別のコンポーネントと通信するために構造化されたメッセージを準備しますが、データのエンコーディングまたはエスケープが欠落しているか、正しく行われていません。その結果、メッセージの意図した構造が保持されません。 |
14.4.3 | HTML、DOM、JSON、JavaScriptインジェクションの脆弱性などのXSS攻撃の影響を軽減するのに役立つContent Security Policy (CSPv2) が配置されている。 | ✓ | ✓ | ✓ | 1021 | レンダリングされた UI レイヤーやフレームの不適切な制限 | ウェブアプリケーションは、フレームオブジェクトや別のアプリケーションやドメインに属する UI レイヤーを制限したり、不適切に制限したりしません。 |
14.4.4 | すべてのレスポンスにX-Content-Type-Options:nosniffが含まれている。 | ✓ | ✓ | ✓ | 116 | 出力の不適切なエンコードまたはエスケープ | 不適切なエンコーディングまたは出力のエスケープソフトウェアは、別のコンポーネントと通信するために構造化されたメッセージを準備しますが、データのエンコーディングまたはエスケープが欠落しているか、正しく行われていません。その結果、メッセージの意図した構造が保持されません。 |
14.4.5 | HTTP Strict Transport Securityヘッダがすべてのレスポンスとすべてのサブドメインに含まれている。例えば、Strict-Transport-Security:max-age = 15724800; | ✓ | ✓ | ✓ | 523 | 証明書の保護されていない転送 | ログインページでは、クライアントからサーバへの転送中にユーザ名とパスワードを保護するための適切な手段が使用されていません。 |
14.4.6 | 「no-referrer」や「same-origin」のような、適切な「Referrer-Policy」ヘッダが含まれている。 | ✓ | ✓ | ✓ | 116 | 出力の不適切なエンコードまたはエスケープ | 不適切なエンコーディングまたは出力のエスケープソフトウェアは、別のコンポーネントと通信するために構造化されたメッセージを準備しますが、データのエンコーディングまたはエスケープが欠落しているか、正しく行われていません。その結果、メッセージの意図した構造が保持されません。 |
14.4.7 | サードパーティのサイトに埋め込むべきではないサイトで、適切なヘッダが(X-Frame-OptionsまたはContent-Security-Policy:frame-ancestors)が、サイトで使用されている。 | ✓ | ✓ | ✓ | 346 | オリジン検証エラー | ソフトウェアが、データまたは通信のソースが有効であることを適切に検証していません。 |
V14.5 HTTPリクエストヘッダのバリデーションの要件 †
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 |
14.5.1 | アプリケーションサーバが、pre-flight OPTIONSを含む、アプリケーションまたはAPIで使用されているHTTPメソッドのみを受け入れる。 | ✓ | ✓ | ✓ | 749 | 露呈した危険なメソッドまたは機能 | ソフトウェアは、外部アクターとの相互作用のためのアプリケーション・プログラミング・インターフェース(API)または類似のインターフェースを提供していますが、そのインターフェースには、適切に制限されていない危険なメソッドまたは機能が含まれています。 |
14.5.2 | 提供されたOriginヘッダは、攻撃者によって簡単に変更できるため、認証やアクセス制御の判断に使用されていない。 | ✓ | ✓ | ✓ | 346 | オリジン検証エラー | ソフトウェアが、データまたは通信のソースが有効であることを適切に検証していません。 |
14.5.3 | オリジン間リソース共有(CORS)のAccess-Control-Allow-Originヘッダが信頼できるドメインの厳密なホワイトリストを使用して照合し、「null」オリジンをサポートしていない。 | ✓ | ✓ | ✓ | 346 | オリジン検証エラー | ソフトウェアが、データまたは通信のソースが有効であることを適切に検証していません。 |
14.5.4 | 信頼できるプロキシまたはbearerトークンのようなSSOデバイスによって追加されたHTTPヘッダがアプリケーションによって認証されている。 | ✓ | ✓ | 306 | 重要な機能の認証がない | ソフトウェアは、証明可能なユーザー ID を必要としたり、大量のリソースを消費したりする機能の認証を実行しません。 |
参考情報
詳しくは以下の情報を参照してください。
- OWASP Testing Guide 4.0: Testing for HTTP Verb Tampering : https://www.owasp.org/index.php/Testing_for_HTTP_Verb_Tampering_%28OTG-INPVAL-003%29
- Content-DispositionのAPIレスポンスへの追加はクライアントとサーバ間のMIMEタイプの誤認識におよびファイル名オプションによる多くの攻撃から防御するのに役立つ。 Reflected File Download attacks. :https://www.blackhat.com/docs/eu-14/materials/eu-14-Hafif-Reflected-File-Download-A-New-Web-Attack-Vector.pdf
- Content Security Policy Cheat Sheet : https://www.owasp.org/index.php?title=Content_Security_Policy_Cheat_Sheet
- Exploiting CORS misconfiguration for BitCoins and Bounties : https://portswigger.net/blog/exploiting-cors-misconfigurations-for-bitcoins-and-bounties
- OWASP Testing Guide 4.0: Configuration and Deployment Management Testing : https://www.owasp.org/index.php/Testing_for_configuration_management
- Sandboxing third party components : https://www.owasp.org/index.php/3rd_Party_Javascript_Management_Cheat_Sheet#Sandboxing_Content