8.8High
未列入 CISA KEV
PoC 狀態未確認
三句重點
- 成因
- pg_restore 處理 custom、tar、directory 等非 plain archive 時未充分驗證 TOC 與成員內容。
- 影響
- 以執行 pg_restore 的作業系統使用者身分,在本機解析 archive 時執行任意程式碼。
- 條件
- 攻擊者將惡意非 plain archive 交給受害者或自動化還原流程後,由對方執行 pg_restore。
版本比對
| 套件 | ❌ 受影響版本 | ✅ 安全版本 |
|---|---|---|
| PostgreSQL pg_restore | 14.x < 14.25;15.x < 15.20;16.x < 16.16;17.x < 17.12;18.x < 18.7 | >= 18.7、17.12、16.16、15.20、14.25 |
修補方式
升級至 18.7、17.12、16.16、15.20、14.25 以上版本。
攻擊思路
- 惡意檔案投遞:攻擊者將特製的 custom、tar 或 directory 格式 archive,經下載、郵件、CI artifact、備份還原介面或物件儲存等方式交給執行端。 來源
- 執行 pg_restore:受害者或自動化流程對該非 plain archive 執行 pg_restore。不需先登入目標 PostgreSQL 伺服器;程式碼執行發生在本機行程解析 archive 時。 來源
- Archive 解析:pg_restore 先前信任 archive 內容,惡意 TOC 或成員可造成越界讀寫;目錄格式還可能以 TOC 內路徑與符號連結讀取 archive 目錄外的檔案。 來源
- 本機程式碼執行:成功時以執行 pg_restore 的作業系統使用者身分執行任意程式碼。攻擊面是客戶端工具,不是 postmaster 本身。 來源
偵測提示
- 客戶端 pg_restore 執行紀錄:對未信任來源的 custom、tar、directory archive 執行還原,尤其是自動化備份還原、CI 與還原介面。
- 客戶端套件與映像版本:實際執行 pg_restore 的 postgresql-client、pgAdmin 內建工具與 CI 映像是否已達 18.7、17.12、16.16、15.20 或 14.25。
- dump 檔傳輸通道:檢查 HTTP/S、SMB、郵件、SFTP 等通道上的 archive 投遞。網路上通常只看得到檔案傳輸,無法從封包判斷還原是否成功。
- 目錄格式還原行為:注意還原 directory archive 時是否存取 archive 目錄以外的檔案,或跟隨非預期的符號連結。
- pg_restore 行程異常:官方指出損毀 archive 仍可能讓 pg_restore 崩潰,且不在本次安全修補範圍;應將異常終止納入監控。
暫時緩解
將 PostgreSQL(含客戶端套件)更新至 18.7、17.12、16.16、15.20 或 14.25;僅更新伺服器、未更新實際執行 pg_restore 的客戶端仍會受影響。請勿對未信任來源的 custom、tar、directory archive 執行 pg_restore,並限制可執行帳號與自動化工作。改用 plain SQL dump 可避開本 CVE,但仍可能落入 psql meta-command 類問題。
通報團隊
複製成可直接貼到 Slack 或 Email 的通報文字。
預覽通報內容
🚨【資安漏洞通報】CVE-2026-116314 等級:High (8.8) 受影響套件:PostgreSQL pg_restore 14.x < 14.25;15.x < 15.20;16.x < 16.16;17.x < 17.12;18.x < 18.7 漏洞簡述:pg_restore 處理 custom、tar、directory 等非 plain archive 時未充分驗證 TOC 與成員內容。;以執行 pg_restore 的作業系統使用者身分,在本機解析 archive 時執行任意程式碼。;攻擊者將惡意非 plain archive 交給受害者或自動化還原流程後,由對方執行 pg_restore。 建議措施:升級至 18.7、17.12、16.16、15.20、14.25 以上版本 詳細連結:https://cve.eacc.online/cve/CVE-2026-116314
參考連結
- https://www.postgresql.org/support/security/CVE-2026-116314/
- https://www.postgresql.org/about/news/postgresql-187-1712-1616-1520-1425-and-19-rc-2-released-3442/
- https://www.postgresql.org/docs/release/18.7/
- https://www.cve.org/CVERecord?id=CVE-2026-116314
- https://nvd.nist.gov/vuln/detail/CVE-2026-116314