Apache Log4j の脆弱性による影響の低減を支援する Google Cloud Armor WAF ルール
Google Cloud Japan Team
編集者注:
2021 年 12 月 16 日午後 12 時(太平洋標準時)時点で、この投稿を更新し、最新の NIST 文書 CVE-2021-45046 についての情報を追加しました。Cloud Armor の既存の「cve-canary」ルールは、新しい CVE に対して同等の保護を提供します。
2021 年 12 月 13 日午後 5 時 30 分(太平洋標準時)の時点で、この投稿を更新し、ルールの仕組みとチューニング方法についての情報を追加しました。
2021 年 12 月 11 日午後 5 時 30 分(太平洋標準時)の時点で、この記事を更新し、新しい Cloud Armor WAF ルールに関する情報と、ログのスニペットのスクリーンショットに対する説明を追加しました。
NIST は、Apache Log4j ライブラリの新しい脆弱性(CVE-2021-44228)を公表しました。この脆弱性の影響を軽減するため、Google Cloud Armor をご利用のお客様は、事前構成された新しい WAF ルールをデプロイできます。このルールは、CVE-2021-44228 を悪用しようとする試みを検出し、必要に応じてブロックできます。
背景
Apache Log4j ユーティリティは、リクエストのロギングによく使われるコンポーネントです。2021 年 12 月 9 日、Apache Log4j のバージョン 2.15 以下を実行しているシステムが侵害され、攻撃者によって任意のコードが実行される可能性があるという脆弱性が報告されました。
2021 年 12 月 10 日、NIST は重大な共通脆弱性識別子(CVE)アラート、CVE-2021-44228 を公開しました。具体的には、構成、ログメッセージ、パラメータに使用される JNDI 機能は、攻撃者に制御された LDAP やその他の JNDI 関連のエンドポイントから保護されません。ログメッセージやログメッセージ パラメータを制御できる攻撃者は、メッセージの検索置換が有効な場合に、リモート サーバーから読み込んだ任意のコードを実行できます。
お客様におかれましては、できるだけ早く Log4j 2 の最新バージョンへのアップグレードをお願いいたします。NIST のウェブサイト(CVE-2021-4428、CVE-2021-45046)に記載されている詳細を読むことで、リスクの可能性を特定できます。
Cloud Armor で Apache Log4j の脆弱性に対応
Google Cloud の Cloud Armor は、Google Cloud、お客様の施設、または他の場所でホストされているアプリケーションやサービスに対して、サービス拒否およびウェブ アプリケーション ファイアウォール(WAF)の保護を提供します。Cloud Armor チームはGoogle Cloud セキュリティ チームと緊密に連携することにより、この問題を分析し、対応策を準備しました。
お客様が Log4j の脆弱性に対処できるようにするため、事前構成された新しい WAF ルール「cve-canary」を導入し、CVE-2021-44228 と CVE-2021-45046 の悪用の試みを検出してブロックできるようにしました。Cloud Armor のお客様は、以下の手順で新規または既存の Cloud Armor セキュリティ ポリシーに新しいルールをデプロイできます。
この CVE の悪用を検知したり、軽減したりするためには、Cloud Armor のセキュリティ ポリシーに「cve-canary」という事前構成された WAF ルールを利用した新しいルールを作成する必要があります。このルールは、Google Cloud Console または gCloud CLI を使用して作成し、新規または既存の Cloud Armor セキュリティ ポリシーに挿入できます。
既存のセキュリティ ポリシーに、悪用の試みをブロックする拒否アクションと優先度 12345 のルールを作成するための gCloud コマンドラインのサンプルは以下のとおりです。
潜在的な脅威のモニタリング、検知、分析
トラフィックを必ずしもブロックすることなく、Cloud Armor で保護されたエンドポイントの悪用行為を監視する必要がある場合は、上記のルールをプレビュー モードでデプロイできます。ルールをプレビュー モードでデプロイすると、ルールがトリガーされたことを示す Cloud Logging のイベントログを受け取ることができますが、Cloud Armor はリクエストをブロックしません。UI または CLI でプレビュー フラグを有効にすると、任意のルールにプレビュー モードを構成できます。
関連するポリシーで Cloud Armor の詳細ログ機能を有効にすると、不審なリクエストを分析できます。詳細ログを有効にすると、Cloud Armor のログには、受信リクエストのどこに疑わしい署名が現れたか、疑わしい署名のスニペットとそれが出現したフィールドに関する追加情報が含まれるようになります。
上記は、単純な悪用の試みから生成されたログの一例で、matchedFieldValue フィールドに不審なメッセージのスニペットが表示されています。Cloud Armor の WAF ルールは、CVE-2021-44228 と CVE-2021-45046 を悪用しようとする試みにおける、難読化やバイパスの試みを検出するために、さまざまな手法を使用しています。Cloud Armor の WAF ルールは、可能性のあるすべての攻撃を検知することを保証するものではありません。しかし、この脆弱性に関する業界の知識の発展に伴って更新されています。
最後に、保護対象のワークロードが REST API のように content-type='application/json' のリクエストを受け取る場合は、セキュリティ ポリシーで JSON 解析を有効にして、Cloud Armor が POST リクエストのボディ内の JSON を解析して悪用の試みを検出できるようにする必要があります。
Cloud Armor による Log4j 脆弱性の低減をチューニングする(2021 年 12 月 13 日更新)
この数日間で WAF ルール「cve-canary」を更新し、他の事前構成された WAF ルールと同様にチューニングすることを可能にしました。これにより、ルールの感度とノイズのバランスを適切に取ることができます。
Cloud Armor は、「cve-canary」ルールによって HTTP リクエスト ヘッダー、URL、ボディ内の Log4j 悪用の試みを検査します。前述のようにこのルールをデプロイすることで、既存の全シグネチャ ID が有効になり、ルールに対する今後のすべての更新が実装されます。しかしながら、お客様のアプリケーション固有のコンテキストにおいてノイズが多すぎる場合は、高感度のシグネチャの感度を下げるようにチューニングできます。ルール内のシグネチャ ID を個別に無効にするには、Cloud Armor ルールを更新して、無効にするシグネチャ ID を次のように指定します。
詳しくは、Cloud Armor のルールのチューニングに関するドキュメントをご覧ください。
上記の機能を構成するための、より詳細な Cloud Armor プロダクトのドキュメントについては、こちらをご覧ください。
上記の緩和策の適用にサポートが必要な場合は、Google Cloud のテクニカル サポートまたは Google Cloud アカウント チームにお問い合わせください。また、緊急性のない質問については、Google Cloud Platform コミュニティの Slack チャンネルの gcp-security でサポートを受けることができます。
- Cloud Armor プロダクト マネージャー Emil Kiner
- ネットワーク スペシャリスト マネージャー Dave Reisfeld