松
ESC
输入关键词搜索文章

一次博客的安全升级——起因于CVE-2026-109618、CVE-2026-109619

全文约 1,636 字 预计阅读 6 分钟

一次 PHP 漏洞,让我把博客从应用商店搬进了 Docker

人倒霉喝口凉水都塞牙——穿透服务商已经好几天报网络错误了(也就是说,这几天都无法通过公网访问),又碰上了PHP突然被爆出来的这两个漏洞。。。(ó﹏ò。)

本身我还觉得没什么,毕竟拿shell哪有那么简单。但当我仔细看完这两个漏洞之后,发现它的波及范围实在是太大了,我当然也会受到影响(如果被影响者分为4个等级的话,那我应该是第二危险的那一等)

那我是真没招了,赶紧重做安全防护吧。趁着这次机会,还可以把博客迁到 Docker 里面,虽然这事早就该做了

一、PHP 是啥,这次又是出了什么事

先打个比方。

博客上的文章存在数据库里,是"原材料"。浏览器看不懂原材料,它只认"成品网页"。PHP 就是中间那个厨子——每次有人访问,它现做一份端上来。

这次出问题的,不是某个菜谱(插件),也不是餐厅的装修(主题),而是厨子本身。

本次两个漏洞的编号:编号 CVE-2026-109618 和 CVE-2026-109619,官方在 10 月 21 日发的紧急公告,严重程度 9.2 / 10。它们的毛病都出在很底层的地方:

  • 第一个:当服务器的内存被用光的时候,PHP 的"善后流程"会手忙脚乱,把一些还没收拾好的东西当成好的继续用。就像厨师发现冰箱空了,慌里慌张地把没解冻的肉直接下了锅。
  • 第二个:PHP 为了跑得快,会把一些临时状态留在"上一班"的记忆里,想着下一个人来还能接着用。但如果这些记忆其实已经作废了,下一个来的人捡起来用,就会出大事。这在技术上叫"use-after-free"(释放后使用)。

单个看都是很偏门的边角料问题。但组合起来,结果很要命:

不需要账号,不需要点任何链接,也不需要装错什么。只要往你的网站发一个精心构造的请求,就有可能让服务器执行别人指定的命令。

也就是圈内俗称的"拿到 shell"——攻击者可以在你的服务器上跑命令,相当于拿到了你房子的钥匙。

二、危害到底有多大

可以说是天翻地覆:

在 Apache + mod_php 这种部署方式下,这个利用已经被完整验证过,而且是"请求一进来就触发",在你博客的代码执行之前就发生了。换句话说,你博客写得再安全、密码设得再复杂,这时候都帮不上忙。

换成 PHP-FPM 的部署(我原来是这种),条件会苛刻得多,需要应用侧配合,成功率也没那么高。但"没那么高"和"没风险"是两码事。

那真的被打穿了会怎样?博客里储存的数据就危险了:

  • 文章、评论——可以被随意篡改、删除;
  • SMTP 授权码——这个最要命,拿到它就能用我的邮箱、以我的名义发信。

是的,我检查的时候发现,那个存着授权码的数据库文件,之前是可以直接从浏览器下载的 (。•́︿•̀。)

一个用我的邮箱发出去的钓鱼邮件,杀伤力比你想的大得多。。。

三、那我为什么不打个补丁就算了

好问题,我也想过。

答案是:我打不了

本博客原是飞牛应用中心装的 Typecho,PHP 8.2.32 是应用自带的"运行时"——它捆在应用的安装包里,我改不了版本,只能等上游更新。

而这次的情况是:公告发出当天,公开的 PoC 就已经在 GitHub 上铺开了,随手一搜就是一堆仓库,有的已经一千多 star。漏洞的传播速度,和"厂商排期"之间,隔着一条鸿沟。

并且我在迁移的时候发现一点:这个应用是用 php -S 启动的——那是 PHP 自带的开发服务器,设计初衷是"本机调试用"。它单进程、串行处理请求、没有任何并发保护。

平时没人来当然没事,人一多就完蛋了。

四、迁移做了什么

第一步,备份

  • 加强了备份强度、范围和频率。

第二步,搬进 Docker

  • 通过搬进容器的方式换成官方 php:8.3-fpm(正好是修复版 8.3.36)+ nginx。
  • 一定程度上也增加了安全性❛˓◞˂̵✧

第三步,顺手加固 :

  • 关掉 PHP 版本号暴露(原来响应头里直接写着 PHP/8.2.32,等于举着牌子告诉扫描器"来打我");
  • 关掉上传进度功能(官方给的缓解项之一);
  • 屏蔽数据库文件的 Web 访问——就是上面说的那个能下载的授权码;
  • 屏蔽安装残留文件、隐藏文件;
  • 单进程的 php -S 换成 nginx,静态资源加了缓存。

第四步,修了一些小毛病。 比如全站强制 HTTPS 的跳转、订阅插件记录真实访客 IP 等等。

五、说说"必要性"

我原本也觉得,自建博客嘛,能跑就行,折腾这些干嘛。

但这次之后我的看法变了。满天飞的PoC对我来说不亚于希特勒自杀前发现手里有核弹按钮,我甚至都不用想会不会有人来扫,因为换我来我也扫

自建博客的快乐在于"什么都自己说了算",代价就是"什么都要自己盯着"。这两件事是躲不掉的 ヽ(´▽`)/

如果看这篇文章的你也在自建博客,建议立刻检查:去看一眼你的 PHP 版本。低于 8.2.35、8.3.36、8.4.27、8.5.12 的,别等了,能装补丁的赶紧装补丁。

顺便说一句,8.1 和更早的版本已经停止维护了,官方不会再出补丁,自求多福吧ಠ_ರೃ(建议直接拔网线,真的,不开玩笑)

PS:这次迁移过程中所有的操作都留了备份和回滚路径,所以不用怕文章丢失。本篇文章主要是记录安全升级,所以对这两个漏洞不做过多讲解。如果你的好奇心比较重,想知道那两个 CVE 的细节,可以参考以下官方公告:

一次博客的安全升级——起因于CVE-2026-109618、CVE-2026-109619
无责任编辑
LBC
发布时间
2026 年 10 月 23 日
最后编辑时间
2026 年 10 月 23 日
版权协议
广告 广告位招租 联系站长投放广告 了解更多 →

发表评论

评论 暂无评论