修補:Ubuntu

Ubuntu 官方說一般的系統更新就會帶入修補。下面的指令與版號都抄自 Ubuntu 的安全公告與官方部落格。

1. 檢查

列出已安裝的 PHP 套件(Ubuntu 官方部落格的指令):

Ubuntu 官方:列出已安裝的 PHP 套件
apt list '?installed ?name(^php[0-9.]+$)'

拿版本對照公告。USN-8948-1(2026-10-21 發布):

發行版 套件 修補版
26.10 php8.5(含 libapache2-mod-php8.5、php8.5-cgi、php8.5-cli、php8.5-fpm) 8.5.9-0ubuntu2.1
26.04 LTS php8.5(同上四個套件) 8.5.4-0ubuntu1.5
24.04 LTS php8.3(libapache2-mod-php8.3、php8.3-cgi、php8.3-cli、php8.3-fpm) 8.3.6-0ubuntu0.24.04.13
22.04 LTS php8.1(libapache2-mod-php8.1、php8.1-cgi、php8.1-cli、php8.1-fpm) 8.1.2-1ubuntu2.28

USN-8948-2(同日發布,需要 Ubuntu Pro):

發行版 修補版 取得方式
20.04 LTS(php7.4) 7.4.3-4ubuntu2.29+esm5 Ubuntu Pro
18.04 LTS(php7.2) 7.2.24-0ubuntu0.18.04.17+esm14 Ubuntu Pro
16.04 LTS(php7.0) 7.0.33-0ubuntu0.16.04.16+esm22 Ubuntu Pro 的 Legacy Support 附加元件
14.04 LTS(php5) 5.5.9+dfsg-1ubuntu4.29+esm18 Ubuntu Pro 的 Legacy Support 附加元件

這些是 Ubuntu 回移植後的版號,數字看起來比 php.net 的修補版舊,但已經修好。判讀方式見我受影響嗎?。

註:回移植
回移植
發行版不升級大版本,只把安全性修補搬回舊版套件。7.4、8.0、8.1 這次有官方最小化原始碼回移植,沒有新的官方安裝包。確認時要看發行版安全公告,不要只對 php.net 版號。

ondrej/php PPA

很多主機用 ondrej/php PPA 裝其他 PHP 分支。它不是 Ubuntu 官方套件,上面的 USN 不涵蓋它,但 PPA 在 2026-10-21 已上架修補版(例如 24.04、22.04 的 8.3.36-1+ubuntu24.04.1+deb.sury.org+1)。PPA 的版號就是上游版號,對照版本矩陣即可。

分辨套件從哪裡來:

看 PHP 套件的來源(ppa.launchpadcontent.net 就是 PPA)
apt-cache policy php8.3-fpm

*** 標的那一行是已安裝的版本,下面列出它來自哪個套件庫。

2. 更新

Ubuntu 部落格寫出兩種做法,擇一:

Ubuntu 官方:完整系統更新
sudo apt update && sudo apt upgrade
Ubuntu 官方:只升級已安裝的 PHP 套件
sudo apt update && sudo apt install --only-upgrade '?name(^php[0-9.]+$)'

20.04 LTS 以前的修補需要先啟用 Ubuntu Pro(16.04、14.04 另需 Legacy Support 附加元件)。

註:LTS
LTS
Long-term support。Linux 發行版與 LTS 廠商事先拿到修補。版號可能仍是廠商自己的編號,要以該廠商的安全公告為準。

3. 重啟

使用 mod_php 時,Ubuntu 部落格寫的是重啟 Apache,或直接重新開機:

註:mod_php
mod_php
把 PHP 嵌進 Apache 行程的模組。未驗證的請求可在應用程式碼開始前碰到漏洞;官方稱預設設定下已展示完整 RCE。worker 會跨請求重複使用的部署,過期狀態更有機會留下來。
Ubuntu 官方:mod_php 重啟 Apache
sudo systemctl restart apache2
Ubuntu 官方:或重新開機
sudo reboot

使用 PHP-FPM 時,服務名稱帶分支號(例如 php8.3-fpm)。先列出有哪些,再逐一重啟:

註:PHP-FPM
PHP-FPM
以獨立行程池處理請求的常見跑法。基金會確認經應用層路徑可以 RCE。官方沒有把 PHP-FPM 寫成安全,只是沒有把它排在 mod_php 前面。
列出 PHP-FPM 服務並重啟(服務名依實際列出的調整)
systemctl list-units --type=service 'php*-fpm*'
sudo systemctl restart php8.3-fpm

同一台裝了好幾個分支時,每一個都要重啟。前面還有 nginx 時不用重啟 nginx;用 mod_php 的 Apache 才要重啟。

4. 驗證

  • 再跑一次第 1 步的 apt list,確認版本等於或新於公告上的修補版。
  • 向正在接流量的那一支 PHP 確認,不只看命令列的 php -v,做法見我受影響嗎?。

來源

查詢日期:。官方公告優先列出;內容如與 PHP 官方公告不一致,以官方公告為準。