Apache Log4jの任意のコード実行の脆弱性(Log4Shell: CVE-2021-44228, CVE-2021-4104, CVE-2021-45046, CVE-2021-42550(logback), CVE-2021-45105, CVE-2021-44832 )

こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。

12/10/2021にApache Log4jの任意のコード実行の脆弱性(Log4Shell: CVE-2021-44228)が公開されました。PoCも公開されており、攻撃も観測されています。非常に影響範囲の大きい脆弱性となりますので、こちらで取り上げます。

log4j 1.xでもJNDIを使用する設定にする等の条件を満たせば影響を受ける可能性があるというコメントが出ています。

Red Hatがlog4j 1.x(JMSAppenderを使用した設定になっている場合)のCVE: CVE-2021-4104を出しました。

CVE-2021-44228では設定がデフォルト以外の場合がカバーされていませんでしたので、新たにCVE-2021-45046が発行されました。log4jも2.16.0がリリースされています。

Deserialization of Untrusted Data in logback で説明されていますが、log4j v1の移行先としても案内されていたlogbackですが、logback 1.2.7 以前のバージョンでは設定ファイルを何らかの形で変更できるユーザに限りLDAPを使った攻撃が成功するということで、CVE-2021-42550が発行されました。logbackに移行する場合には、1.2.8以上のバージョンを使用しましょう。

新たにCVE-2021-45105 (無限ループによるDoSの脆弱性)が発行されました。log4jの2.0beta-9から2.16.0までが対象です。それに伴って2.17.0がリリースされています。

新たにCVE-2021-44832 (リモートコード実行の脆弱性)が発行されました。log4jの2.0-alpha7から2.17.0までが対象です。それに伴って2.17.1がリリースされています。

【2021/12/12 12:00追記】AWS/Red Hat/Oracle/F5/NetAppからの情報を追記しました。

【2021/12/12 19:00追記】Microsoft/Googleからの情報を追記しました。

【2021/12/13 05:30追記】CISA/Cisco/Dell/VMWare/IBMからの情報を追記しました。

【2021/12/13 06:00追記】各セキュリティベンダーからの情報を追記しました。

【2021/12/13 17:20追記】Elastic Search, MovableTypeからの情報を追記しました。

【2021/12/13 21:50追記】log4j 1.x+JMSAppenderの脆弱性(CVE-2021-4104)の情報を追記しました。

【2021/12/14 10:00追記】影響を受ける製品(自分用纏め)の情報を追記しました。

【2021/12/14 10:15追記】OWASP ZAP/GVMの情報を追記しました。

【2021/12/15 03:25追記】CVE-2021-45046の情報を追記しました。

【2021/12/19 10:30追記】CVE-2021-42550(logbackの脆弱性), CVE-2021-45105(無限ループのDoS脆弱性)の情報を追記しました。

【2021/12/24 07:50追記】Struts2, Zabbix, NVIDIAの情報を追記しました。

【2021/12/26 13:00追記】SIOS Security ChannelでのPoC動画を追記しました。

【2021/12/29 19:00追記】CVE-2021-44832の情報を追記しました。




Priority

CVE番号 影響するバージョン 一次情報源 Priority CVSS Score / CVSS Vector
CVE-2021-44228

Apache Log4j2 JNDI features do not protect against attacker controlled LDAP and other JNDI related endpoints.

Vendor: 10.0

CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

CVE-2021-4104

Restrict LDAP access via JNDI #608

Red Hat: 8.1

Red Hat: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

CVE-2021-45046

CVE-2021-45046: Apache Log4j2 Thread Context Message Pattern and Context Lookup Pattern vulnerable to a denial of service attack

Vendor: 3.7

CVSS: 3.0 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L

CVE-2021-42550

Deserialization of Untrusted Data in logback

Vendor: 6.6 Medium

CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H

CVE-2021-45105

Apache Log4j Security Vulnerabilities

CVE-2021-45105 Apache Log4j Vulnerability in NetApp Products

Vendor: 7.5 High

CVSS: 3.0 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

CVE-2021-44832

Apache Log4j Security Vulnerabilities

Vendor: 6.6 Moderate

CVSS: 3.0 AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H

概要

Apache log4j ライブラリにリモートコード実行の脆弱性が出ました。既にPoCもGitHub上に出ており、悪用は極めて容易で、一般ユーザーに身近なところでは「Minecraft」にも影響が出ているとのことで、サーバーを一時閉鎖したり、一斉アップデートする騒ぎにまで発展しています。

2021/12/10時点での詳しい情報はこちらのサイト(英語)にまとまっています。 また、日本語ではこちらのサイトこちらのサイトにまとまっています。

JPCERTの方でも特設サイトを設けて情報を逐次更新しています

CVE-2021-44228では設定がデフォルト以外の場合がカバーされていませんでしたので、新たにCVE-2021-45046が発行されました。log4jも2.16.0がリリースされています。

Deserialization of Untrusted Data in logback で説明されていますが、log4j v1の移行先としても案内されていたlogbackですが、logback 1.2.7 以前のバージョンでは設定ファイルを何らかの形で変更できるユーザに限りLDAPを使った攻撃が成功するということで、CVE-2021-45046が発行されました。logbackに移行する場合には、1.2.8以上のバージョンを使用しましょう。

2.0.0-beta9から2.16.0までのlog4jでlookupの自己再帰による無限ループが発生し、DoSを引き起こす可能性があることがわかりました。これに伴い、log4j-2.17.0がリリースされていますので、log4j-2.17.0以上に更新するようにしましょう。

以降、続報が入り次第、本ドキュメントは更新していきます。

攻撃の概要

攻撃の概要は下図のようなものです

攻撃のPoCの動画も公開されています。

SIOS Security Channel : Log4Shell (CVE-2021-44228) PoC

https://www.youtube.com/watch?v=oz6OJgTd9Ms&t=1s

ニュース記事・リンク等

SWベンダー・サービス等

セキュリティベンダーからの情報

影響を受ける可能性がある製品(自分用纏め)

本攻撃の悪用等

Paloalto Networkによると、本脆弱性を突いた攻撃が観測されているそうです。脅威に関する情報Apache Log4jに新たな脆弱性(CVE-2021-44228) 実際の悪用も確認

攻撃されるとリンク先にもあるようなログが残るようです。

修正方法

各ディストリビューションの情報を確認してください。

脆弱性概要

Apache Log4jにリモートコード実行の脆弱性が見つかりました。Apache Log4jはJMDIをサポートしていますが、JMDI Lookup機能が悪用されることにより、悪意のある第三者によって細工された文字列からjava classファイルを読み込んで実行することで、任意のコードが実行される可能性があります。


対処方法

Apache Log4jを最新のバージョン(2.16.0以上2.15.0以上)に更新して下さい。ダウンロードはこちらからになります。ディストリビューションでも案内が出ていると思いますので、そちらの支持に従って下さい。

(rc版が出ていましたが、正式バージョンがリリースされました。)

緩和策

以下の緩和策ではCVE-2021-45046の場合など完全に守れないシチュエーションがあることが判明しています。緩和策を用いるよりも、なるべくLog4jのバージョンを2.17.1以上にアップデートしましょう。
  1. Apache log4jのバージョンが2.10以上の場合にはjvmで

    -Dlog4j2.formatMsgNoLookups=true

    にする事で回避が出来る。

  2. 2.7 <= log4j < 2.10 の場合にはこちらにあるように、ログの出力パターンを%mから%m{nolookups}に設定することで回避することが出来る。

  3. 2.0-beta9以上では、Log4jからorg.apache.logging.log4j.core.lookup.JndiLookupを空にする(具体的にはにある通り、Log4jのjarから下記のコマンドで削除する。

    
    zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
    

主なディストリビューションの対応方法

詳細は、各ディストリビューションの提供元にご確認ください


日々のメモを更新しています。

セキュリティ関係ニュースを更新しています。個別で情報出せるようになる前の簡単な情報・リンクなんかも載せていきます。

前へ

ModSecurityの脆弱性情報(CVE-2021-42717)

次へ

OpenSSLの脆弱性情報(Moderate: CVE-2021-4044)と新バージョン(OpenSSL 3.0.1)