如何修复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替换漏洞依赖库:
- 从Maven中央仓库下载snakeyaml的安全版本(建议使用2.0.1及以上,该版本彻底修复CVE-2022-1471),保存到本地工作目录。
- 创建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/
- 执行构建命令生成新镜像:
docker build -t strimzi-kafka-fixed:0.32.0-kafka-3.3.1 .
- 用Trivy重新扫描验证漏洞是否消除:
trivy image strimzi-kafka-fixed:0.32.0-kafka-3.3.1
3. 运行时临时替换(应急方案)
如果无法重新构建镜像,可在容器启动时挂载替换漏洞文件:
- 从Maven中央仓库下载安全版本的snakeyaml jar包到本地。
- 创建
remove-vuln.sh脚本,内容如下:
#!/bin/sh rm /opt/kafka/libs/snakeyaml-1.33.jar
- 启动容器时挂载文件并执行替换:
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
相关产品推荐
相关产品推荐

