文章

認識 PHP2Shell 缺陷:企業站點此刻該完成的三項處置

返回

PHP2Shell 指的是什麼

這是 2026 年 10 月公開的兩項 PHP 核心缺陷(CVE-2026-109618、CVE-2026-109619),嚴重程度均為 CVSS 9.2(滿分 10)。攻擊方不必持有帳號,只要送出特製請求,就可能在網站主機上執行自備程式。官方修補版已於 2026 年 10 月 21 日釋出。

常有人覺得自家站點規模小,不會被選為目標。這波行動幾乎全靠自動化掃描,範圍是整個網路,只依 PHP 版本篩選,與公司大小無關。

登入驗證與防火牆為何擋不住

不妨把網站想成一棟大樓,登入驗證像各樓的門禁。問題出在一樓收發櫃台:包裹剛進門、還沒上到任何樓層,櫃台就已經出狀況。

因此這次缺陷有兩個重點:

  • 不必登入:有沒有會員機制、後台密碼多複雜,都不影響。
  • 程式寫得再穩也無法根治:缺陷在 PHP 本身,只有升級 PHP 才能完整修好。

怎樣判斷網站是否受影響

唯一關鍵是:主機實際正在執行的 PHP 版本。對照下表即可決定是否要處理:

目前的 PHP 分支含修正的版本官方正式修正建議動作
8.58.5.12 或更新已提供核對是否已升至 8.5.12
8.48.4.27 或更新已提供核對是否已升至 8.4.27
8.38.3.36 或更新已提供先確認已更新,並規劃明年升至 8.4
8.28.2.35 或更新有修正,但支援將於 2026-12-31 結束先更新,並在年底前升至 8.4 以上
8.1、8.0、7.4沒有正式發行版僅有原始碼層級修補先做臨時防護,並儘快升級

實務上最容易搞錯的是相信「主機商說 PHP 已經很新」。同一台機器常同時安裝多個版本,控制台顯示的未必是網站真正在用的那個,請對方確認的是網站正在執行的版本。版本停止維護後該如何處理,可另查相關說明。

現在就要做的三件事

1. 核對版號,能升級就升級

若低於上表的修補門檻,請主機商或維運廠商更新。8.2 以上多半只是小版號更新,風險較低;7.4 到 8.1 要跨大版本,程式、外掛與金流串接都可能要一併調整。較穩妥的做法是先在測試站升級並驗收,再放到正式環境。

2. 暫時不能升級時,先做防護

請主機商調整下列設定,改完必須重新啟動 PHP 才會生效:

  • 關閉上傳進度(session.upload_progress):此功能預設開啟,就算網站沒用到也可能被利用。
  • 限制單次請求大小:在主機前端擋下異常龐大的請求。
  • 若網站使用 PHP 8.5,另外關閉致命錯誤追蹤資訊(fatal_error_backtraces)。

說得直接一點,這些只是先把收件窗口縮小,並沒有把缺陷補上,仍要排定升級時程。

3. 回查有沒有遭攻擊的跡象

海外雲端業者在公告前 4 天就已看到攻擊嘗試,因此 10 月 21 日之後才更新、或至今仍未更新的網站,都值得回頭查。請維運廠商檢查:

  • 錯誤紀錄是否成批出現「記憶體不足」,而且發生在網站程式開始執行之前
  • 網路請求裡是否有平時不會出現的上傳進度欄位
  • 主機上是否有網站程式自己拉起的系統指令程序

只要有一項可疑,就依網站遭入侵的緊急應變流程處理,不要急著刪檔。

該問主機商或維運廠商的三個問題

要提出的問題理想的回答需要警惕的回答
網站真正運行的 PHP 完整版號是多少?能直接說出完整版號,例如 8.4.27「應該已經是新版了」
PHP2Shell 的修補是否已經完成?已升到修補版,或已啟用臨時防護並排定升級日期「網站不大,不會被攻擊」
錯誤紀錄有沒有查過?能說明查了哪一段時間、有沒有異常「沒出問題就不必看」

結語:缺陷還會再來,版本必須跟上

PHP2Shell 不會是最後一個嚴重缺陷。請記住以下三點:

  1. 先弄清網站用的是哪個 PHP 版本:不知道版號,就無法判斷下一次缺陷是否與自己有關。
  2. 臨時防護不是修復:可以爭取時間,但終點仍是修補版。
  3. 把 PHP 升級排進每年維護:在支援到期前就升級,不要每次都等漏洞公告才處理。

平時也可依資安檢查要點,自行複查網站防護是否到位。

WhatsApp
Chatbot Icon ANGLIA AI Chatbot
×
For more efficient responses, please shorten your question