基于openjdk:8-jdk-alpine镜像安装jq时CVE-2016-4074漏洞修复咨询
问题根因
你指定高于1.6-r0的jq版本安装失败,是因为Alpine 3.9官方源中jq的最高内置版本就是1.6-r0,该版本未修补CVE-2016-4074漏洞,可通过以下三种方案解决:
方案1:升级基础镜像Alpine版本
Alpine 3.10及以上版本的官方源已提供修复该漏洞的jq 1.6-r1及更高版本,直接更换更高版本的openjdk8 alpine基础镜像即可,修改后的Dockerfile示例:
# 选择Alpine 3.10及以上版本的openjdk8基础镜像 FROM openjdk:8-jdk-alpine3.10 ENV PACKAGES="jq>=1.6-r1"
该方案操作最简单,无额外编译开销,优先推荐。
方案2:手动编译安装高版本jq
如果不能升级基础镜像版本,可以在现有Alpine 3.9环境下编译安装无漏洞的jq版本,Dockerfile示例:
FROM openjdk:8-jdk-alpine3.9 # 安装编译依赖、编译安装jq 1.7版本后清理冗余文件 RUN apk add --no-cache autoconf automake build-base libtool git \ && git clone --depth 1 --branch jq-1.7 https://github.com/stedolan/jq.git \ && cd jq \ && autoreconf -i \ && ./configure --disable-maintainer-mode \ && make && make install \ && cd .. && rm -rf jq \ && apk del autoconf automake build-base libtool git
安装完成后可执行jq --version验证版本是否符合要求。
方案3:临时添加Alpine Edge源安装高版本jq
不想编译的话也可以临时添加Alpine Edge软件源安装高版本jq,安装完成后删除Edge源避免影响后续其他包的安装,Dockerfile示例:
FROM openjdk:8-jdk-alpine3.9 RUN echo "https://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \ && apk update \ && apk add --no-cache jq>=1.6-r1 \ && sed -i '$d' /etc/apk/repositories \ && rm -rf /var/cache/apk/*
内容的提问来源于stack exchange,提问作者BSG
相关产品推荐
相关产品推荐

