今天PHP爆了两个高危漏洞:CVE-2026-109618、CVE-2026-109619,本站受影响,第一时间维护并着手更新。顺带把之前的一些问题一并解决了,记录下过程用于备忘。
我这个破站运行在Debian 11,因为一些历史遗留问题一直没更新到新系统,Debian 11已经停止支持了,官方不再为其提供安全更新,所以这不是一个好的示范,如果有能力应该还是升级系统。但好在我的PHP是通过sury的仓库安装的,不得不说sury真的是一个特别敬业的软件包维护者,他几乎与PHP上游同一时间发布了修复漏洞后的PHP软件包,包括向后移植的旧版本。
执行apt dist-upgrade报错,原因是Debian 11已经EOL了,Debian官方会把仓库归档,虽然Hetzner的系统模板会配置一个自家的镜像源,但这个镜像源也是404的状态:
Ign:1 http://security.debian.org/debian-security bullseye-security/main amd64 dpkg amd64 1.20.14
Ign:2 http://security.debian.org/debian-security bullseye-security/main amd64 libc-bin amd64 2.31-13+deb11u14
Err:1 http://mirror.hetzner.com/debian/security bullseye-security/main amd64 dpkg amd64 1.20.14
404 Not Found [IP: 2a04:4e42:6e::644 80]
Err:2 http://mirror.hetzner.com/debian/security bullseye-security/main amd64 libc-bin amd64 2.31-13+deb11u14
404 Not Found [IP: 2a04:4e42:6e::644 80]
解决办法就是编辑sources.list:
nano /etc/apt/sources.list
将Debian源统一替换为以下归档配置:
deb [check-valid-until=no] https://archive.debian.org/debian bullseye main contrib non-free
deb [check-valid-until=no] https://archive.debian.org/debian bullseye-updates main contrib non-free
deb [check-valid-until=no] https://archive.debian.org/debian-security bullseye-security main contrib non-free
这些对应Debian官方的更新归档和安全归档。Hetzner的镜像源可以不做修改,因为两边的优先级都是500,如果不放心可以将其注释掉以禁用。
Hetzner镜像源:
nano /etc/apt/sources.list.d/hetzner-mirror.list
注释掉:
# deb http://mirror.hetzner.com/debian/packages bullseye main contrib non-free
# deb http://mirror.hetzner.com/debian/packages bullseye-updates main contrib non-free
Hetzner安全更新镜像源:
nano /etc/apt/sources.list.d/hetzner-security-updates.list
注释掉:
# deb http://mirror.hetzner.com/debian/security bullseye-security main contrib non-free
第二个问题是Sury PHP仓库的签名密钥过期:
下载并安装最新的官方密钥包:
curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
dpkg -i /tmp/debsuryorg-archive-keyring.deb
编辑Sury PHP仓库配置文件:
nano /etc/apt/sources.list.d/php.list
改用新密钥路径:
deb [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] https://packages.sury.org/php/ bullseye main
现在就可以更新系统了:
apt update
apt dist-upgrade
更新的过程中又报错了,CrowdSec的安装配置未完成,看样子单纯是网络问题:
Hub 规则下载返回 503
↓
CrowdSec 安装后脚本失败,配置流程中断
↓
本地 API(LAPI)未能恢复服务
↓
bouncer 连接 127.0.0.1:8088 被拒绝
↓
bouncer 启动失败并反复重试
重试CrowdSec规则更新,理想结果,第4条命令不再报错,第5条命令没有输出:
cscli hub update
cscli hub upgrade
dpkg --configure crowdsec
dpkg --configure -a
dpkg --audit
至此系统更新完成。在这次系统更新完成的时候Sury仓库还没有发布新的软件包更新,所以我是等到发布后,又更新了一遍:
apt update
apt dist-upgrade
收到了新的更新:
根据Sury的更新记录,7.4.33-31包含这两个CVE的回移修复,更新记录明确写着:
* Backported from 8.2.35
+ [CVE-2026-109618, CVE-2026-109619]: Avoid state corruption via
bailout.
更新完成后重启PHP-FPM:
systemctl restart php7.4-fpm
对于有使用旧版本PHP需求的,我非常推荐使用Sury的仓库,该仓库作者本身就一直是Debian/Ubuntu官方PHP软件包的维护者,也是得益于他的细心且负责任的维护才让我们的一些老旧程序(垃圾程序)能够安全的运行,再次感谢Sury!另外,从这个事件也能够看出来CrowdSec在这块就是个玩具级别,漏洞它是拦不了的(waf不能第一时间出vpath),阻碍正常的系统更新是有一套。(bushi
荒岛
























