2025年9月25日: PostgreSQL 18 发布!

CVE-2019-10208

pg_temp 中的 TYPE 在 SECURITY DEFINER 执行期间执行任意 SQL

给定一个合适的 SECURITY DEFINER 函数,攻击者可以在函数所有者的身份下执行任意 SQL。攻击需要对该函数具有 EXECUTE 权限,而该函数本身必须包含一个参数类型不精确匹配的函数调用。例如,length('foo'::varchar)length('foo') 是不精确的,而 length('foo'::text) 是精确的。

作为利用此漏洞的一部分,攻击者使用 CREATE DOMAINpg_temp schema 中创建一个类型。攻击模式和修复方法与 CVE-2007-2138 类似。

编写 SECURITY DEFINER 函数仍然需要遵循文档中提到的注意事项

https://postgresql.ac.cn/docs/current/sql-createfunction.html#SQL-CREATEFUNCTION-SECURITY

PostgreSQL 项目感谢 Tom Lane 报告此问题。

版本信息

受影响版本 已修复版本 修复发布日期
11 11.5 2019 年 8 月 8 日
10 10.10 2019 年 8 月 8 日
9.6 9.6.15 2019 年 8 月 8 日
9.5 9.5.19 2019 年 8 月 8 日
9.4 9.4.24 2019 年 8 月 8 日

有关 PostgreSQL 版本信息 的更多信息,请访问 版本信息页面

CVSS 3.0

总体得分 7.5
组件 核心服务器
向量 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H

报告安全漏洞

如果您希望报告 PostgreSQL 中的新安全漏洞,请发送电子邮件至 security@postgresql.org

如需报告非安全相关错误,请参阅 报告错误 页面。