log4shellについて
問題
log4jの対応を行う上での最大の問題は、膨大な依存の中から完全に取り除く必要がある点である
直接的にlog4jを利用している場合は、更新 or logbackへの移行 を行えばよい
しかし、外部ライブラリやフレームワークが利用している場合は、そもそも依存の把握自体が困難になる
対処
方法1 gradale dependencies
gradleのdependencies
タスクを利用する
現時点の全ての依存のリストを出力することができる
ただ、単純な依存ツリーを吐き出しているだけなので、ある程度の規模のアプリケーションでは数万行になる
そのため、特定のバージョンのライブラリを取り除く目的にはあまり適していない
方法2 OWASP dependency check
OWASP(Open Web Application Security Project)のdependency check pluginを利用する
セキュリティに特化していて、CVEなどのデータベースを基に、脆弱な依存を集計してリストアップできる
そのため、どのライブラリが依存しているのか把握しやすい
また、リストアップされない = 脆弱な依存は存在しない = 対応が完了 というハンドリングの判断に利用できる
Gradle projectであれば、以下の1コマンドで実行できる
./gradlew dependencyCheckAnalyze
結論
log4shellの対応にはOWASPのdependency check pluginを使用すべき