C9: セキュリティログ記録とモニタリングを実装する (Implement Security Logging and Monitoring)
説明
ログ記録はほとんどの開発者がデバッグや診断の目的ですでに使用している概念です。セキュリティログ記録は同様に基本的な概念であり、アプリケーションの実行時操作の中でのセキュリティ情報をログ記録します。
モニタリングはさまざまな形式の自動化を使用して、アプリケーションとセキュリティのログをライブでレビューすることです。同じツールとパターンを運用、デバッグ、セキュリティの目的に使用できます。
セキュリティログ記録の目的は潜在的なセキュリティインシデントを検出して対応することです。
セキュリティログ記録の利点
セキュリティログ記録は以下に使用できます。
侵入検知システムへの供給
フォレンジック分析と調査
規制遵守要件の確認
侵入検知と対応のためのログ記録
ログ記録を使用して、ユーザーが悪意を持って行動していることを示すアクティビティを特定します。ログ記録する潜在的に悪意のあるアクティビティには以下があります。
期待した数値範囲外の送信データ。
変更不可データ (選択リスト、チェックボックス、その他の限定された入力コンポーネント) への変更を伴う送信データ。
サーバー側のアクセス制御ルールに違反するリクエスト。
現実的な検知ポイントのより包括的なリストは こちら にあります。
アプリケーションがそのようなアクティビティに遭遇した場合、アプリケーションは少なくともそのアクティビティをログ記録し、重大度の高い問題としてマークする必要があります。理想的には、アプリケーションは、たとえばユーザーのセッションを無効にしたり、ユーザーのアカウントをロックするなど、特定した攻撃の可能性に対応すべきでもあります。対応メカニズムにより、ソフトウェアは特定した攻撃の可能性にリアルタイムで反応できます。
安全なログ記録設計
ログ記録ソリューションは安全な方法で構築および管理しなければなりません。安全なログ記録設計には以下を含むことがあります。
期待した文字のみを許可したり、ターゲットに基づいて入力をエンコードして、ログインジェクション 攻撃を防ぎます。お勧めのアプローチはログ記録ソリューションがデータを削除する代わりに入力エスケープを実行することです。そうしないと、ログ記録ソリューションはのちの分析に必要なデータを破棄するかもしれません。
機密情報をログ記録してはいけません。たとえば、パスワード、セッション ID、クレジットカード、社会保障番号をログ記録しないでください。
ログの完全性を保護します。攻撃者はログを改竄しようとするかもしれません。そのため、ログファイルのパーミッションとログ変更の監査を検討する必要があります。
分散システムから一元化した安全なログ記録サービスにログを転送します。これにより、一つのノードが侵害されても、ログデータを失うことはなくなります。また、集中監視や自動監視も可能になります。
脅威
攻撃者はログエントリを操作してログインジェクション攻撃を実行し、悪意のあるデータやコマンドをログファイルに挿入する可能性があります。
攻撃者は、機密データを不注意にキャプチャして保存する過度に詳細なログ記録方法によって、機密情報への認可されていないアクセスを得る可能性があります。
攻撃者は悪意のあるアクティビティの痕跡を隠すためにログの改竄を行い、侵入の証拠を消去または変更する可能性があります。
攻撃者は大量のデータでログ記録システムを圧倒してサービス拒否攻撃を仕掛け、通常のシステム運用を混乱させたり、他の悪意のあるアクションを隠蔽する可能性があります。
攻撃者は不適切なアクセス制御によりログファイルへの認可されていないアクセスを得て、機密性の高いシステム情報やユーザーデータを流出する可能性があります。
攻撃者はログの偽装を行って偽の監査証跡を作成し、調査員を欺いたり、無実の当事者を悪意のあるアクティビティの濡れ衣を着せる可能性があります。
攻撃者は不十分なログ記録方法を利用して、検知されずに悪意のあるアクティビティを実行し、システムへの認可されていないアクセスを長引かせる可能性があります。
攻撃者はマルチスレッドアプリケーションでのログファイル競合状態を悪用して、ログデータを破損したり、機密情報への認可されていないアクセスを得る可能性があります。
攻撃者はログから取得した情報を使用してリプレイ攻撃を実行し、キャプチャしたデータを再利用して正規のユーザーになりすましたり、認証されたアクションを繰り返す可能性があります。
実装
以下はセキュリティログ記録実装のベストプラクティスのリストです。
組織のシステム内およびシステム間で共通のログ記録フォーマットとアプローチに従います。共通のログ記録フレームワークの例としては Apache Logging Services があり、Java, PHP, .NET, C++ アプリケーション間で一貫したログ記録を提供するのに役立ちます。
ログ記録は多すぎても少なすぎてもいけません。たとえば、タイムスタンプと、ソース IP や ユーザー ID などの識別情報は必ずログ記録するようにしますが、特別な注意を払わない限り、プライベートデータ (ユーザー名など) や機密データ (業務データなど) をログ記録しないように注意してください。
ノード間の時刻同期に注意を払い、タイムスタンプが一貫していることを確保します。
防止される脆弱性
ログインメカニズムに対するブルートフォース攻撃
参考情報
ツール
Last updated