10 月 21 日前后,安全圈突然热闹起来。

PHP 修复了能让攻击者在未经登录的情况下远程执行代码的漏洞;Node.js 更新了一批安全问题,其中有一个出在 Brotli 解码器;NGINX 也有几个高危漏洞需要处理。平时开发天天都能见到的名字,这回一个接一个上了安全公告。

我看到新闻的时候,倒没顾上研究哪一个 CVE 编号最吓人。

我想的是:我那几台 VPS 现在是什么情况?

这些机器上零零散散跑着一些应用和服务。有 Node、Python,有 Docker 容器,也有系统软件和反向代理。平时服务能打开,谁还会天天记着每台机器上每个包的版本号。

但安全更新一来,事情就变得很烦。要查机器,要查容器,要区分软件装没装、漏洞到底适不适用;升级之后还得看看服务有没有被自己修坏。

以前做这套事情,我估计得开一堆终端,翻好几个仓库。漏掉一个不起眼的旧服务也很正常。

这次我直接把任务扔给了 Codex CLI。

我让它去核对官方安全公告,把几台机器上的系统、服务、容器和代码依赖过一遍。查到受影响的就安排升级,升级之后重建、重启、测试;不受影响的说清楚原因;暂时动不了的也留在记录里。

听起来挺顺利,但这里有个比较好笑的问题。

我的 Codex 本身就是通过一个自建的 API relay 来连接模型的。

这个 relay 也是我服务器上的服务。也就是说,如果 Codex 排查到它需要更新,接下来还得亲手重启自己用来跟模型通信的那条线路。

就像你正在电话里指挥维修工修电路,修到一半发现,电话线也在施工范围内。

所以我事先让它考虑好重启顺序、哪些步骤会中断连接,以及中断以后怎么接着做。后面连运行 Codex 的宿主机也需要重启,我只在机器起来后手动介入了一次,把 Codex 会话重新拉起来。

然后它继续干活。

这轮折腾前后大概一个半小时。最后 Node 和 Python 应用依赖做了更新,相关容器重建并检查了健康状态,系统更新和公网服务也逐项确认了恢复情况。

还有一个挺有意思的结果:PHP 这次漏洞很严重,但我的这些环境里压根没有安装 PHP。那一项自然不需要修。OpenSSL 已经处在 Ubuntu 提供的修复版本上。

当然,报告里也不是清一色的绿色。部分内核问题还得等后续发行版补丁,少量已经停用的项目仍有依赖告警,几个历史服务状态也没有在这轮改动里处理。

我反而挺喜欢报告里把这些事老老实实留下来。

服务器安全这件事,最怕的就是看到一句「全部修复完成」,过两天才发现某个角落一直没查到。哪些修好了、哪些本来就不受影响、哪些还欠着,这三种情况得分得清清楚楚。

以前要把这张清单一项项过完,我得把一整段时间交给终端。现在我可以把目标交代清楚,让 Agent 自己去查、去改、去验证,中间该停下来等我接手的地方再叫我。

一个半小时之后,服务还在正常跑,留下的几个尾巴也明明白白。我没有从头到尾守着屏幕看它敲命令。

以后恐怕还会有更多这样的安全公告。漏洞该紧张还是得紧张,补丁该打还是得打。

只是下一次新闻再刷屏,我大概会先打开 Codex,问一句:

「帮我看看,咱们家这几台机器有没有中招?」

---

相关安全公告:PHP · Node.js · NGINX