12 月 9 日晚,Apache Log4j2 反序列化远程代码执行漏洞(CVE-2021-44228)细节已被公开,受影响版本为 Apache Log4j 2.x< 2.15.0-rc2。
Apache Log4j-2 中存在 JNDI 注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。
当前官方已发布 2.15.0、2.15.1-rc1 等版本,推荐用户可升级至 log4j-core-2.15.0 版本。
或采取以下加固缓解措施:
-
添加 JVM 启动参数-Dlog4j2.formatMsgNoLookups=true(>=2.10+版本,或先升级至2.10+);
-
在应用 classpath 下添加 log4j2.component.properties 配置文件,文件内容为:log4j2.formatMsgNoLookups=true。
根据腾讯云容器安全服务 TCSS 监测,有大量的容器镜像存在该漏洞风险。对于容器环境下该漏洞的应急处置,有着更大的难度。
官方已发布修复版本 log4j-2.15.0、2.15.1-rc1等版本,将相关受影响镜像升级到修复版本,然后升级线上服务,相对来说是最安全的方案。
但是升级版本,除了对业务稳定性带来的影响是未知的之外,对于像log4j2这种组件,其使用非常广泛,受影响的镜像非常多,逐个修复的工作量也会非常大,很难在短时间内快速完成。
除了升级版本,也会有像修改启动参数、配置文件等临时缓解措施。但是对于容器环境来说,这些配置一般都是直接打包在镜像中,同样需要通过逐个修改镜像,再重新发布服务来完成。
因此,对容器环境下如何快速进行漏洞缓解处置,我们提供了一种暂时不需要修复镜像,直接批量修改线上容器运行状态的方法,来临时缓解漏洞影响。大体操作思路是:
-
通过镜像扫描工具,筛选出漏洞影响镜像;
-
通过漏洞镜像,自动化定位受影响服务,提取运行参数等信息;
-
批量修改服务部署的配置文件,自动化重启相关服务。
这种针对线上容器服务的批量处置措施,云鼎实验室开发并开源了一键处置工具(点此下载),用户可通过以下任一种方式直接快速修复:
-
命令行:
./bundles/fix_log4j -c ./config.yaml
-
Kubernetes Job:
kubectl apply -f https://tcss-compliance-1258344699.cos.ap-guangzhou.myqcloud.com/tools/fix_log4j2/job.yaml
值得注意的是,上述处置方式只是暂时的缓解措施,用户还是需要有条不紊的逐步升级镜像版本,实现持久的加固。同时,上述操作会重启服务,用户需评估相应的重启风险。
当前漏洞情况还在不断演进,本 工具 也将持续的进行关注和更新。
猜你喜欢: