Log4j2の脆弱性について
問題の詳細については、「Log4j」の公式ページとIPA(独立行政法人 情報処理推進機構)のセキュリティアドバイザリをご参照ください。
https://logging.apache.org/log4j/2.x/
https://www.ipa.go.jp/security/ciadr/vul/alert20211213.html
一言で言えば、「攻撃可能な脆弱性が見つかったので、問題を解決したバージョンに更新しましょう!」です。
2.16が対応されたバージョンになりますので、2.16を利用するようにバージョンをあげます。
該当するか依存関係を調査する
まず、自身のプロジェクトが脆弱性の影響を受けるか調査します。
プロジェクトのディレクトリ配下で以下のコマンドを実行します。
$ ./gradlew dependencies | grep -10 --color log4j | grep log4j | sort | uniq
すると以下のように表示されます。
| \--- org.apache.logging.log4j:log4j-api:2.14.1
| +--- org.apache.logging.log4j:log4j-api:2.13.3 -> 2.14.1
| +--- org.apache.logging.log4j:log4j-core:2.13.3 -> 2.14.1
| \--- org.apache.logging.log4j:log4j-core:2.13.3 -> 2.14.1
| | \--- org.apache.logging.log4j:log4j-api:2.14.1
表示された log4j-coreのバージョンが2.15以下の場合は、今回見つかった脆弱性の影響を受けるので対策が必要です。
上記の例であれば、2.14.1が利用されているため対応が必要な状況です。
Log4j2対応済みバージョンを指定する
影響を受けることがわかった場合は以下のように、build.gradleのdependencyManagementに記載します。
dependencyManagementにバージョン指定することで、対応済みLog4j2を利用するように固定できます。
dependencyManagement {
imports {
mavenBom "org.apache.logging.log4j:log4j-bom:2.16.0"
}
}
対応結果を確認する
再度、プロジェクトのディレクトリ配下で以下のコマンドを実行します。
$ ./gradlew dependencies | grep -10 --color log4j | grep log4j | sort | uniq
すると以下のように表示されます。
| \--- org.apache.logging.log4j:log4j-api:2.16.0
| +--- org.apache.logging.log4j:log4j-api:2.13.3 -> 2.16.0
| +--- org.apache.logging.log4j:log4j-core:2.13.3 -> 2.16.0
| \--- org.apache.logging.log4j:log4j-core:2.13.3 -> 2.16.0
| | \--- org.apache.logging.log4j:log4j-api:2.16.0
対応済みである、2.16.0が利用されることが確認できました。
以上で対応完了です。
ありがとうございました!