我的Dockerfile很简单,代码如下。这是一个Angular App。一旦我将代码合并到我的主分支CodePipeline接管,CodeBuild将构建镜像并推送到ECR,CodeDeploy将使用该镜像来部署ECS Fargate任务。一切正常。但此图像有一个关键漏洞。CVE-2021-22945 - curlnode14: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时引入。任何帮助补救这是非常感谢。
2条答案
按热度按时间5kgi1eie1#
我看到libcurl被
apk add git
拉入(点击“depends”):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 add
之前运行apk update
,看看它是否拉入正确的版本?wqsoz72f2#
如果是预安装的软件和库,则
apk update
命令可能有效。理想情况下,你会在一个更好的控制位,并告诉apk安装一个特定的更新,通过说,例如.字符串
不用说,你可能会陷入依赖地狱,但根据我的经验,这种情况很少发生。
此外,如果你是安全意识,我建议也不只是寻找安全漏洞wrt。过时的图像,但也wrt。配置。我看到一个Nginx正在使用那里,并按照例如。CIS benchmarks也是推荐的。有一些开源工具可以帮助你(例如CoGuard)