> For the complete documentation index, see [llms.txt](https://coky-t.gitbook.io/owasp-asvs-ja/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://coky-t.gitbook.io/owasp-asvs-ja/owasp-apurikshonsekyuriti-40/0x15-v7-error-logging.md).

# V7: エラー処理とログ記録

## 管理目標

エラー処理とログ記録の主な目的はユーザ、管理者、インシデントレスポンスチームに対して有用な情報を提供することです。その目的は大量のログを作成することではなく、廃棄されるノイズよりもより多くのシグナルを持つ高品質のログを作成することです。

高品質のログは機密データを含むことが多く、地域ごとのデータプライバシー法や規制に従って保護する必要があります。これには以下が含まれます。

* 特に必要がない限り機密情報を収集や記録しません。
* ログに記録されたすべての情報がセキュアに処理され、そのデータ分類に従って保護されていることを確認します。
* ログは永続的に保存されるのではなく、可能な限り短い絶対存続時間を持つことを確認します。

個人データや機密データ (国ごとに定義が異なります) をログに含む場合、そのログはアプリケーションにより保持される最も機密性の高い情報の一つとなり、攻撃者にとってそれ自体が非常に魅力的です。

また、アプリケーションがセキュアに失敗し、エラーが不要な情報を開示しないようにすることも重要です。

## V7.1 ログ内容

機密情報をログに記録することは危険です。そのログは分類され、暗号化する必要があり、保有ポリシーの対象となり、セキュリティ監査で開示する必要があります。必要な情報のみをログに保存し、決済、クレデンシャル (セッショントークンを含む) 、機密情報、個人識別情報を含めてはいけません。

V7.1 は OWASP Top 10 2017:A10 をカバーしています。2017:A10 とこのセクションはペネトレーションテストが不可能であるため、以下の点が重要です。

* 開発者はすべての項目が L1 としてマークされているものとして、このセクションに完全準拠していることを確認します。
* ペネトレーションテスト担当者はインタビュー、スクリーンショット、アサーションを介して V7.1 のすべての項目の完全準拠を検証します。

|     #     | 説明                                                                                                                                                              |  L1 |  L2 |  L3 | CWE |
| :-------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-: | :-: | :-: | :-: |
| **7.1.1** | アプリケーションがクレデンシャル、支払い明細をログに記録しない。セッショントークンは不可逆的なハッシュ形式でのみログに格納すべきである。 ([C9, C10](https://owasp.org/www-project-proactive-controls/#div-numbering))               |  ✓  |  ✓  |  ✓  | 532 |
| **7.1.2** | アプリケーションが地域のプライバシー法や関連するセキュリティポリシーの下で定義されているような他の機密データをログに記録していない。 ([C9](https://owasp.org/www-project-proactive-controls/#div-numbering))                      |  ✓  |  ✓  |  ✓  | 532 |
| **7.1.3** | 成功および失敗した認証イベント、アクセス制御の失敗、デシリアライズの失敗および入力検証の失敗など、セキュリティに関するイベントをアプリケーションがログに記録している。 ([C5, C7](https://owasp.org/www-project-proactive-controls/#div-numbering)) |     |  ✓  |  ✓  | 778 |
| **7.1.4** | 各ログイベントにはイベントが発生した時のタイムラインの詳細な調査を可能にするために必要な情報が含まれている。 ([C9](https://owasp.org/www-project-proactive-controls/#div-numbering))                                  |     |  ✓  |  ✓  | 778 |

## V7.2 ログ処理

タイムリーなログ記録は監査イベント、トリアージ、エスカレーションにとって重要です。アプリケーションのログが明確であり、ローカルでまたはリモートの監視システムに送信されたログでのいずれかで簡単に監視および分析できることを確認します。

V7.2 は OWASP Top 10 2017:A10 をカバーしています。2017:A10 およびこのセクションはペネトレーションテストが不可能であるため、以下の点が重要です。

* 開発者はすべての項目が L1 としてマークされているものとして、このセクションに完全準拠していることを確認します。
* ペネトレーションテスト担当者はインタビュー、スクリーンショット、アサーションを介して V7.2 のすべての項目の完全準拠を検証します。

|     #     | 説明                                                                                        |  L1 |  L2 |  L3 | CWE |
| :-------: | ----------------------------------------------------------------------------------------- | :-: | :-: | :-: | :-: |
| **7.2.1** | 機密性の高いセッショントークンやパスワードを保存せずに、すべての認証判定がログに記録されている。これにはセキュリティ調査に必要な関連メタデータを伴うリクエストを含めるべきである。 |     |  ✓  |  ✓  | 778 |
| **7.2.2** | すべてのアクセス制御判定がログに記録されており、失敗したすべての判定がログに記録される。これにはセキュリティ調査に必要な関連メタデータを伴うリクエストを含めるべきである。     |     |  ✓  |  ✓  | 285 |

## V7.3 ログ保護

簡単に改変や削除が可能なログは調査や遂行の役に立ちません。ログの開示はアプリケーションやそこに含まれるデータに関する内部の詳細を漏洩する可能性があります。不正な開示、改変、削除からログを保護する際には注意が必要です。

|     #     | 説明                                                                                                                                                                    |  L1 |  L2 |  L3 | CWE |
| :-------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-: | :-: | :-: | :-: |
| **7.3.1** | ログインジェクションを防ぐためにすべてのログ記録コンポーネントがデータを適切にエンコードしている。 ([C9](https://owasp.org/www-project-proactive-controls/#div-numbering))                                             |     |  ✓  |  ✓  | 117 |
| **7.3.2** | \[削除, 7.3.1 と重複]                                                                                                                                                      |     |     |     |     |
| **7.3.3** | セキュリティログは不正なアクセスや改変から保護されている。 ([C9](https://owasp.org/www-project-proactive-controls/#div-numbering))                                                                 |     |  ✓  |  ✓  | 200 |
| **7.3.4** | 時刻ソースが正しい時刻とタイムゾーンに同期している。インシデント後のフォレンジック解析を支援するためにシステムがグローバルである場合には、UTC でのみログを記録することを強く検討する。 ([C9](https://owasp.org/www-project-proactive-controls/#div-numbering)) |     |  ✓  |  ✓  |     |

注意: ログのエンコーディング (7.3.1) は自動動的ツールやペネトレーションテストを使用してテストやレビューをすることが困難ですが、設計者、開発者、ソースコードレビュー担当者は L1 要件とみなすべきです。

## V7.4 エラー処理

エラー処理の目的はアプリケーションが監視、トリアージ、エスカレーションのためにセキュリティ関連のイベントを提供できるようにすることです。その目的はログを作成することではありません。セキュリティ関連のイベントをログに記録する際には、ログに目的があること、および SIEM または解析ソフトウェアにより識別できることを確認します。

|     #     | 説明                                                                                                                                                   |  L1 |  L2 |  L3 | CWE |
| :-------: | ---------------------------------------------------------------------------------------------------------------------------------------------------- | :-: | :-: | :-: | :-: |
| **7.4.1** | 予期しないエラーまたはセキュリティ上重要なエラーが発生したとき、サポート担当者が調査に使用できる一意のIDを使用して、一般的なメッセージが表示される。 ([C10](https://owasp.org/www-project-proactive-controls/#div-numbering)) |  ✓  |  ✓  |  ✓  | 210 |
| **7.4.2** | 予期されるエラー状態および予期しないエラー状態に対して、例外処理 (または機能的に同等なもの) がコードベース全体で使用されている。 ([C10](https://owasp.org/www-project-proactive-controls/#div-numbering))          |     |  ✓  |  ✓  | 544 |
| **7.4.3** | 未処理の例外をすべてキャッチする「最終手段」のエラーハンドラが定義されている。 ([C10](https://owasp.org/www-project-proactive-controls/#div-numbering))                                     |     |  ✓  |  ✓  | 431 |

注意: Swift や Go (および一般的なデザインプラクティスを通じて) 多くの関数型言語などの特定の言語は、例外やラストリゾートイベントハンドラをサポートしていません。この場合、設計者と開発者はパターン、言語、フレームワークにフレンドリーな方法を使用して、アプリケーションが例外イベント、予期しないイベント、セキュリティ関連のイベントをセキュアに処理できるようにする必要があります。

## 参考情報

詳しくは以下の情報を参照してください。

* [OWASP Testing Guide 4.0 content: Testing for Error Handling](https://owasp.org/www-project-web-security-testing-guide/v41/4-Web_Application_Security_Testing/08-Testing_for_Error_Handling/README.html)
* [OWASP Authentication Cheat Sheet section about error messages](https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html#authentication-and-error-messages)
