Day28-保护鲸鱼人人有责(三)

小结

前两天讲了几个比较重要的 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(反正扫描很快),然後定期上去看一下漏洞数有没有增加就好了~

另外,关於今天的内容有什麽问题欢迎在下方留言,没有的话铁人赛终於到了最後几天了,大家一起冲啊~


<<:  [Day28] 打造高效团队,先累积社会资本

>>:  Chain of Responsibility 责任链模式

玩通灵 - Intigriti's 0521 XSS challenge (Clickjacking)

前言 这是之前 Huli 大在前端社团分享的 国外 XSS 挑战。 最近比较有时间来分享,当时 「从...

EP14 - [TDD] 订单 Order 类别

Youtube 频道:https://www.youtube.com/c/kaochenlong ...

冒险村28 - Validate Params

28 - Validate Params 上篇 最後有看到在 Concern 内又 include ...

#12-套件掰!用JS 做进场特效 (Intersection Observer API)

进场特效也是基本再基本的网页动态! 尤其是当网页内容塞太多时,适当地加上进场特效可以帮助使用者阅读重...

【零基础成为 AI 解梦大师秘笈】Day29 - 周易解梦之人工智慧(10)

LSTM 前言 系列文章简介 大家好,我们是 AI . FREE Team - 人工智慧自由团队,这...