×

fix_log4j2 log4j2漏洞缓解工具

消耗积分:0 | 格式:zip | 大小:0.04 MB | 2022-05-06

刘涛

分享资料个

授权协议 未知
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
所属分类 管理和监控安全相关

软件简介

fix_log4j2 提供一种暂时不需要修复镜像,直接批量修改线上容器运行状态的方法,来临时缓解 log4j2 漏洞影响,大体操作思路是:

  1. 通过镜像扫描工具,筛选出漏洞影响镜像;
  2. 通过漏洞镜像,自动化定位受影响服务,提取运行参数和环境变量等信息;
  3. 批量服务部署的配置文件,自动化重启相关服务;

本工具使用

命令行方式

获取

  • 下载源码到本地,需要golang(>=1.5)环境,进入目录执行make build,可执行程序会被编译到./bundles/目录下
  • COS上下载已经编译好的可执行文件

配置

配置示例

main:
  # kubeConfig 可选,可使用环境变量 KUBECONFIG 来指定
  kubeConfig: /root/.kube/config

clue: # 需要处理的镜像列表 images: - docker.io/vulfocus/log4j2-rce-2021-12-09:latest - docker.io/library/busybox@sha256:b5cfd4befc119a590ca1a81d6bb0fa1fb19f1fbebd0397f25fae164abe1e8a6a - ccr.ccs.tencentyun.com/yunding/tcss-agent:1.8.2109.20

现阶段,镜像名称需要填入完整的名称,比如使用了来自Docker Hubvulfocus/log4j2-rce-2021-12-09镜像,需要完整的填入省略的HostTag部分,即docker.io/vulfocus/log4j2-rce-2021-12-09:latest

执行

./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

工具执行逻辑

  1. 对k8s集群中的所有Pod进行遍历,发现引用了包含风险镜像的容器,列出待处理的Pod列表
  2. 根据待处理的Pod列表获取最上层调度资源,如Deployment,DaemonSet
  3. Deployment,DaemonSet等资源执行修复,即检查Pod.Spec 中的CommandArgs,如果是java启动的,则加入-Dlog4j2.formatMsgNoLookups=true参数
  4. 执行更新

风险和注意事项

  1. 当前版本暂时只支持对>=2.10+的版本,更低版本暂不支持
  2. 更新工作负载有失败的可能,需要关注工作负载的状态、注意对业务的影响

TODO

  • 支持较老版本的修复策略
  • 支持其它修复策略
  • 环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS=true
  • 支持更新后的检查,如果失败可自动回滚
  • 支持镜像更新
  • 支持自动检查,而不用指定具体镜像列表
 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !