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

修复Node:22-alpine3.19镜像CVE-2023-42366漏洞咨询

问题详情
  • 基础镜像:node:22-alpine3.19
  • 检测到存在CVE-2023-42366漏洞的包:
    • 3.19:ssl_client 1.36.1-r15,需升级至1.36.1-r25
    • 3.19:busybox 1.36.1-r15,需升级至1.36.1-r25
    • 3.19:busybox-binsh 1.36.1-r15,需升级至1.36.1-r25
  • 已知该漏洞已在alpine3.19.1版本中修复,但在Dockerfile的构建阶段和生产阶段执行apk update/upgrade后,生成的镜像仍存在该漏洞,需解决漏洞修补或升级至alpine3.19.1的问题。

当前使用的Dockerfile内容:

FROM node:${RUNTIME_VERSION}-alpine${DISTRO_VERSION} AS builder
ARG FUNCTION_DIR
WORKDIR ${FUNCTION_DIR}
RUN apk add --no-cache \
    libstdc++ \
    libcurl \
    python3
RUN apk update  #Tried update/upgrade in build stage
RUN apk upgrade --no-cache
<Install my dependencies>

#  Production Stage
FROM node:${RUNTIME_VERSION}-alpine${DISTRO_VERSION}
RUN apk update    #Tried update/upgrade in production stage
RUN apk upgrade --no-cache
ARG FUNCTION_DIR
WORKDIR ${FUNCTION_DIR}
COPY --from=builder ${FUNCTION_DIR}/node_modules ${FUNCTION_DIR}/node_modules
解决方案

方法1:直接使用alpine3.19.1版本的Node镜像

这是最直接的解决方案,官方Node镜像已提供基于alpine3.19.1的版本,该版本内置了修复CVE-2023-42366漏洞的包。

修改方式:

  • 构建时通过参数传递:--build-arg DISTRO_VERSION=3.19.1
  • 或者直接写死镜像标签:FROM node:22-alpine3.19.1

修改后的Dockerfile示例:

FROM node:${RUNTIME_VERSION}-alpine3.19.1 AS builder
ARG FUNCTION_DIR
WORKDIR ${FUNCTION_DIR}
RUN apk add --no-cache \
    libstdc++ \
    libcurl \
    python3
<Install my dependencies>

#  Production Stage
FROM node:${RUNTIME_VERSION}-alpine3.19.1
ARG FUNCTION_DIR
WORKDIR ${FUNCTION_DIR}
COPY --from=builder ${FUNCTION_DIR}/node_modules ${FUNCTION_DIR}/node_modules

方法2:强制升级指定漏洞包

如果无法直接切换镜像版本,可在apk upgrade时明确指定需要升级的三个包,确保它们被更新到修复版本。

将原有的apk upgrade --no-cache替换为:

RUN apk update && apk upgrade --no-cache busybox ssl_client busybox-binsh

修改后的生产阶段示例:

#  Production Stage
FROM node:${RUNTIME_VERSION}-alpine${DISTRO_VERSION}
RUN apk update && apk upgrade --no-cache busybox ssl_client busybox-binsh
ARG FUNCTION_DIR
WORKDIR ${FUNCTION_DIR}
COPY --from=builder ${FUNCTION_DIR}/node_modules ${FUNCTION_DIR}/node_modules

说明

ssl_client和busybox-binsh属于busybox的子组件,升级busybox通常会同步更新这两个包,但明确指定可避免apk依赖逻辑导致的未升级问题。

方法3:检查并更换Alpine镜像源

若使用的镜像源未同步最新包版本,会导致apk update后无法获取修复版本。可切换到Alpine官方源:

在执行apk update前添加源配置命令:

RUN echo "https://dl-cdn.alpinelinux.org/alpine/v3.19/main" > /etc/apk/repositories && \
    echo "https://dl-cdn.alpinelinux.org/alpine/v3.19/community" >> /etc/apk/repositories && \
    apk update && apk upgrade --no-cache

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:53:15