V7 エラー処理とロギング検証の要件
管理目標 †
エラー処理とログ記録の主な目的は、ユーザ、管理者、インシデント対応チームに有用な情報を提供することです。目的は、大量のログを作成することではなく、廃棄されるノイズよりも多くのシグナルを含む高品質のログを作成することです。 高品質のログには機密データが含まれていることが多く、現地のデータプライバシー法や指令に従って保護されなければなりません。これには以下が含まれます。
- 特に必要とされない限り、機密情報の収集やロギングを行わないこと
- すべてのログ情報が安全に処理され、データ分類に従って保護されていること
- ログは永久に保存せず、可能な限り短い絶対的な寿命を持つようにすること
定義は国によって異なりますが、ログに個人情報や機密性の高いデータが含まれている場合、ログはアプリケーショ ンによって保持される最も機密性の高い情報の一部となり、攻撃者にとって非常に魅力的なものとなります。
また、アプリケーションが安全に失敗し、エラーが不必要な情報を開示しないようにすることも重要です。
V7.1 ログ内容の要件 †
機密情報をログに記録するのは危険です。ログそのものが機密情報に分類されるため、暗号化する必要が生じ、保存ポリシーの対象となり、セキュリティ監査で開示する必要があります。必要な情報のみをログに保存し、支払い、資格情報(セッショントークンを含む)、機密情報または個人を特定できる情報は絶対に含めないでください。 V7.1はOWASP Top 10 2017:A10をカバーしています。2017:A10とこのセクションはペネトレーションテストが不可能なため、以下の点が重要です。
- 開発者は、このセクションでL1とマークされているすべての項目に完全準拠すること
- ペネトレーションテスターは、インタビューやスクリーンショットまたはアサーションを介してV7.1のすべての項目への完全準拠を検証すること
項番 説明 L1 L2 L3 CWE No タイトル 概要 7.1.1 アプリケーションがクレデンシャルまたは支払い情報をログに保存していない。セッショントークンは、不可逆的なハッシュ形式でのみログに保存する。 (C9, C10) ✓ ✓ ✓ 532 ログファイルへの機密情報の挿入 ログファイルに書き込まれた情報は機密性が高く、攻撃者に貴重なガイダンスを与えたり、機密性の高いユーザー情報を暴露したりする可能性があります。 7.1.2 現地のプライバシー法または関連するセキュリティポリシーで定義されているその他のセンシティブなデータをログに記録していない。 (C9) ✓ ✓ ✓ 532 ログファイルへの機密情報の挿入 ログファイルに書き込まれた情報は機密性が高く、攻撃者に貴重なガイダンスを与えたり、機密性の高いユーザー情報を暴露したりする可能性があります。 7.1.3 成功および失敗した認証イベント、アクセス制御の失敗、デシリアライゼーションの失敗、および入力検証の失敗を含むセキュリティへの影響が考えられるイベントについてログを保存する。 (C5, C7) ✓ ✓ 778 不十分なロギング セキュリティ上重要なイベントが発生した場合、ソフトウェアはイベントを記録しないか、ログを記録する際にイベントに関する重要な詳細を省略します。 7.1.4 各ログのイベントには、イベント発生時のタイムラインを詳細に調査するために必要な情報が含まれている。 (C9) ✓ ✓ 778 不十分なロギング セキュリティ上重要なイベントが発生した場合、ソフトウェアはイベントを記録しないか、ログを記録する際にイベントに関する重要な詳細を省略します。
V7.2 ログ処理の要件 †
タイムリーなログ記録は、監査イベント、トリアージおよびエスカレーションにとって重要です。アプリケーションのログが明確で、ローカルまたはリモートの監視システムに送信されたログのいずれかで簡単に監視および分析できることを確認してください。 V7.2はOWASP Top 10 2017:A10をカバーしています。2017:A10とこのセクションはペネトレーションテストが不可能なため、以下の点が重要です。
- 開発者は、このセクションでL1とマークされているすべての項目に完全準拠すること
- ペネトレーションテスターは、インタビューやスクリーンショットまたはアサーションを介してV7.2のすべての項目への完全準拠を検証すること
項番 説明 L1 L2 L3 CWE No タイトル 概要 7.2.1 センシティブなセッションIDやパスワードを保存せずに、すべての認証判定がログに記録されている。これには、セキュリティ調査に必要な関連メタデータを含むリクエストを含める。 ✓ ✓ 778 不十分なロギング セキュリティ上重要なイベントが発生した場合、ソフトウェアはイベントを記録しないか、ログを記録する際にイベントに関する重要な詳細を省略します。 7.2.2 すべてのアクセス制御判定がログに記録され、失敗したすべての判定がログに記録される。これには、セキュリティ調査に必要な関連メタデータを含むリクエストを含める。 ✓ ✓ 285 不適切な認証 アクターがリソースにアクセスしたり、アクションを実行しようとしたときに、ソフトウェアが認証チェックを実行しないか、または正しく実行されません。
V7.3 ログ保護の要件 †
簡単に変更や削除が可能なログは、調査や訴追には使えません。ログの公開により、アプリケーションまたはアプリケーションに含まれるデータに関する内部の詳細が明らかになる可能性があります。不正な開示、変更、削除からログを保護する際には注意が必要です。
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 |
7.3.1 | ログインジェクションを防ぐためにユーザ指定のデータを適切にエンコードする。 (C9) | ✓ | ✓ | 117 | ログの不適切な出力中和 | このソフトウェアは、ログに書き込まれた出力を中和したり、誤って中和したりしません。 | |
7.3.2 | ログ閲覧ソフトウェアで表示したときに、すべてのイベントがインジェクションから保護されている。 (C9) | ✓ | ✓ | 117 | ログの不適切な出力中和 | このソフトウェアは、ログに書き込まれた出力を中和したり、誤って中和したりしません。 | |
7.3.3 | セキュリティログが不正なアクセスや改変から保護されている。 (C9) | ✓ | ✓ | 200 | 機密情報の非公認俳優への暴露について | この製品は、その情報へのアクセスを明示的に許可されていないアクターに機密情報を公開します。 | |
7.3.4 | 時刻源が正しい時間と正しいタイムゾーンに同期されている。システムがグローバルである場合は、インシデント後のフォレンジック分析を支援するためにUTCでのみログを記録することを強く検討する。 (C9) | ✓ | ✓ |
注:ログのエンコーディング(7.3.1)は、自動化された動的ツールやペネトレーションテストによるテストやレビューは困難ですが、設計者、開発者、ソースコードレビュー者はログのエンコーディングをL1の要件と考える必要があります。
V7.4 エラー処理 †
エラー処理の目的は、アプリケーションが監視やトリアージおよびエスカレーションのためにセキュリティ関連のイベントを提供できるようにすることです。目的はログを作成することではありません。セキュリティ関連のイベントをログに記録するときは、ログに目的があること、およびSIEMまたは分析ソフトウェアによって区別できることを確認してください。
項番 | 説明 | L1 | L2 | L3 | CWE No | タイトル | 概要 |
7.4.1 | 予期しないエラーまたはセキュリティ上重要なエラーが発生したときに、サポート担当者が調査に使用できる一意のIDとともに一般的なメッセージが表示される。 (C10) | ✓ | ✓ | ✓ | 210 | 機密情報を含む自己生成のエラーメッセージ | ソフトウェアはエラー状態を識別し、機密情報を含む独自の診断メッセージまたはエラーメッセージを作成します。 |
7.4.2 | 予期されるエラーおよび予期されないエラー状態を説明するために、例外処理(または機能的に同等なもの)がコードベース全体で使用されている。 (C10) | ✓ | ✓ | 544 | 標準化されたエラー処理メカニズムがない | ソフトウェアは、コード全体でエラーを処理するための標準化された方法を使用していないため、一貫性のないエラー処理とその結果としての弱点が発生する可能性があります。 | |
7.4.3 | 未処理の例外をすべて捕捉する「最後の手段」となるエラーハンドラが定義されている。 (C10) | ✓ | ✓ | 460 | 例外がスローされたときの不適切なクリーンアップ | 例外がスローされたときに、製品がその状態をクリーンアップしなかったり、不適切にクリーンアップしたりしたため、予期しない状態や制御フローが発生します。 |
注:SwiftやGoのような特定の言語や(および一般的な設計手法を通して)多くの関数型言語は、例外や最終手段イベントハンドラをサポートしていません。このような場合、設計者と開発者は、パターン、言語またはフレームワークで簡単に使える方法を使用して、例外や予期しないイベントまたはセキュリティ関連のイベントをアプリケーションが安全に処理できるようにする必要があります。
参考情報 †
詳しくは以下の情報を参照してください。
- OWASP Testing Guide 4.0 content: Testing for Error Handling : https://www.owasp.org/index.php/Testing_for_Error_Handling