X
    Categories: News

PHP 嚴重的 RCE 漏洞「PHP2Shell」解法

PHP 爆發出史上最嚴重的 RCE 漏洞「php2shell」(CVE-2026-109618 與 CVE-2026-109619),評分高達 9.2分

嚴重到日本首相高市早苗都直接宣佈:

  • 「各位,今晚有件極為緊急的請求,希望各位能配合處理」,呼籲所有公開營運的網站管理者確認是否使用PHP,並在修補程式公開前做好準備盡速套用;如果難以在第一時間修補,暫停網站運作也是降低風險的有效做法之一

先說解法:

  • PHP 8.2 以上:用官方 Patch 或 Debian 官方套件 apt upgrade 即可
  • PHP 7.x 以下(暫解):可以考慮此篇文章 php_uploadprogress_guard 的套件(.so)

目前 PHP 官方有出的 Patch:8.5.12、8.4.27、8.3.36、8.2.35 (正解是需要升級到這些版本)

針對 7.x 以下的版本,官方目前還沒有提供 Patch,所以需要另外處理,有提供 ini 檔的修改解法:(不過下面兩位專家說沒用)

  • session.upload_progress.enabled = Off
  • post_max_size = 8M or 32M (限制大小)
  • memory_limit = -1
  • max_input_nesting_level = 8 (設小一點)
  • expose_php = 0
  • PHP 8.5:fatal_error_backtraces = 0 (關閉)
  • PHP-FPM:pm.max_requests 設小一點

PHP Foundation 的核心開發與管理機構成員:

  • Gina Peter Banyard(PHP 核心開發者與文件維護者):「唯一的緩解措施就是直接進行修補或升級 PHP」,不存在任何十全十美的臨時替代方案
  • Gina Peter Banyard, a PHP core developer and documentation writer funded by the PHP Foundation, wrote: "The only thing I can say is that the only mitigation is patching / upgrading PHP." I sadly know too much.
  • Joe Ferguson(PHP 8.6 版本 Release 管理員):「ini 設定救不了你(ini settings won't save you)。」 警告所有站長切勿依賴修改 php.ini 配置來當作避風港
  • Joe Ferguson, the release manager for the coming PHP 8.6, put it shorter: "ini settings won't save you."

PHP 嚴重的 RCE 漏洞「PHP2Shell」解法

PHP2Shell 這次事件影響的 CVE 和詳細說明可見:

此次建議的作法:

  • 立即升級:確認實際在背景處理網頁流量的 PHP
  • 版本與映像檔,套用上述安全版本並重啟工作程序(Worker / FPM)
  • 預防性下線:若無法立即完成修補且對外曝露,多國資安單位與政府(如芬蘭、荷蘭等)建議暫時將受影響的公開網頁與服務離線
  • 檢查日誌與後門:檢視 WAF(網頁應用程式防火牆)紀錄、伺服器排程與檔案變動,確認是否有異常請求或未授權存取痕跡
  • 官方緊急修補版本 (2026年10月21日釋出)
    • PHP 8.2 ➔ 請升級至 8.2.35
    • PHP 8.3 ➔ 請升級至 8.3.36
    • PHP 8.4 ➔ 請升級至 8.4.27
    • PHP 8.5 ➔ 請升級至 8.5.12

OpenAI 有推出檢測工具:GitHub - openai/php2shell-checker · GitHub

PHP 官方 7.4 的 Patch:Comparing master...PHP-7.4-CVE-2026-109618-109619 · php/php-src

Debian Security Bug Tracker 的套件更新狀態:

目前看來,針對 PHP 8.2 以上的,建議直接 apt update; apt upgrade 作升級動作即可

針對 PHP 7.x 以下的解法,可以考慮此套件 php_uploadprogress_guard (Hosted Power 主機商公司 Open Source):

php_uploadprogress_guard 套件內容:

php_uploadprogress_guard 安裝 (若使用 dist 的 so,就直接跳到 Step 8,將 *.so cp 到 /usr/lib/php/20190902/ 即可

  1. sudo apt install php-dev
  2. git clone https://github.com/HOSTED-POWER/php_uploadprogress_guard
  3. cd php_uploadprogress_guard/src
  4. phpize
  5. ./configure
  6. make
  7. make test
  8. sudo make install
    • Installing shared extensions: /usr/lib/php/20190902/
  9. echo 'extension=hp_uploadprogress_guard.so' | sudo tee /etc/php/7.4/mods-available/hp_uploadprogress_guard.ini
  10. sudo phpenmod hp_uploadprogress_guard
  11. sudo apache2ctl configtest
  12. sudo systemctl restart apache2.service
  13. php -m | grep hp_uploadprogress_guard # CLI 能執行不是重點,只是參考
  14. 重點是線上 要有看到 hp_uploadprogress_guard enable 等等的資訊
    • php --ri hp_uploadprogress_guard # cli 但是這個不是重點

相關網頁

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post