はじめに
今のプロジェクトではJavaでSpringbootのアプリケーションを利用している。
当然Log4jの脆弱性は問題ないのか調査することになった。
結論
変なことをしていなければ、今回の脆弱性は影響なし。
調査内容
前提
今回の脆弱性は、log4j-coreの2.15.0以下を利用している場合にlookup機能が悪用されて任意コードが実行される。
Apache Log4jの任意のコード実行の脆弱性(CVE-2021-44228)に関する注意喚起
Springboot公式の見解
Springbootのデフォルトのロギングシステムをlog4j2にスイッチしていない限り問題ないとのこと。
そもそもSpringbootは、SLF4Jを介してJava Util Logging/Log4j2/Logbackのいずれかでログを出力しているが、デフォルトではLogbackが選択されている。なので、特別にLog4j2を選択していない限りは、影響を受けない。
log4j-apiとlog4j-to-slf4jというライブラリがspring-boot-starter-loggingの依存関係として含まれるが、log4j-coreを利用していてかつ、ログにユーザの入力をそのまま出力している場合に限る。
Log4J2 Vulnerability and Spring Boot
今のプロジェクトでは・・・
依存関係を一覧にして確認したが、たしかにlog4j-apiとlog4j-to-slf4jのみに依存していた。なので今回の脆弱性の影響はなかった。
ただし、Springbootも今後の対応を述べているが、logbackもlog4jもアップデートされたので、わざわざ脆弱性を含むOSSを使う必要がなければlogback(1.2.8)とlog4j(2.16.0)に更新するのが無難だろう。
所感
脆弱性調査はCVEが公開されるたびにチェックしているが、久しぶりにデカいのが来た。という感じ。
前回デカいのが来たな・・・と思ったのは、やっぱりFragAttacks。あれはデカかった。