PostgreSQL Anonymizer 3.3 修補十二個嚴重漏洞,遮罩角色可讀真實資料

PostgreSQL Anonymizer 3.3 修補十二個嚴重漏洞,阻隔角色可讀真實資料

Dalibo 於 2026 年 10 月 27 日宣佈推出 PostgreSQL Anonymizer 3.3,並於 10 月 28 日在 PostgreSQL 官方網站剛出公佈。這個版本修補十二個嚴重漏洞,部分可讓已遮罩角色讀取真實個人資料,個別情況更可取得超級使用者權限。官方明確要求所有用戶儘快升級至 3.3[1]。

漏洞範圍涵蓋讀取與權限提升

十二個 CVE 由 Alexander Kukushkin 與 Ilya Staroverov 報告,覆蓋多個向面:

  • CVE-2026-110181:遮罩角色可透過使用 SQL 標準函數主鍵的函數讀取真實資料
  • CVE-2026-105615:遮罩角色可讀取 pg_stats
  • CVE-2026-105616:密鑰 salt 可在 pg_db_role_setting 中讀取
  • CVE-2026-110183:靜態遮罩完成後,pg_stats 仍保留被遮罩欄位的原始值
  • CVE-2026-105619:經 security_invoker 檢視時不套用遮罩規則
  • CVE-2026-105618:動態遮罩對繼承表失效
  • CVE-2026-110182:anon.partial() 與 anon.partial_email() 可洩露資料
  • CVE-2026-105617:快取執行計劃可繞過透明動態遮罩
  • CVE-2026-105620:可透過子查詢作未授權存取
  • CVE-2026-105612:data-modifying CTE 可繞過唯讀限制
  • CVE-2026-105614:影像相關函數記憶體配置無上限,構成阻斷服務
  • CVE-2026-105613:範圍型 dummy 函數可引致阻斷服務

其中 pg_stats 相關的兩個問題特別值得注意:即使資料表已完成靜態遮罩,統計資料仍可能留下原始值分佈,足以讓具備讀取權限的人推斷敏感內容。

升級帶來的相容性變更

3.3 引入多項限制以修補上述路徑,累積為破壞性變更,升級前必須先測試:

  • 遮罩規則內不再允許子查詢
  • 透明動態遮罩停用函數 inlining
  • 在動態遮罩下,遮罩角色不得執行使用 SQL 標準函數主鍵的函數,包括 citext、earthdistance 等 contrib 擴充內的相關函數

若現有規則依賴子查詢,或依賴上述函數,升級後會直接報錯而非靜默失效。官方同時強烈建議更改 anon.salt 參數的值,因為舊 salt 已被視為可能外洩。

部署形態與影響面

PostgreSQL Anonymizer 提供六種遮罩策略:動態遮罩、靜態遮罩、複製遮罩、備份遮罩、遮罩檢視與遮罩資料包裝器,並可配合替換、鑽機化、偽造、假名化、局部打亂、洗牌、加噪與熵化等函數使用。

專框可透過 Debian 與 RPM 套件、Ansible role、Docker 映像等方式安裝,且可在多家資料庫代管服務上運行,包括阿里雲、Crunchy Bridge、Google Cloud SQL、IBM Cloud、Microsoft Azure Database、Neon 與 Yandex,並見於 EDB Advanced Postgres、Greenplum 與 Yugabyte 等分支支援。反之,3.3 之前的版本在這些環境一律受影響。

建議處理次序

先在測試環境以現有遮罩規則跑一次升級,確認子查詢與 SQL 標準函數主鍵這兩項限制不會中斷服務,再安排正式環境升級。更換 anon.salt 會令之後產生的遮罩值改變,若已有以舊 salt 產生的靜態遮罩資料,需評估是否重跑遮罩流程。除此之外還需清理 pg_stats 中的殘歷史統計、稽核所有遮罩角色的實際權限,並檢查依賴是否自行快取了查詢計劃。

參考資料

[1] PostgreSQL Anonymizer 3.3 : Major Security Update(2026-10-28)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*