前两天讲了几个比较重要的 Dockerfile best practice 之後,今天要来说一说怎麽用工具做弱点扫描。因为对 Dockerfile/image 做弱描的工具还满多的,这边就介绍已经被 Docker 加进 CLI 的 Snyk,他可以把你的环境、安装的套件丢到他们资料库去做搜寻,看有哪些潜在的危险
譬如说我手边有几个多年前用 Node.js 写的 express server,Dockerfile 长这样,看到开头的 node:9.2.0
就知道真的是多年前XD,现在都已经快要 Node 16 了(是说我第一次写 Node.js 时还在 0.12.x,当时听过他的人还不多,只能说时间过得真快啊)
FROM node:9.2.0
COPY index.js package.json /app/
WORKDIR /app
RUN npm install && npm cache clean --force
CMD node index.js
先用 docker build . -t app
把 image 建出来後,接着就可以下 docker scan app
对他做扫描。因为我用的是古早古早以前的 node:9.2.0
,所以光 Base Image 的部分扫出来就有 1039 个漏洞,而且其中 99 是属於 critical 等级的,吓都吓死
除了告诉你有多少漏洞之外,他还会把每个漏洞给列出来,并且告诉你那些漏洞分别在哪些版本修掉了,有空也可以点网址进去看那些漏洞的报告,其实都不长
譬如说我们来看看下面 SNYK-UPSTREAM-NODE-72326
这个漏洞的说明,他在 Overview 里面就有提到在 Node 9.2.0 中,如果攻击者在 TLS handshake 期间发送一些重复或预期外的讯息,那就会导致你的 HTTPS server 直接炸掉,因此只要有心很轻易就可以让你的服务挂掉,所以才被归类为 critical 等级的漏洞
而且因为攻击者也会去看这些漏洞报告,所以像这种 critical 等级的大漏洞一但被回报出来了,而你的 server 又迟迟不更新,那下一个遭殃的可能就是你
虽然知道要更新,但我怎麽知道哪些 image 比较安全呢?这点 Snyk 也帮你做好了,就算你懒得去细看那些漏洞,也可以直接滑到最底下看他给你的建议
譬如这边他就建议把 base image 升级到 node:16.7.0
,若是不一定要 full image ,那 node:16-bullseye-slim
也是不错的选项,因为安装的东西更少,所以漏洞自然也更少(Debian bullseye 是今年八月刚发布的版本,可能比较不稳定)
所以平常没事就可以扫一下自己的 image 有没有什麽比较大的漏洞,可以的话直接在 CI 里面做扫描更好,这样就能让自己的服务维持在一个最安全的状态
今天介绍了怎麽用 Docker 的内建工具来做弱点扫描,这部分是很多人都会忽略的,而且服务跑了好几年都好好的没事也不会想去扫描XD。但安全性这种事等到出事就已经太晚了,所以建议还是每个月或每半年定期扫描一下,真的懒的话就丢 CI(反正扫描很快),然後定期上去看一下漏洞数有没有增加就好了~
另外,关於今天的内容有什麽问题欢迎在下方留言,没有的话铁人赛终於到了最後几天了,大家一起冲啊~
>>: Chain of Responsibility 责任链模式
前言 这是之前 Huli 大在前端社团分享的 国外 XSS 挑战。 最近比较有时间来分享,当时 「从...
Youtube 频道:https://www.youtube.com/c/kaochenlong ...
28 - Validate Params 上篇 最後有看到在 Concern 内又 include ...
进场特效也是基本再基本的网页动态! 尤其是当网页内容塞太多时,适当地加上进场特效可以帮助使用者阅读重...
LSTM 前言 系列文章简介 大家好,我们是 AI . FREE Team - 人工智慧自由团队,这...