回最新 CVE 列表

CVE-2026-116331 PostgreSQL min/max 聚合 SORTOP 最佳化型別混淆可執行任意程式碼

揭露日期 2026-11-12CVSS 3.1:CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

對象資安IT開發

CWE-843 CWE-843

未列入 CISA KEV

PoC 狀態未確認

三句重點

成因
帶 SORTOP 的聚合被盲目改寫為 MinMaxAggPath,輸入與結果型別不符時發生型別混淆。
影響
已驗證且能建立物件者可以資料庫作業系統使用者身分執行任意程式碼。
條件
需通過身分驗證並能建立暫時或非暫時物件;建立聚合另需型別 USAGE 與函式 EXECUTE。

版本比對

套件❌ 受影響版本✅ 安全版本
PostgreSQL18.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 以上版本。

攻擊思路

  1. 取得物件建立能力:攻擊者需已通過身分驗證,且能建立暫時物件,或在至少一個 schema 建立非暫時物件。 來源
  2. 宣告不符型別聚合:建立單引數且帶 SORTOP 的自訂聚合,使宣告結果型別與輸入型別不同,planner 仍可能將其視為 MIN/MAX。 來源
  3. 觸發索引掃描最佳化:目標欄位需有可用 B-tree 索引,且 SORTOP 為該 opclass 的小於或大於策略成員,MinMaxAggPath 才會真正生效。 來源
  4. 型別混淆執行程式碼:查詢走 MinMaxAggPath 時直接回傳輸入欄位,並以不同的結果型別解讀,可能以 backend 作業系統使用者身分執行任意程式碼。 來源

偵測提示

暫時緩解

升級至 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

參考連結

同套件的其他 CVE