2026 年 10 月 22 日發布,內容依據 PHP 基金會、CISA 與 Rapid7 的公告整理,之後有新進展會更新。

一句話:馬上更新 PHP——這才是修補方法,本文任何內容都不能取代它。靜態化不會讓你的 WordPress 伺服器不再執行 PHP,但一般訪客從此碰不到 PHP,於是那台還在跑 PHP 的伺服器可以縮到最小、藏起來,甚至暫時關掉,網站也不會因此停擺。

發生了什麼

  • 兩個漏洞:CVE-2026-109618 與 CVE-2026-109619(外號「php2shell」),在特定條件下可讓未登入的攻擊者在執行 PHP 的伺服器上執行程式碼。兩者的 CVSS 評分都是 9.2。
  • CVE-2026-109618:請求在不對的時間點用完記憶體時,會造成記憶體損壞。在 Apache + mod_php 上,它可以在任何應用程式碼執行之前就被觸發——所以跟你用哪個 CMS、哪些外掛無關——而且已在預設設定下展示完整的程式碼執行。PHP-FPM 也已確認可透過應用程式的程式路徑觸發。
  • CVE-2026-109619:前一個請求殘留的狀態造成 use-after-free;已在 Apache + mod_php 上對真實的應用程式展示程式碼執行。
  • 修補版本:PHP 8.5.12、8.4.27、8.3.36、8.2.35,於 2026 年 10 月 21 日發布。CISA 表示所有處理網頁請求的 PHP 都受影響,建議立即修補,先從對外開放的系統開始。
  • 遭利用情況:發布時,PHP 資安團隊與 CISA 都還沒看到實際可用的攻擊。不過細節提前兩天外洩,概念驗證影片也已流傳,研究人員預期攻擊程式碼很快會公開。

第一步:修補

你的 PHP 版本更新到備註
8.58.5.12 或更新
8.48.4.27 或更新
8.38.3.36 或更新
8.28.2.35 或更新
8.1 或更舊升級到仍受支援的版本沒有修補;CISA 建議在升級前先讓這類系統下線

在 WordPress 後台的工具 → 網站狀態 → 資訊 → 伺服器 → PHP 版本可以看到目前版本。使用代管或共享主機的話,請向主機商確認是否已更新——很多主機在正式發布前就已修補。自己管伺服器的話,更新 PHP 套件後重新啟動 PHP-FPM 或 Apache。所有跑 PHP 的網站都要處理:測試站、舊網站、phpMyAdmin 之類的工具也算。

為什麼 WordPress 網站特別暴露

一般的 WordPress 網站,每一次頁面瀏覽都會執行 PHP:每個訪客、機器人和掃描器只要請求頁面,就碰得到 PHP。在整個網路上大量掃描有漏洞的伺服器成本很低,而一個在應用程式碼之前就會觸發的漏洞,根本不管你的外掛維護得多好。只要能送請求到你的 PHP,就能試著攻擊。

靜態化改變了什麼

一般 WordPressCDN 上的靜態版
頁面瀏覽會執行 PHP每一次完全不會——頁面就是一般檔案
誰碰得到 PHP任何打開頁面的人只有你允許的:後台的你,以及你有啟用的即時功能
WordPress 放在哪裡你的公開網域上可以放在另一個位址,只允許 Cloudflare 或你自己連線
必須讓 PHP 下線時網站跟著停擺訪客照常看到頁面;只有編輯與即時功能暫停

最後一列在現在特別重要。CISA 對暫時無法修補的系統,建議先讓它們下線。有了靜態版,你可以在更新期間停掉 WordPress——或在防火牆擋掉它的伺服器——訪客照樣從 CDN 讀到你的網站。

靜態前台下,請求能碰到什麼. 訪客從 Cloudflare 拿到靜態 HTML——不執行 PHP。 針對公開網站的攻擊打在一般檔案上:沒有東西可以執行。 後台與即時功能要先通過一道鎖(Cloudflare Access、源站只對 Cloudflare 開放),才到得了 WordPress。 WordPress 在那道鎖後面仍執行 PHP——照樣要保持更新。 Cloudflare HTMLHTMLHTML HTMLHTML 訪客 你 攻擊 WordPress PHP · wp-admin
訪客從 Cloudflare 拿到靜態 HTML——不執行 PHP。 針對公開網站的攻擊打在一般檔案上:沒有東西可以執行。 後台與即時功能要先通過一道鎖(Cloudflare Access、源站只對 Cloudflare 開放),才到得了 WordPress。 WordPress 在那道鎖後面仍執行 PHP——照樣要保持更新。

它不能改變什麼

  • WordPress 仍然執行 PHP,所以一樣要更新。靜態化是多一層防護,不是修補。
  • 即時功能仍會連到 WordPress。如果靜態版把評論、搜尋、表單或 WooCommerce 價格送到 WordPress 的 REST API,這些請求就會執行 PHP;後台若能從你的網域打開,也一樣。
  • 藏起來的伺服器,只有在沒有任何線索指向它時才算藏好。舊的 DNS 記錄、郵件標頭裡的伺服器 IP、被遺忘的子網域,都可能洩漏它的位置。

這週就把它鎖好

  1. 更新 PHP:每台跑 PHP 的伺服器都要,並在網站狀態裡確認版本。
  2. 在後台前面加一道登入關卡,例如 Cloudflare Access(小團隊免費),只有你能打開 wp-admin。
  3. 只讓 Cloudflare 連到源站:伺服器防火牆只放行 Cloudflare 的 IP 範圍,其他一律擋掉,或改用 Cloudflare Tunnel。
  4. 開啟 WAF;CISA 指出在修補前它可能提供一些保護。
  5. 留意異常跡象,例如 PHP 程序啟動 shell 或下載檔案,這是 CISA 建議的監控重點。
  6. 讓訪客看靜態版,公開網站就完全不依賴 PHP。

Pinery Static 在其中的角色

Pinery Static 把 WordPress 網站導出成純 HTML,部署到 Cloudflare Pages:公開網站變成全球 CDN 上的檔案,WordPress 變成你編輯內容的地方。免費版就能完整導出與部署;Pro 透過 WordPress 的 REST API 保留評論、搜尋、表單與 WooCommerce 價格,同網域切換功能可以在你原本的網域提供靜態網站,後台照常可用。在我們的示範商店,靜態版的載入時間是 0.09 秒,WordPress 原站是 1.6 秒(27 個測試點中位數)——看實測數據。不過,請先更新 PHP。

常見問題

我的 WordPress 網站受影響嗎?

如果跑的是 PHP 8.2–8.5 且低於修補版本,在更新之前請當作受影響。Apache + mod_php 的網站最危險,因為第一個漏洞在 WordPress 執行之前就能被觸發。

網站靜態化之後,就不用更新 PHP 了嗎?

不是。你的 WordPress 伺服器仍在執行 PHP,必須更新。靜態化能減少碰得到它的人,也讓你可以安全地讓它下線,但它不是修補。

我的主機商會幫我管 PHP,還需要做什麼嗎?

到工具 → 網站狀態 → 資訊 → 伺服器查看 PHP 版本,或直接問主機商。很多主機很快就修補了,但請確認——也別忘了你在其他地方的網站或測試站。

靜態網站還能保留評論和表單嗎?

可以,做法是把它們送到 WordPress 的 REST API(Pinery Static Pro 就是這樣做)。這些請求會碰到 PHP,所以即使訪客看的是靜態版,WordPress 也要保持更新並受到保護。

今天沒辦法更新,有暫時的對策嗎?

CISA 只提到兩個暫時措施:可能提供部分保護的 WAF,以及讓未修補的 PHP 系統下線。有了靜態版,第二個方法就不會讓讀者看到網站停擺。

資料來源