V16: セキュリティログ記録とエラー処理
管理目標
セキュリティログはエラー処理やパフォーマンスではなく、セキュリティ上重要なイベントが発生した時の記録に重点を置いた特定のタイプのログ記録です。
セキュリティログ記録の主な目的はユーザ、管理者、インシデント対応チームに有用な情報を提供することであり、廃棄されるノイズよりも多くのシグナルが含まれます。セキュリティ関連のイベントをログ記録する場合には、そのログに目的があり、SIEM や分析ソフトウェアによって区別できることを確認してください。
セキュリティログには機密データを含むことがよくあり、現地のデータプライバシー法や指令に従って保護する必要があります。また、このような機密データは攻撃者にとってそれ自体がターゲットとして非常に魅力的であるため、慎重に保護する必要があります。
これとは別に、アプリケーションが安全に失敗し、エラーが不必要な情報を開示したり、アプリケーションの動作を停止することがないように確保することも重要です。
V16.1 エラー、ログ記録および監査ドキュメント
16.1.1
アプリケーションのテクノロジスタックの各レイヤで実行されるログ記録、ログ記録されるイベント、ログ形式、ログ記録の保存場所、ログ記録の使用方法、ログ記録へのアクセスコントロール方法、ログの保存期間を文書化したインベントリが存在している。
2
v5.0.be-1.7.3
V16.2 一般的なログ記録
機密情報をログに記録することは危険です。そのログは分類され、暗号化する必要があり、保有ポリシーの対象となり、セキュリティ監査で開示する必要があります。必要な情報のみをログに保存し、決済、クレデンシャル (セッショントークンを含む) 、機密情報、個人を識別できる情報を含めてはいけません。
ログエントリに含める必要がある具体的な情報については、OWASP Logging Cheat Sheet などの外部の詳細なガイダンスを参照してください。
16.2.1
各ログエントリにはイベントが発生した時のタイムラインの詳細な調査を可能にするために必要なメタデータ (いつ、どこで、誰が、何を、など) が含まれている。
2
v5.0.be-7.1.4
16.2.2
時刻ソースが正しい時刻とタイムゾーンに同期している。インシデント後のフォレンジック解析を支援するためにシステムがグローバルである場合には、UTC でのみログを記録することを強く検討する。
2
v5.0.be-7.1.5
16.2.3
アプリケーションはログインベントリに文書化されているファイルおよびサービスのログだけを保存またはブロードキャストしている。
2
v5.0.be-7.1.6
16.2.4
ログは使用しているログプロセッサによって、できれば共通のログ形式を使用して、読み取りおよび関連付けできる。
2
v5.0.be-7.1.7
16.2.5
機密データをログに記録する際、アプリケーションはデータの保護レベルを考慮している。たとえば、クレデンシャルや支払詳細のような特定のデータをログ記録することは許可できないことがある。セッショントークンなどのその他のデータは、ハッシュ化または、全体または一部がマスクされた状態でのみログ記録できる。
2
v5.0.be-7.1.1
V16.3 セキュリティイベント
セキュリティに関連するイベントのログ記録は、アプリケーション内の不審なアクティビティを調査できるようにするための重要なメカニズムです。
このセクションではログ記録するイベントの種類について簡単に説明しますが、意図的に詳細には触れません。具体的な実装の詳細については OWASP Logging Cheat Sheet や OWASP Application Logging Vocabulary Cheat Sheet などの外部の詳細なガイダンスを参照する必要があります。
また、アラートは別のプロセスとシステムになる可能性が高いことにも注意してください。そのため、正しいイベントをログ記録することは ASVS のスコープ内と考えられますが、これらのイベントを関連付けてアラートすることはスコープ内ではありません。
16.3.1
すべての認証操作は成功した試行と失敗した試行の両方を含めてログ記録されている。使用された認証の種類や要素などの追加のメタデータも収集する必要がある。
2
v5.0.be-7.2.1
16.3.2
失敗した認可の試行をログ記録している。L3 では、これはすべての認可判定のログ記録を含む必要がある。
2
v5.0.be-7.2.2
16.3.3
アプリケーションは入力バリデーションなどの設計ドキュメントで定義されたセキュリティ制御をバイパスする試みをログ記録している。
2
v5.0.be-7.2.3
16.3.4
アプリケーションは、文書化された制限に基づいて、ビジネスロジックの異常や、IP 、ユーザ、1時間または1日あたりの合計数などの異常または過剰なリクエストパターンを含む異常なアクティビティを検出およびログ記録できる。
3
v5.0.be-7.2.4
16.3.5
関連するデータ保護要件により必要な場合、機密データへのアクセスをログ記録している (機密データ自体はログ記録していない) 。
3
v5.0.be-7.2.5
16.3.6
アプリケーションはバックエンド TLS 障害などのセキュリティ制御障害をログ記録している。
3
v5.0.be-7.2.6
V16.4 ログ保護
簡単に改変や削除が可能なログは調査や遂行の役に立ちません。ログの開示はアプリケーションやそこに含まれるデータに関する内部の詳細を漏洩する可能性があります。不正な開示、改変、削除からログを保護する際には注意が必要です。
16.4.1
ログインジェクションを防ぐためにすべてのログ記録コンポーネントがデータを適切にエンコードしている。
2
v5.0.be-7.3.1
16.4.2
ログは不正なアクセスから保護されており、改変できない。
2
v5.0.be-7.3.3
16.4.3
分析、検出、警告、エスカレーションのために、ログが論理的に分離されたシステムに安全に送信されている。これはアプリケーションが侵害されたとしても、ログが侵害されないことを保証することを目的としている。
2
v5.0.be-7.3.5
V16.5 エラー処理
エラー処理の目的は、機密情報を開示することなく、アプリケーションが適切かつ安全に失敗することを確保することです。アプリケーションはこれが常に行われるように作成する必要があります。
16.5.1
予期しないエラーやセキュリティ上重要なエラーが発生したとき、スタックトレース、クエリ、秘密鍵、トークンなどの機密性の高い内部システムデータを開示しない、一般的なメッセージが表示される。
2
v5.0.be-7.4.1
16.5.2
アプリケーションは、たとえばサーキットブレーカーパターンを使用するなど、外部リソースへのアクセスに失敗してもアプリケーション全体が失敗しないように設計されている。
2
v5.0.be-7.4.4
16.5.3
例外が発生した場合など、アプリケーションは適切かつ安全に失敗し、検証ロジックの結果としてのエラーにも関わらずトランザクションを処理するようなフェイルオープン状態を防いでいる。
2
v5.0.be-7.4.5
16.5.4
未処理の例外をすべてキャッチする「最終手段」のエラーハンドラが定義されている。これは、ログファイルに記録する必要があるエラー詳細を失わないようにするためであり、エラーがアプリケーションプロセス全体を停止して可用性が失われないようにするためである。
3
v5.0.be-7.4.3
注意: Swift や Go (および一般的なデザインプラクティスを通じて) 多くの関数型言語などの特定の言語は、例外やラストリゾートイベントハンドラをサポートしていません。この場合、設計者と開発者はパターン、言語、フレームワークにフレンドリーな方法を使用して、アプリケーションが例外イベント、予期しないイベント、セキュリティ関連のイベントをセキュアに処理できるようにする必要があります。
参考情報
詳しくは以下の情報を参照してください。
Last updated
Was this helpful?