PostgreSQL refint 允许栈缓冲区溢出和 SQL 注入HGVE-2026-E014
文章目录
- 环境
- BUG/漏洞编码
- 症状
- 触发条件
- 解决方案
环境
系统平台:N/A
版本:9.0.3,9.0.4,9.0.5,4.5.8,4.5.10,4.5.11,6.0.4
BUG/漏洞编码
HGVE-2026-E014
症状
PostgreSQL refint 模块中的栈缓冲区溢出,允许非特权数据库用户以运行数据库的操作系统用户身份执行任意代码。另一个独立攻击场景是:如果应用将用户可控列声明为 refint 级联主键,并允许用户控制该列更新,则主键更新值提供者可通过 SQL 注入,以执行主键更新的数据库用户身份执行任意 SQL。PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 之前的版本受影响。
触发条件
漏洞根因包括 refint 模块中的栈缓冲区处理缺陷,以及特定级联主键更新路径中的 SQL 构造缺陷。攻击者可利用用户可控输入触发栈溢出,或在应用允许控制 refint 级联主键更新值时注入 SQL。
解决方案
代码修复应替换 refint 模块中不安全的栈缓冲区写入方式,使用带长度限制的安全拼接和格式化函数,并对输入长度进行边界校验。涉及 SQL 拼接的路径应使用安全引用函数或参数化执行方式,避免把用户可控列名和值直接拼入 SQL。修复后应增加超长输入、特殊字符输入、级联主键更新和普通用户权限边界的回归测试。
安装漏洞补丁包。 下载地址:
v9.0.3,v9.0.4,v9.0.5 :
链接: https://pan.baidu.com/s/15nI0Vgxmy5Yy-hCspSOm2g?pwd=qx2e 提取码: qx2e
V4.5.8,V4.5.10,V4.5.11,V6.0.4:
链接: https://pan.baidu.com/s/1wbOp7Qhb8-pepw7ko63zag?pwd=b56y 提取码: b56y 。