Springbootアプリケーションにおけるlog4jの脆弱性

f:id:akagoma:20211215232335p:plain

はじめに

今のプロジェクトでは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。あれはデカかった。

Copyright (C) 2021 akagoma. All Rights Reserved.