我的 Dockerfile 非常简单,代码如下。这是一个角度应用程序。将代码合并到主分支 CodePipeline 接管后,CodeBuild 将构建映像并推送到 ECR,CodeDeploy 将使用该映像来部署 ECS Fargate 任务。一切正常。但该图像有 1 个严重漏洞。 CVE-2021-22945 - 卷曲
node14:14182alpine312
基本上是由
FROM node:14.18.2-alpine3.12
,
nginx:latest
是由 FROM nginx:latest
构建的。
FROM <awsaccountid>.dkr.ecr.<region>.amazonaws.com/node14:14182alpine312 as builder
WORKDIR /app
COPY ./hello-world-web/ /app/
RUN apk add --no-cache git
RUN npm install
RUN npm run build
FROM <awsaccountid>.dkr.ecr.<region>.amazonaws.com/nginx:latest
COPY --from=builder /app/dist/hello-world-web /usr/share/nginx/html
COPY --from=builder /app/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
扫描 ECR Repo 的工具提到该漏洞位于第 0 层。我可以在构建可修复此问题的映像时运行任何脚本吗?单独的节点和 nginx 映像不存在此严重漏洞。似乎可以在运行 npm install 时引入。非常感谢任何修复此问题的帮助。
我看到 libcurl 被
apk add git
拉入(单击“取决于”):https://pkgs.alpinelinux.org/package/edge/main/x86/git
但在 alpine 3.12 上,libcurl 版本为 7.79.1,不受 CVE 影响:https://nvd.nist.gov/vuln/detail/CVE-2021-22945
也许在
apk update
之前运行 apk add
看看它是否引入了正确的版本?
如果是预装的软件和库,则可以使用
apk update
命令。理想情况下,您可以更好地控制,并告诉 apk 安装特定更新,例如:
apk add "your_package_name>=VERSION-SUFFIX"
不用说,你可能会遇到依赖地狱,但根据我的经验,这种情况很少发生。
此外,如果您注重安全,我建议您不要仅仅寻找安全漏洞。过时的图像,但也有。配置。我看到那里正在使用 Nginx,并遵循例如还建议使用 CIS 基准测试。