Log4Shellの脆弱性 – CVE-2021-44228


概要

 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はあらゆる分野のアプリケーションに広く利用されており、これは氷山の一角に過ぎません。


脆弱性について

この脆弱性は、JNDIJava 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は、NSPNetwork 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