CVE-2026-9617PostgreSQL Anonymizer存在安全漏洞,允许用户通过创建表并在列标识符中插入恶意代码来获取超级用户权限。当超级用户调用k-anonymity函数时,恶意代码将以超级用户权限执行。该漏洞在PostgreSQL 14中风险较高,在PostgreSQL 15及更高版本中需显式CREATE TABLE权限。
该漏洞的核心在于PostgreSQL Anonymizer组件在处理数据库列标识符时缺乏严格的输入验证和转义机制。攻击者利用这一缺陷,首先需要在数据库中拥有CREATE TABLE权限,随后创建一个精心构造的表,将恶意SQL代码嵌入到列名定义中。当数据库超级用户调用k-anonymity(k-匿名)函数对该表进行数据脱敏处理时,该函数在内部动态构建SQL语句并解析列标识符。由于未经安全过滤,嵌入在列名中的恶意代码被数据库服务器直接执行。因为函数是在超级用户的权限上下文中运行的,所以恶意代码也继承了超级用户权限,从而允许攻击者执行任意数据库管理操作,成功实现权限提升。值得注意的是,PostgreSQL 15及以后版本默认撤销了public schema的创建权限,这在一定程度上限制了攻击面,但针对显式授权的用户仍存在高风险。