8.8High
未列入 CISA KEV
PoC 狀態未確認
三句重點
- 成因
- 帶 SORTOP 的聚合被盲目改寫為 MinMaxAggPath,輸入與結果型別不符時發生型別混淆。
- 影響
- 已驗證且能建立物件者可以資料庫作業系統使用者身分執行任意程式碼。
- 條件
- 需通過身分驗證並能建立暫時或非暫時物件;建立聚合另需型別 USAGE 與函式 EXECUTE。
版本比對
| 套件 | ❌ 受影響版本 | ✅ 安全版本 |
|---|---|---|
| PostgreSQL | 18.x < 18.7;17.x < 17.12;16.x < 16.16;15.x < 15.20;14.x 及更早未修補大版本 < 14.25 | >= 18.7 / 17.12 / 16.16 / 15.20 / 14.25 |
修補方式
升級至 18.7 / 17.12 / 16.16 / 15.20 / 14.25 以上版本。
攻擊思路
偵測提示
- pg_aggregate 系統目錄:檢視自訂聚合是否同時帶有 SORTOP,且輸入型別與結果型別不同。
- 角色權限與 schema CREATE:檢查哪些角色可建立暫時物件,或在至少一個 schema 建立非暫時物件。
- PostgreSQL 版本:確認執行中的伺服器是否已達 18.7、17.12、16.16、15.20 或 14.25。
- 稽核日誌與 log_statement:關注已驗證工作階段中建立或取代帶 SORTOP 的聚合,以及隨後對索引欄執行該聚合查詢。
- 查詢計畫:留意語意等同 MIN/MAX 的聚合是否被改寫為對輸入欄做索引掃描並 LIMIT 1 的 MinMaxAggPath。
- CREATE AGGREGATE 權限:確認角色對相關引數、狀態與回傳型別是否具 USAGE,以及對支援函式是否具 EXECUTE。
暫時緩解
升級至 PostgreSQL 18.7、17.12、16.16、15.20 或 14.25(或更新);小版本升級不需 dump/restore。官方無完整 workaround。可縮小能建立物件(含暫時物件)的角色範圍,並檢視帶 SORTOP 且輸入與結果型別不同的自訂聚合。PostgreSQL 15 起預設收回 public schema 的 PUBLIC CREATE,暫時物件仍可滿足前提,不能視為完整緩解。PostgreSQL 14 於 14.25 之後 EOL,建議再規劃升到仍受支援的大版本。
通報團隊
複製成可直接貼到 Slack 或 Email 的通報文字。
預覽通報內容
🚨【資安漏洞通報】CVE-2026-116331 等級:High (8.8) 受影響套件:PostgreSQL 18.x < 18.7;17.x < 17.12;16.x < 16.16;15.x < 15.20;14.x 及更早未修補大版本 < 14.25 漏洞簡述:帶 SORTOP 的聚合被盲目改寫為 MinMaxAggPath,輸入與結果型別不符時發生型別混淆。;已驗證且能建立物件者可以資料庫作業系統使用者身分執行任意程式碼。;需通過身分驗證並能建立暫時或非暫時物件;建立聚合另需型別 USAGE 與函式 EXECUTE。 建議措施:升級至 18.7 / 17.12 / 16.16 / 15.20 / 14.25 以上版本 詳細連結:https://cve.eacc.online/cve/CVE-2026-116331
參考連結
- https://www.postgresql.org/support/security/CVE-2026-116331/
- https://www.cve.org/CVERecord?id=CVE-2026-116331
- https://www.postgresql.org/about/news/postgresql-187-1712-1616-1520-1425-and-19-rc-2-released-3442/
- https://www.postgresql.org/docs/15/release-15-20.html
- https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=d35f66916