/系統維運/Leon Chan(CyberWeb Design 技術總監)
通用 Linux 伺服器:PHP 嚴重漏洞(CVE-2026-109618 / CVE-2026-109619)檢查與修復指引
PHP 直譯器爆出 CVSS 9.2 遠端程式碼執行(RCE)嚴重漏洞。本文提供完整的 Linux 伺服器排查、版本確認、更新與重啟指引,協助工程師精準避開常見維運盲點。
通用 Linux 伺服器:PHP 嚴重漏洞(CVE-2026-109618 / CVE-2026-109619)檢查與修復指引
這兩個漏洞存在於 PHP 直譯器本身,可導致未授權遠端程式碼執行(RCE),CVSS v4.0 皆為 9.2。
只有「實際在處理網頁請求的 PHP 進程」才會受影響,與網站應用程式(WordPress、Laravel 等)無關。伺服器上即使安裝了有漏洞的版本,只要沒有在處理請求,目前就不影響該網站。
────────────────────────────────
1. 找出正在執行的 PHP
查看所有 php-fpm 進程與啟動時間:
ps -eo pid,lstart,user,cmd | grep '[p]hp-fpm'
查看相關服務:
systemctl list-units --type=service | grep -E 'php.*fpm'
重點觀察:
• 哪個版本/路徑正在執行
• 進程啟動時間
────────────────────────────────
2. 確認實際版本
同時檢查 CLI 與 FPM(兩者可能不同):
php -v
php-fpm -v (或 php-fpm8.3 -v、php-fpm8.2 -v)
多版本並存時,使用完整路徑:
which php
ls /usr/sbin/php-fpm* 2>/dev/null
已修復版本門檻:
• 8.5 → 8.5.12
• 8.4 → 8.4.27
• 8.3 → 8.3.36
• 8.2 → 8.2.35
• 8.1 及更舊 → 無官方套件,建議升級
注意:Ubuntu / Debian / RHEL 等發行版常會 backport 修補而不改變版本字串。此時請檢查套件 changelog 是否包含這兩個 CVE:
zgrep -E 'CVE-2026-109618|CVE-2026-109619' /usr/share/doc/php*-common/changelog.Debian.gz
或
rpm -q --changelog php-common | grep CVE-2026-1096
────────────────────────────────
3. 判斷是否需要處理
• 版本已達修復門檻,且進程啟動時間在更新之後 → 已修復
• 版本未達門檻 → 需要更新
• 版本已達但進程仍是舊的 → 需要重啟服務
• 只是安裝了但沒有進程在跑 → 目前不影響,建議清理
────────────────────────────────
4. 事前準備(建議)
• 建立虛擬機快照,或至少備份網站檔案與 /etc/php/ 設定目錄。
• 記錄目前正在使用的 PHP 版本與服務狀態。
• 正式環境建議在低流量時段操作。
────────────────────────────────
5. 更新與重啟
Debian / Ubuntu:
sudo apt update
sudo apt install --only-upgrade 'php*'
sudo systemctl restart php8.3-fpm (依實際版本調整)
若使用 mod_php:
sudo systemctl restart apache2
RHEL / Rocky / Alma / Fedora:
sudo dnf update php*
sudo systemctl restart php-fpm
Docker:
改用已修復的官方映像(例如 php:8.3.36-fpm、php:8.4.27-apache)並重新部署。
更新後務必重啟服務,否則舊進程仍在記憶體中執行有漏洞的程式碼。
────────────────────────────────
6. 最終驗證
確認版本:
php -v
php-fpm -v
確認進程已重啟(啟動時間應在更新之後):
ps -eo pid,lstart,cmd | grep '[p]hp-fpm'
確認服務狀態:
systemctl status php8.3-fpm --no-pager
建議再以網站實際使用的版本為準(可暫時放置 phpinfo() 確認後立即刪除)。
────────────────────────────────
補充
• 臨時緩解(非完整解決,僅降低部分攻擊路徑):在管理員層級設定 session.upload_progress.enabled=0 後重啟服務。官方明確表示只有更新才是完整修復。
• PHP 8.2 將於 2026-12-31 結束支援,建議盡早規劃升級。
• 若伺服器上有多個 PHP 版本並存,請逐一檢查「實際在執行」的版本。
完成以上步驟後,即可確認實際處理請求的 PHP 是否已修復。