概要
Apache Log4Jの脆弱性(CVE-2021-44228)がロギングライブラリ、GithubのPOC、Twitterで12月9日に公開されました。元々、このバグについてはAlibabaCloud Security Team Chen Zhaojunが11月24日にApacheへ報告しました。この脆弱性は、アプリケーションにlog4jライブラリを組み込んだ製品すべてに影響を与えるため、今後も被害が拡大していく可能性があります。Apple iCloud、Steam、Samsung Cloud storageなどの大手のインターネット企業の製品が含まれており、その他にも数千にのぼる製品やサービスが、脆弱な状態である可能性があります。Javaはあらゆる分野のアプリケーションに広く利用されており、これは氷山の一角に過ぎません。
脆弱性について
この脆弱性は、JNDI(Java Naming and Directory Interface)の変数解決機能の方法に起因します。ログにJNDIのリファレンスが書き込まれると、JNDIは変数を評価するためすべての要件を取得します。このプロセス完了のために必要なリモートクラスをダウンロード、実行します。この脆弱性の主な要件として、攻撃者が制御する入力フィールド、そしてインプットがログに渡されることが必要であるため、サーバー側とクライアント側の両方のアプリケーションに適用されます。
攻撃者は、いくつかの異なるJNDI Lookupを攻撃のオーケストレーションのために利用することができます。最近PoCとアクティブエクスプロイトの両方で頻繁に見られるLookupの悪用は、LDAPに関するものです。しかし、RMIやDNSなどの他のLookupもまた、有効な攻撃手段です。古いJDKバージョンでのみ機能する単純なLDAP/RMI攻撃ベクターには、意味がありません。攻撃が複雑にはなりますが、制限を回避してコード実行した手法を再現したとの報告もあります。
Javaオブジェクトのデシリアライズの脆弱性は、新しい脆弱性と攻撃というわけではありません。“marshalsec” のような、過去の攻撃に関するリサーチをこの脆弱性に反映し、コード実行を単純化しています。
****
2021年12月14日更新の追加情報
Log4j バージョン 1.2 は、JMSAppenderコンポーネントを介した同様の攻撃に対して脆弱であることが確認され、CVE-2021-4104が発行されました。重要なポイントは、バージョン2.xほど簡単には 悪用できないということです。悪用するには、JMSAppenderを有効化して、TopicBindingName または TopicConnectionFactoryBindingName の構成を使用して設定し、JMSAppenderがJNDIリクエストを実行させなければなりません。これはデフォルトの構成ではありません。
****
対処法
****
2021年12月14日更新の追加情報
Apacheは、Log4jの新バージョン、バージョン2.16.0をリリースしました。このアップデートで、JDNI 機能をデフォルトで無効化しています。ユーザーが明示的にJNDI機能をオンにする必要があり、message lookupのサポートは完全に削除されます。Log4Shell 脆弱性の緩和策として、優先的にこの方法を検討することをおすすめします。
****
この脆弱性を緩和する対策法について多くの情報がありますが、最も重要で完全な緩和策は、log4jを公開されている安定したバージョン 2.15.0にアップデートすることです。一部では、Javaバージョン6u211、7u201、8u191、11.0.1は、この攻撃に対して脆弱性はないと報告されていますが、この情報が正しいとは言えません。これらのバージョンでは、LDAP攻撃のベクトルに対する耐性がありますが、しかし、脆弱性を完全に緩和するわけではないので、攻撃される可能性があります。Javaアプリケーションが脆弱性のあるバージョンであるかはこちらのリンクのハッシュに基づく、影響を受けるJARファイルのリストで判断できます。
McAfee Enterprise ATR(Advanced Threat Research)チームは、この脆弱性が周知されてから注意深く調査を続けています。当初、公開されているPoCを使って悪用されやすさを調べていましたが、結果としてわたしたちは再現性を確認しました。公開されている Docker containerを使用して、LDAPとRMIを使うクライアント/サーバーアーキテクチャとmarshalsecでlog4jバージョン2.14.1が悪用されました。この問題の再現方法については、ショートビデオをご覧ください。
引き続きDNSのようなサービスを使用したエクスプロイトのバリエーションをテストする予定ですので、後日その結果をお知らせできるかもしれません。
McAfee Enterpriseは、NSP(Network Security Platform)をご利用のお客様のために、ネットワークシグネチャKB95088を公開しています。このシグネチャは、LDAPでCVE-2021-44228の脆弱性を悪用する試みを検知します。このシグネチャは、他のプロトコルやサービスにも拡張される可能性があり、適用範囲を補うため追加のシグネチャがリリースされる可能性があります。
この脆弱性についての詳細は、Security Bulletinでご確認ください。
この問題に関するリソース
問題に関するリソースは、追加・更新され続けています。PoCやツールのリストは、こちらからご覧いただけます:
https://github.com/tangxiaofeng7/apache-log4j-poc
https://github.com/christophetd/log4shell-vulnerable-app
https://gist.github.com/Neo23x0/e4c8b03ff8cdf1fa63b7d15db6e3860b
https://www.greynoise.io/viz/query/?gnql=tags%3A%22Apache%20Log4j%20RCE%20Attempt%22
https://rules.emergingthreatspro.com/open/
https://github.com/mubix/CVE-2021-44228-Log4Shell-Hashes
※本ページの内容は2021年12月10日(US時間)更新の以下のMcAfee Enterprise Blogの内容です。
原文: Log4Shell Vulnerability is the Coal in our Stocking for 2021
著者: Steve Povolny and Douglas McKee