本项目展示了如何创建一个 CNCF 构建包 作为 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
当使用 kpack 在 Kubernetes 集群内构建容器镜像时,你需要执行以下步骤:
ghcr.io/alexandreroman/cve-2021-44228-workaround-buildpack 添加到你的 ClusterStoreClusterBuilder 或 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 漏洞的变通方案。
尽情享受!
欢迎贡献代码!
请随时提出 issues 或发送 PR。
版权所有 © 2021 VMware, Inc. 或其附属机构。
本项目使用 Apache 软件许可证 2.0 版 进行许可。