PHP 官方於 2026 年 10 月 21 日晚間(台灣時間)發布安全公告,修補兩項 PHP 核心的重大漏洞,CVSS v4.0 評分 9.2。攻擊者不需登入,只要對網站送出特製請求,就可能在伺服器上遠端執行任意程式碼(RCE)。Moodle 是以 PHP 撰寫的平台,所有 Moodle 網站都在受影響的範圍內。
CVE-2026-109618(記憶體不足處理):PHP 在記憶體不足時中斷請求,內部資料只初始化一半,清理時卻被當成有效資料使用。
CVE-2026-109619(殘留的全域狀態):請求結束後,部分內部狀態仍指向已釋放的記憶體,同一個 PHP worker 處理下一個請求時可能用到它。官方已確認在一般 PHP-FPM 設定下,可經由預設開啟的「Session 上傳進度」功能觸發。
官方明確表示:目前沒有完整的緩解方式,更新 PHP 是唯一安全的做法。
PHP 8.2 以上:官方已推出修補版本 8.5.12、8.4.27、8.3.36、8.2.35。
PHP 7.4、8.0、8.1:已停止官方支援,官方另提供原始碼修補,需自行編譯更新。
PHP 7.3 以前(含 7.2、7.0、5.x):沒有任何修補,只能以設定調整降低風險。
Moodle 4.1 只支援到 PHP 8.1,無法直接換成官方修補版;要持續取得 PHP 官方的安全更新,需連同 Moodle 一起升級。
10 月 20 日官方預告將發布修補時,攻擊方式尚未公開,但資安業界預期細節公開後很快會出現大規模自動化攻擊。我們在預告當天即啟動應變,不等正式公告:
盤點所有維護中平台的 PHP 版本、執行方式(PHP-FPM/Apache)與相關設定,依 PHP 版本分成三類,決定各自的修補路徑。
先在測試機驗證暫時緩解措施,確認 Moodle 登入、檔案上傳、排程(cron)皆正常,才套用到正式機。
對正式機做唯讀的入侵跡象檢查:程式碼與版本庫逐檔雜湊比對、近期異動檔案、moodledata 內是否有不明 PHP 檔、存取紀錄(access log)、排程與對外連線。
官方公告發布後,逐項核對 php.net 公告與 PHP 原始碼的安全通告,確認攻擊路徑與先前套用的緩解方向一致。
第一階段(官方修補發布前):停用「Session 上傳進度」(session.upload_progress.enabled = 0)並重啟 PHP 服務,逐台驗證設定確實生效,且不影響 Moodle 功能。
第二階段(官方修補發布當晚):PHP 8.2 以上更新到官方修補版;PHP 7.4/8.0/8.1 以官方原始碼修補重新編譯 PHP 執行環境。先在測試機驗證、比對模組一致後才切換正式機,每台中斷約數秒,並保留可立即回復的舊版本。
PHP 7.2 以下的平台:沒有修補可用,我們依官方建議加強設定(例如由管理層級固定記憶體上限、限制容器可用記憶體),並與學校另行規劃升級。
順帶修正檢查時發現的風險:管理用 SSH 連接埠改為只允許本機連線、移除公開的預設金鑰、PHP 設定檔改為網站程式無法修改,避免攻擊者還原緩解設定。
檢查結果:目前維護中的平台皆未發現遭入侵的跡象,我們會持續監控。
這次事件再次說明:PHP 一旦停止官方支援,重大漏洞就只能靠臨時修補或設定調整,風險與維護成本都會升高。
仍在使用 PHP 7.2 以下:沒有修補可用,請儘速規劃升級。
仍在使用 Moodle 4.1(PHP 7.4~8.1):建議升級到 Moodle 4.5 LTS,並搭配 PHP 8.2 以上,才能持續取得 PHP 官方的安全更新。
自行維護主機的單位:請立即將 PHP 更新到 8.5.12、8.4.27、8.3.36 或 8.2.35;尚未能更新者,至少先停用 session.upload_progress。
升級需要評估外掛相容性與測試時程,歡迎與我們聯繫,協助您評估與安排。
若有進一步問題,請連絡我們協助處理。