Insights

PHP 爆出免登入入侵漏洞(PHP2Shell):主管機關通知之前,我們已經做了這些事


2026 年 10 月 21 日,PHP 官方發布安全公告,修補兩個高風險漏洞:CVE-2026-109618 與 CVE-2026-109619(社群稱為「PHP2Shell」)。兩者的 CVSS 嚴重度都是 9.2,攻擊者不需要登入,就可能在網站主機上遠端執行程式。

PHP 是許多網站與系統的基礎,這類漏洞影響的範圍很廣。接下來幾天,國家級資安單位發出預警,各政府機關也陸續要求委外廠商盤點、回報。

我們維運的系統,包括電商網站、品牌官網,以及多個政府單位的網站與系統。以下整理這幾天實際做了哪些事,以及為什麼這樣做。

一、通知到的時候,我們已經處理好了

這次最關鍵的,是時間差。我們在收到漏洞消息、查證屬實後,約 30 分鐘內就在負責的主機上套上緩解設定,這時 PHP 官方的修補版都還沒推出。

之後各客戶陸續收到通知或主動詢問時,情況是這樣:

客戶 通知或詢問 那時我們的狀態
政府單位 A 國家級資安單位發布預警,機關再轉寄給所有委外廠商(收件廠商超過 50 家),要求確認並儘速更新 緩解在預警發布前約 11 小時就已生效;機關轉知時,我們回覆的是「已處理完成」,不是「開始處理」
政府單位 B 客戶的資安窗口轉發主管機關通知,要求盤點風險並改善 緩解比主管機關的通知早約 21 小時;客戶轉信給我們時,官方修補版也已經升級完成,約 1 小時後即書面回覆
客戶 C 客戶的系統窗口在漏洞公開隔天上午主動詢問「對我們會有影響嗎?」 前一天下午就已套上緩解,回覆客戶「已經先關掉這個元件」
客戶 D 客戶的資安窗口轉傳新聞詢問是否需要調整,之後轉來填報表 測試環境前一天已處理;正式環境需要客戶同意時段,客戶同意後約 3 分鐘完成,服務零中斷

收到通知後,我們也不是只回一句「已處理」。例如政府單位 A,我們先逐台再確認一次設定確實生效,才寫書面回覆,內容包含使用情形、已完成的處置與後續計畫。

二、先緩解,再修補

處理這類漏洞,通常分成兩層:

緩解 修補
做法 關掉有問題的功能,讓已知的攻擊路徑失效 升級到官方修好的版本
需要多久 幾分鐘到幾十分鐘,不必等官方 要等官方釋出,還要測試、挑時段
限制 不完整 才是根本解決

示意圖:左格「先緩解」機器人用木板和膠帶快速封住破窗、擋住窗外的入侵者,標註幾分鐘、不用等官方;右格「再修補」機器人換上全新窗戶並對照測試清單,標註等官方修補版、測試後再上;下方寫著緩解是爭取時間,升級才是根本解決

圖:緩解像先把破窗封起來,幾分鐘到幾十分鐘就能做、不用等官方;修補像換一扇新窗,要等官方修補版並測試後才上正式站。

這次我們套用的是官方建議的緩解設定:關閉 session.upload_progress(上傳進度追蹤)。關掉後檔案上傳照常可以使用。

要特別說明的是,PHP 官方在公告中寫得很清楚:「沒有完整的緩解方式,升級是唯一安全的選擇。」 緩解是為了在修補到位之前爭取時間,不是處理完了。所以官方修補版一推出,我們就接著安排升級。

流程圖:處置分五步。一、發現與查證;二、先緩解,約 30 分鐘內,每個版本、每種執行方式都改,不必等官方修補版;三、驗證真的生效,讀出實際設定值並監測網站不中斷;四、永久修補,先在測試環境升級,正式環境排離峰時段完整重新啟動;五、確認執行中的程式已換新、看更新紀錄,並檢查有沒有被入侵

圖:這次的處置順序。下面第三到第七節,依序說明每一步實際怎麼做。

三、同一台主機,可能不只一份 PHP 設定

一台主機上的 PHP 可能同時以好幾種方式執行(例如內嵌在網頁伺服器、獨立的 FPM 服務、命令列),也可能同時裝了好幾個版本。只改其中一份設定,其他的照樣有漏洞。

所以我們是每個版本、每種執行方式逐一加上設定,連主機上裝著但沒在使用的版本也一起處理,再逐一確認實際生效的值是關閉的,並確認網站運作正常。

四、套用設定,也要不影響使用者

設定改了,要讓服務重新載入才會生效。我們的做法是「平順重新載入」:舊的處理程序把手上的請求處理完,才換成新的,使用者不會斷線。

跟客戶約時段時,我們預估「大概會停個 1 到 10 秒」;實際執行時,我們對網站連續發送請求監測,全程零中斷。

這中間也有個小插曲:第一次執行時,因為「完全沒有任何中斷」,我們反而覺得不對勁,去查服務紀錄才發現那次的重新載入其實沒有生效。改用正確的方式重做後,再實際讀出設定值確認已經關閉。零中斷不等於已生效,一定要驗證。

五、修補不是一出來就直接上正式站

官方修補版發布後,我們先在測試環境升級,結果遇到一個狀況:升級後只「重新載入設定」,部分網站出現錯誤。原因是網頁伺服器的主程式還掛著舊版的 PHP 模組,改成完整重新啟動後就恢復了。

有了這次經驗,正式環境的升級就排在晚上的離峰時段,直接做完整重新啟動,升級前後逐站確認狀態一致。

另外,這次只升級 PHP 本體。部分附加元件同時有較大的版本跳升,因為漏洞在 PHP 核心、不在這些元件,所以另外排時間測試,不在同一晚一起冒險。

六、確認「真的生效」,不只看版號

升級完成,不代表正在執行的程式已經換成新的。我們做了兩件事:

  • 檢查執行中的程式:確認沒有任何執行中的程序還載入著已被替換掉的舊檔案。
  • 看更新紀錄,不只看版號:Ubuntu 這類發行版,常把修補直接打進原本的版本號裡。例如 Ubuntu 24.04 的 PHP 8.3 修補後仍顯示 8.3.6,只是發行版自己的小版次改變。只看「8.3.6」會以為沒修,要看套件內附的更新紀錄(changelog)有沒有列出這兩個 CVE,才能確定。

七、檢查有沒有被入侵

緩解套上之前,有一段「已知有風險、還沒擋住」的空窗。所以我們從漏洞公布當天起,每一台主機都檢查了這段期間:

  • 網站目錄有沒有新增或被修改的程式檔,有沒有常見的後門寫法
  • 網站的執行身分底下,有沒有異常的程序或排程
  • 暫存目錄有沒有可執行檔
  • 有沒有異常的對外連線
  • 存取紀錄裡有沒有異常的請求

結果是沒有發現任何被入侵的跡象。期間看到的多半是自動掃描程式在試探其他舊漏洞的路徑,都沒有成功。

這類檢查也有它的極限:我們看的是檔案、程序、排程、連線與存取紀錄;只存在記憶體、不留下檔案的攻擊,無法完全排除;網站的存取紀錄也不會記下送出的內容,這部分只能從「同一來源短時間大量送出請求」這類跡象去近似判斷。所以我們的說法是「沒有發現跡象」,而不是「證明沒有被入侵」。

另外,我們在事件發生前,剛把正式環境的網站程式碼改成網站本身沒有寫入權限。就算攻擊者真的取得執行能力,也無法改寫網站程式,能造成的損害會小很多。

八、盤點時,也抓到我們自己的疏漏

這次逐台盤點,不只是找 PHP 漏洞。過程中我們也發現一個跟 PHP2Shell 無關、但屬於我們自己的疏漏:其中一台正式主機上的資料庫管理介面(phpMyAdmin)對外公開,任何人都連得到登入頁。

錯誤紀錄裡累計約 6,000 次登入失敗,光是 10 月就有 767 次,都是境外的自動化工具在猜帳號密碼,全部失敗。

我們先查清楚它背後連的是什麼:這個管理介面只連到主機本機一套沒在使用的舊版資料庫,裡面只有系統預設的資料、沒有任何業務資料,設定上也不允許改連其他主機;正式資料庫在另一台內網主機上,它碰不到。

接著分三步處理:

  1. 先限制只有指定的來源可以連線
  2. 再把這個管理介面整個關閉,不論從外網或內網都無法開啟
  3. 最後把那套沒在使用的舊資料庫停用、設為開機不啟動(資料先備份,需要時可以還原)

處理完逐項確認網站與每日資料同步都正常。

這裡也要照實說明限制:錯誤紀錄只記失敗、不記成功,所以我們無法用紀錄證明「從來沒有人成功登入」。能確定的是,它背後沒有資料、也連不到正式資料庫,就算有人登入,也拿不到東西。

管理介面是給維運人員用的,不該讓外界連得到。盤點的價值,有一部分就在於把這類平常不會注意到的問題翻出來。

九、已停止維護的舊版 PHP,只剩緩解

這次官方的修補版只涵蓋 PHP 8.2 以上。8.1 以下(包含 7.x)已經停止維護,官方不會推出正式的修補版。

在我們維運的範圍內,也有部分系統仍在使用舊版 PHP。這些主機的緩解設定會永久保留,並納入每日自動檢查,設定被改掉就會發出告警。

但要坦白說:官方自己都說緩解不完整。舊版本不是「還能跑就好」,下一次核心漏洞出現時,它只剩緩解、沒有修補。這也是我們在這次事件中,同步和使用舊版本的客戶討論升級規劃的原因。

升級我們採「先建後切」:新系統在測試環境建好、驗收通過才切換,升級期間舊系統照常運作,防護也持續維持。

如果你的網站或系統是委外維運,可以問這幾件事

以下是依這次實際處理過程整理的問題,可以作為評估維運服務時的參考:

  1. 重大漏洞公告後,多久能套上緩解? 是等主管機關通知才動,還是主動處理?
  2. 緩解和修補分得清楚嗎? 舊版本沒有修補時,打算怎麼處理?
  3. 升級後怎麼確認真的生效,而不只是看版本號碼?
  4. 有沒有做入侵檢查? 檢查的範圍和極限有沒有說清楚?
  5. 我的系統是不是跑在已停止維護的版本上? 有沒有升級規劃?
  6. 網站程式碼,網站自己改得動嗎? 改不動的話,被打進來時損害會小很多。
  7. 資料庫管理介面這類維運工具,外面連得到嗎?

漏洞不會因為網站上線就停止出現。上線之後誰在看、多快能反應,和網站本身一樣重要。

想了解我們的網站維護與代管方式,可以參考 電商網站開發、品牌形象官網設計 服務說明、維護服務條款,或直接 與我們聯繫。

參考資料:PHP 官方安全公告(2026-10-21)、Ubuntu CVE-2026-109618、Ubuntu CVE-2026-109619

分享這篇

相關服務

品牌形象官網設計 讓品牌被記住的視覺設計與官方網站。了解服務內容、合作流程與案例 →

相關案例

北投溫泉博物館北投溫泉博物館 交通部觀光署 — 越南語系官網交通部觀光署 台護中心台護中心

延伸閱讀

官網後台交付之後,客戶實際在用什麼?規劃後台前可以先想的五件事2026-11-07 上傳的檔案,會不會被當成程式執行?一次沒有人通報、我們自己找到的漏洞2026-11-10 公司的密碼庫有備份嗎?我們從「零備份」做到冷備援,主機突然離線那天真的派上用場2026-11-07
與我們聊聊你的專案
回到頂部 作品集 服務項目 知識文章 產品服務 聯絡我們
Lab Space