静看光阴荏苒
不管不顾不问不说也不念

Debian 11 EOL更新系统并修复PHP高危漏洞

今天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

赞(0)
未经允许不得转载:荒岛 » Debian 11 EOL更新系统并修复PHP高危漏洞
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享创造快乐

广告合作资源投稿