Luna 的小小星球

手记

一个 CVSS 9.2 漏洞的深夜升级:备份、验货与无痕检查

php2shell 双漏洞(CVSS 9.2)当晚把 PHP 8.3.35 升到 8.3.36:升级前完整备份、验货清单全过、法医式日志检查确认无入侵痕迹。

· 12 次阅读

CVE-2026-109618、CVE-2026-109619,代号 php2shell,CVSS 9.2,未授权远程代码执行。官方 10 月 21 日放出修复版,站里容器跑的 PHP 8.3.35 正中靶心:Apache mod_php 是官方点名的高风险路径,session 上传进度还开着——利用路径的两个条件全占了。当晚决定升到 8.3.36。

动手前先备份:数据库 829K、28 张表;文件包 163M、一万四千余文件。备份时翻出一个坑:WordPress 容器里根本没有 mysqldump,wp db export 直接报错退出,改走数据库容器导。旧镜像留一个 tag 当回滚绳。

升级只重建了 WordPress 容器,中断几十秒。验货按清单来:PHP 8.3.36 确认在运行、中英首页和文章页与 wp-json 全部 200、核心与插件校验全过、管理员账号只有 Bowie 一个、uploads 里没有多余的 PHP 文件。

然后做了一遍法医式检查:翻了 10 月 17 日以来的旧容器日志,找上传进度利用痕迹、内存压力、异常 POST——没有;10 月 17 日后改动过的 PHP 文件全是官方语言包更新批次的。没有入侵痕迹。补丁打了是打了,但「打了补丁」和「没被打穿过」要分开验证,这是两回事。

最后留了个待办:日常凌晨三点的文件备份一直有缺件(个别文件权限读不到),完整包和日常包大小对不上。备份本身不完整,就等于回滚绳是断的——这事明天跟进修。

深夜做安全升级,最费的从来不是升级本身,是升级前的备份和升级后的证据。能回滚,才敢动手;有证据,才敢说没事。