
CVE-2021-44228(Log4j RCEエクスプロイト)に対する回避策を提供するBuildpack
このプロジェクトは、CNCF buildpack を使用して次の脆弱性に対する回避策を作成する方法を示します。 CVE-2021-44228 は、 リモートコード実行につながる Log4j のエクスプロイトです。
このビルドパックを使用することで、すべての Java アプリケーションに対してこのエクスプロイトの回避策を適用できます。
回避策は単純に、JVM システムプロパティ log4j2.formatMsgNoLookups の値を true に設定して、ログフォーマットを無効にします。
長期的な修正としては、アプリケーションを Log4j 2.15.0+ に更新する必要があります。
このプロジェクトは本番環境では使用しないでください。これは教育目的のみです!
Java アプリケーションをビルドするときにこのビルドパックを含めてください:
pack build myrepo/myapp -b ghcr.io/alexandreroman/cve-2021-44228-workaround-buildpack -b paketo-buildpacks/java
このリポジトリには、Log4j (RCEエクスプロイトを含む) を利用したシンプルな Java アプリケーションが含まれています。 このアプリケーションをビルドパックでビルドしてください:
pack build myrepo/myapp -p app -b ghcr.io/alexandreroman/cve-2021-44228-workaround-buildpack -b paketo-buildpacks/java
これでアプリケーションを実行できます:
docker run --rm -p 8080:8080 myrepo/myapp
...
2021-12-10 18:58:03.234 INFO 77965 --- [ main] f.a.c.Application : Is Log4j2 workaround for CVE-2021-44228 enabled? true
Kubernetes クラスタ内でコンテナイメージをビルドするために kpack を使用する場合は、以下の手順を適用する必要があります。:
ghcr.io/alexandreroman/cve-2021-44228-workaround-buildpack を ClusterStore に追加します。ClusterBuilder または Builder で使用します。VMware Tanzu Build Service を使用する場合、以下のコマンドを使用してビルドパックを ClusterStore に追加できます。:
kp clusterstore add default -b ghcr.io/alexandreroman/cve-2021-44228-workaround-buildpack
次に、Tanzu Build Service を使用してビルドパックをビルダーに追加します:
kp clusterbuilder patch mybuilder -b tanzu-buildpacks/java -b alexandreroman/cve-2021-44228-workaround-buildpack
ビルダーを参照するすべてのコンテナイメージは、Log4j RCE エクスプロイトの回避策を含めて再ビルドされます。
お楽しみください!
コントリビューションは常に歓迎します!
お気軽に Issue を開いたり PR を送信してください。
Copyright © 2021 VMware, Inc. またはその関連会社.
このプロジェクトは Apache Software License version 2.0 の下でライセンスされています。