PostgreSQL 修補嚴重複製漏洞 (CVE‑2026‑6471)
PostgreSQL 於 8 月 13 日釋出安全更新,修補 CVE‑2026‑6471(CVSS 7.2)——一個允許擁有 REPLICATION(複製)屬性的帳號在資料庫伺服器的作業系統使用者身份下執行任意程式碼的缺口。此漏洞自 2014 年引入 logical decoding(邏輯解碼) 的 9.4 版起即存在,受影響的版本包括 14.24 以前、15.19 以前、16.15 以前、17.11 以前以及 18.6 以前的所有主要分支。
漏洞成因與利用方式
-
前提條件:攻擊者必須持有帶有 REPLICATION 屬性的帳號,且伺服器的
wal_level必須設定為logical(邏輯寫前日誌等級)。備份工具、備援伺服器、CDC(變更資料捕捉)管線以及監控系統常會配置此屬性。 -
核心機制:在
CREATE_REPLICATION_SLOT指令中提供的插件名稱會直接傳遞給載入函式,未經路徑驗證。因為複製協定的解析器允許在雙引號內使用任何字元,包括路徑分隔符與../路徑穿越,攻擊者可以指定完整檔案路徑。 -
平台差異
-
Windows:伺服器會解析為 SMB(Server Message Block)網路路徑,從攻擊者控制的機器載入惡意 DLL,且不會在目標機寫入檔案。
-
Linux / macOS:若系統啟用了 NFS(Network File System)自動掛載,亦可透過遠端掛載取得惡意共享庫;其他情況則需事先取得寫入目標磁碟的途徑。
-
-
載入的惡意插件會在資料庫後端程序中以
postgres作業系統使用者身份執行,測試中已成功將複製帳號提升為 PostgreSQL 超級使用者,並植入三項可在重啟後仍存活的持久化機制。
此漏洞由 Vladimir Tokarev 與 Yu Kunpeng 向 PostgreSQL 全球開發小組回報,Cyera Research 於 9 月 1 日發表的報告將其命名為 PostGREShell。
修補措施
更新版在 18.6 發行說明中加入了伺服器參數 output_plugin_libraries,以白名單方式限定允許載入的邏輯解碼輸出插件,預設僅允許 pgoutput 與 test_decoding。使用其他插件(如 wal2json、decoderbufs)的環境在升級後會被拒絕載入,除非管理員手動將相應庫加入白名單並重新載入設定。
影響與未來展望
- 企業環境:許多備份與資料同步解決方案依賴 REPLICATION 帳號與
logical設定,升級後必須檢視插件清單,避免服務中斷。 - 安全防護:此案突顯了「路徑驗證」與「最小權限」的重要性;未來 PostgreSQL 可能會進一步加強對非超級使用者的插件載入限制。
- 使用者行動:建議立即套用 14.24、15.19、16.15、17.11、18.6 以上的安全更新,並檢查
output_plugin_libraries配置是否符合實際需求;同時審核所有具 REPLICATION 屬性的帳號,確保僅授予必要的備份或同步任務。
此漏洞的修補不僅提升了 PostgreSQL 在企業級部署中的安全韌性,也提醒所有資料庫管理者:在啟用高階複製功能時,必須同步檢視權限、插件來源與網路檔案系統的存取策略,以免成為未授權程式碼的入口。
