プログラミング

Log4j2の脆弱性に対応する方法【Log4j2のバージョンアップ】

タイトル

世に広く使われているLog4j2に脆弱性が見つかり騒ぎになっています。

この脆弱性を放置しおくと、遠隔の第三者が細工したデータを送る事で、任意のコマンドを実行される可能性があります。

該当する場合は、必ず対応しましょう。

Gradleを利用している場合の調査方法と対応方法を共有致します。

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が利用されることが確認できました。

以上で対応完了です。

ありがとうございました!

COMMENT

メールアドレスが公開されることはありません。

CAPTCHA