FrankenPHP 與 Caddy 在 2026 年 11 月 5 日發布安全更新。如果主機使用 FrankenPHP 的 php_server,要查的是上傳檔會不會進入 PHP 處理器;如果是 Caddy 接 PHP-FPM,則要核對 FastCGI 的路徑規則與傳給應用程式的變數。兩套部署都不能只看 PHP 本身的版本。
先分清主機用的是哪一套
| 部署方式 | 應核對的版本 |
|---|---|
| FrankenPHP | 公告列 1.13.4 及以前受上傳檔執行問題影響;修於 1.13.5 |
| 獨立 Caddy 接 FastCGI | 若仍在 2.11.8,升到 2.11.9,並核對下列使用條件 |
FrankenPHP 1.13.5 已包含 Caddy 2.11.9,並修補 FrankenPHP 自身的 17 項漏洞。若用容器,更新並重新部署實際提供服務的映像;若用自製二進位檔,則重新建置並核對運行中的版本。只更新另一個獨立安裝的 Caddy,不會替換 FrankenPHP 裡的那一份。
FrankenPHP:圖片副檔名不一定阻止 PHP 執行
原廠公告 GHSA-j99q-3wr8-xj43 指出,受影響的處理器在特定路徑判斷下,可能把沒有以設定中 PHP 類副檔名結尾的檔案當作 PHP 執行。利用仍需要能把檔案存入網站文件根目錄下,並能選擇符合觸發條件的檔名或目錄。預設設定下有一種路徑變體自 1.13.0 引入;自訂副檔名或 Windows 路徑另有不同條件。
除了升級,維護者可檢查附件、頭像與匯入檔的存放位置。能放在文件根目錄之外,就交由應用程式或獨立儲存服務提供下載;若保留公開上傳目錄,應確保該路由不會交給 PHP。這比只依檔名後綴判斷安全更可靠。
Caddy:檢查 FastCGI 的身分變數與路徑規則
Caddy 2.11.9 修正一項變數優先順序問題:若維護者用 FastCGI 的 env 設定 HTTP_* 變數,受影響行為容許對應的請求標頭覆蓋該值。只有當應用程式把這類值當作身分或授權依據,才會衍生相應的存取風險。更新後由伺服器配置值優先;應以正常登入與不同權限帳戶驗證應用程式收到的身分。
同版也補上 FastCGI 路徑判斷的缺口:若編碼前後的判斷會選到不同腳本,新版會拒絕這類不明確的請求;Windows 上亦拒絕相關短檔名及替代資料流路徑。若從 2.11.8 升級,順手驗證帶尾斜線的 PHP 目錄首頁,例如 WordPress 後台入口,因為這次也修了該版的目錄索引回歸。
官方公告交代了漏洞條件,未據此確認實際站點已遭入侵。更新後應驗證正常上傳、下載、登入及後台路由;有可疑檔案或請求時,先保留原檔與日誌,再交由維護者調查。
原廠發布日期:2026 年 11 月 5 日。封面為 AI 生成的概念插畫。
