You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复quay.io/strimzi/kafka镜像中的CVE-2022-1471漏洞?

修复quay.io/strimzi/kafka:0.32.0-kafka-3.3.1镜像中的SnakeYaml关键漏洞

漏洞情况说明

使用Trivy扫描镜像quay.io/strimzi/kafka:0.32.0-kafka-3.3.1时,检测到以下关键漏洞:

opt/kafka/libs/snakeyaml-1.33.jar
=================================
Total: 1 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 1)

+--------------------+------------------+----------+-------------------+---------------+--------------------------------------+
|      LIBRARY       | VULNERABILITY ID | SEVERITY | INSTALLED VERSION | FIXED VERSION |                TITLE                 |
+--------------------+------------------+----------+-------------------+---------------+--------------------------------------+
| org.yaml:snakeyaml | CVE-2022-1471    | CRITICAL |              1.33 |               | SnakeYaml: Constructor               |
|                    |                  |          |                   |               | Deserialization                      |
|                    |                  |          |                   |               | Remote Code Execution                |
+--------------------+------------------+----------+-------------------+---------------+--------------------------------------+

该漏洞为构造函数反序列化远程代码执行漏洞,风险等级为CRITICAL。

修复方案

1. 升级到官方修复后的镜像版本

Strimzi后续版本已修复该漏洞,直接替换为更高版本的镜像即可,例如:

  • quay.io/strimzi/kafka:0.33.0-kafka-3.3.1 及以上同Kafka版本的Strimzi镜像
  • 或选择对应Kafka版本的最新Strimzi稳定镜像,确保依赖库已更新至安全版本。

2. 手动构建修复后的镜像

若无法直接升级,可通过Dockerfile替换漏洞依赖库:

  1. 从Maven中央仓库下载snakeyaml的安全版本(建议使用2.0.1及以上,该版本彻底修复CVE-2022-1471),保存到本地工作目录。
  2. 创建Dockerfile:
FROM quay.io/strimzi/kafka:0.32.0-kafka-3.3.1
# 删除存在漏洞的snakeyaml-1.33.jar
RUN rm /opt/kafka/libs/snakeyaml-1.33.jar
# 复制本地安全版本jar包到镜像指定目录
COPY snakeyaml-2.0.1.jar /opt/kafka/libs/
  1. 执行构建命令生成新镜像:
docker build -t strimzi-kafka-fixed:0.32.0-kafka-3.3.1 .
  1. 用Trivy重新扫描验证漏洞是否消除:
trivy image strimzi-kafka-fixed:0.32.0-kafka-3.3.1

3. 运行时临时替换(应急方案)

如果无法重新构建镜像,可在容器启动时挂载替换漏洞文件:

  1. 从Maven中央仓库下载安全版本的snakeyaml jar包到本地。
  2. 创建remove-vuln.sh脚本,内容如下:
#!/bin/sh
rm /opt/kafka/libs/snakeyaml-1.33.jar
  1. 启动容器时挂载文件并执行替换:
docker run -d \
  -v $(pwd)/snakeyaml-2.0.1.jar:/opt/kafka/libs/snakeyaml-2.0.1.jar \
  -v $(pwd)/remove-vuln.sh:/opt/kafka/remove-vuln.sh \
  quay.io/strimzi/kafka:0.32.0-kafka-3.3.1 \
  sh -c "/opt/kafka/remove-vuln.sh && /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties"

注意:此方案仅用于临时应急,长期建议使用前两种方案。

内容的提问来源于stack exchange,提问作者Latha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:50:31