TL;DR
- あえて spring-boot-starter-log4j2 を入れてなければ Logback なので関係ありません
- 入れてるなら build.gradle の ext に以下を書き足してください
ext
{
set('log4j2.version', '2.17.0')
}
- 気づいた?そう 2.17.0 になってるんです。すでに 2.15.0 にした人も 2.17.0 にする必要があるそうなので、皆さん 2.17.0 にしましょう。
Maven 使ってる人へ
この記事は gradle 使ってる人向けなので Maven 向けの情報は記載してないです
自分が対象なのかを調べる
プロジェクトのルートで下記のコマンドを実行してみてください
$ gradle dependencies | grep log4j
org.apache.logging.log4j:log4j-core:2.13.3
とか 2.15.0 よりも下のバージョンが出てきてしまったあなたは対象です。TL;DR を読んで build.gradle に加筆してください。
加筆し終わった後に再確認して、org.apache.logging.log4j:log4j-core:2.13.3 -> 2.15.0
とかになってれば大丈夫です。
rc2 どこ行った?
Maven Central Repository から引いているなら 2.15.0 はもう rc2 になっています。
確証が欲しければ pom をみて tag
をページ内検索してください。
むしろ、2.15.0-rc2
とか書いても、そんなものは存在しません。
うちエンタープライズだし外部アクセスは全部API経由なんだけど、そんなヤバいんですか?
やばいです。踏み台とか関係ないです。log が出る不正リクエストで任意コードが実行されます。情報抜き取りまでいかないまでも破壊はそう難しくないです。
会社で伝わりやすそうな数値基準でヤバさを伝えるなら Red Hat のサイトの CVE-2021-44228 をみてください。10.0 Max のスコアで 9.8 です。
Spring の対応待ちじゃダメなの?
log4j2.formatMsgNoLookups じゃだめなの?
そのオプションは 2.10 以降に追加されたものなので、それより前のバージョンだと効きません。