V7: セキュリティログ記録およびエラー処理

管理目標

セキュリティログはエラー処理やパフォーマンスではなく、セキュリティ上重要なイベントが発生した時の記録に重点を置いた特定のタイプのログ記録です。

セキュリティログ記録の主な目的はユーザ、管理者、インシデント対応チームに有用な情報を提供することであり、廃棄されるノイズよりも多くのシグナルが含まれます。セキュリティ関連のイベントをログ記録する場合には、そのログに目的があり、SIEM や分析ソフトウェアによって区別できることを確認してください。

セキュリティログには機密データを含むことがよくあり、現地のデータプライバシー法や指令に従って保護しなければなりません。また、このような機密データは攻撃者にとってそれ自体がターゲットとして非常に魅力的であるため、慎重に保護する必要があります。

これとは別に、アプリケーションが安全に失敗し、エラーが不必要な情報を開示したり、アプリケーションの動作を停止することがないように確保することも重要です。

V7.1 一般的なログ記録

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

ログエントリに含める必要がある具体的な情報については、OWASP Logging Cheat Sheet などの外部の詳細なガイダンスを参照してください。

#説明L1L2L3CWE

7.1.1

[修正, 7.1.2 からマージ] アプリケーションはクレデンシャル、支払詳細、あるいは現地のプライバシー法や関連するセキュリティポリシーに基づき機密と定義されたデータをログ記録しない。セッショントークンは不可逆でハッシュ化された形式でのみログに保存される必要がある。

532

7.1.2

[削除, 7.1.1 へマージ]

7.1.3

[7.2.3 へ移動]

7.1.4

[修正] 各ログエントリにはイベントが発生した時のタイムラインの詳細な調査を可能にするために必要なメタデータが含まれている。

778

7.1.5

[7.3.4 から移動] 時刻ソースが正しい時刻とタイムゾーンに同期している。インシデント後のフォレンジック解析を支援するためにシステムがグローバルである場合には、UTC でのみログを記録することを強く検討する。

7.1.6

[追加] アプリケーションはログインベントリに文書化されているファイルおよびサービスのログだけを保存またはブロードキャストしている。

7.1.7

[修正, 1.7.1 から移動] ログは使用しているログプロセッサによって、できれば共通のログ形式を使用して、読み取りおよび関連付けできる。

V7.2 セキュリティイベント

セキュリティに関連するイベントのログ記録は、アプリケーション内の不審なアクティビティを調査できるようにするための重要なメカニズムです。

このセクションではログ記録するイベントの種類について簡単に説明しますが、意図的に詳細には触れません。具体的な実装の詳細については OWASP Logging Cheat Sheet や OWASP Application Logging Vocabulary Cheat Sheet などの外部の詳細なガイダンスを参照する必要があります。

#説明L1L2L3CWE

7.2.1

[修正] すべての認証操作は成功した試行と失敗した試行の両方を含めてログ記録されている。使用された認証の種類や要素などの追加のメタデータも収集する必要がある。

778

7.2.2

[修正] すべてのアクセス制御判定は失敗した試行も含めてログ記録されている。

285

7.2.3

[修正, 7.1.3 から移動] アプリケーションは入力バリデーションなどの設計ドキュメントで定義されたセキュリティ制御をバイパスする試みをログ記録している。

778

7.2.4

[修正, 11.1.7 から移動] アプリケーションはビジネスロジックの観点から異常なイベントやアクティビティを監視している。

754

7.2.5

[修正, 11.1.8 から移動] アプリケーションは異常なアクティビティや悪意のあるアクティビティが検出されたときに設定可能なアラートを発している。

390

7.2.6

[修正, 9.2.5 から移動] アプリケーションはバックエンド TLS 障害などのセキュリティ制御障害をログ記録している。

778

7.2.7

[修正, 8.3.5 から移動] 関連するデータ保護要件により必要な場合、機密データへのアクセスをログ記録している (機密データ自体はログ記録していない) 。

V7.3 ログ保護

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

#説明L1L2L3CWE

7.3.1

ログインジェクションを防ぐためにすべてのログ記録コンポーネントがデータを適切にエンコードしている。

117

7.3.2

[削除, 7.3.1 と重複]

7.3.3

[修正] ログは不正なアクセスから保護されており、改変できない。

200

7.3.4

[7.1.5 へ移動]

7.3.5

[1.7.2 から移動] 分析、検出、警告、エスカレーションのために、ログができればリモートシステムにセキュアに転送されている。

V7.4 エラー処理

エラー処理の目的は、機密情報を開示することなく、アプリケーションが適切かつ安全に失敗することを確保することです。アプリケーションはこれが常に行われるように作成する必要があります。

#説明L1L2L3CWE

7.4.1

予期しないエラーまたはセキュリティ上重要なエラーが発生したとき、サポート担当者が調査に使用できる一意のIDを使用して、一般的なメッセージが表示される。

210

7.4.2

[修正] 一貫性があり標準化された例外処理メカニズム (または機能的に同等なもの) がコードベース全体で使用されている。

544

7.4.3

未処理の例外をすべてキャッチする「最終手段」のエラーハンドラが定義されている。

431

7.4.4

[追加] アプリケーションは、たとえばサーキットブレーカーパターンを使用するなど、外部リソースへのアクセスに失敗してもアプリケーション全体が失敗しないように設計されている。

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

参考情報

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

Last updated