如何修复Docker镜像中的关键漏洞?

3qpi33ja  于 2023-08-03  发布在  Docker
关注(0)|答案(2)|浏览(186)

我的Dockerfile很简单,代码如下。这是一个Angular App。一旦我将代码合并到我的主分支CodePipeline接管,CodeBuild将构建镜像并推送到ECR,CodeDeploy将使用该镜像来部署ECS Fargate任务。一切正常。但此图像有一个关键漏洞。CVE-2021-22945 - curl
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时引入。任何帮助补救这是非常感谢。

5kgi1eie

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,看看它是否拉入正确的版本?

wqsoz72f

wqsoz72f2#

如果是预安装的软件和库,则apk update命令可能有效。理想情况下,你会在一个更好的控制位,并告诉apk安装一个特定的更新,通过说,例如.

apk add "your_package_name>=VERSION-SUFFIX"

字符串
不用说,你可能会陷入依赖地狱,但根据我的经验,这种情况很少发生。
此外,如果你是安全意识,我建议也不只是寻找安全漏洞wrt。过时的图像,但也wrt。配置。我看到一个Nginx正在使用那里,并按照例如。CIS benchmarks也是推荐的。有一些开源工具可以帮助你(例如CoGuard

相关问题