PostgreSQL libpq lo_* 函数允许服务器超级用户覆盖客户端栈内存HGVE-2026-E011

文章目录

环境

系统平台: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-E011

症状

PostgreSQL libpq 的 lo_export()、lo_read()、lo_lseek64() 和 lo_tell64() 函数使用了本质上危险的 PQfn(..., result_is_int=0, ...) 函数,允许服务器超级用户用任意大的响应覆盖客户端栈缓冲区。与 gets() 类似,PQfn(..., result_is_int=0, ...) 会把由服务器决定的任意长度数据存入大小未指定的缓冲区。由于 psql 的 \lo_export 命令和 pg_dump 都会调用 lo_read(),服务器超级用户可以覆盖 pg_dump 或 psql 的栈内存。PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 之前的版本受影响。

触发条件

漏洞根因是 libpq 的 lo_export()、lo_read()、lo_lseek64() 和 lo_tell64() 等大对象函数调用 PQfn(..., result_is_int=0, ...) 时未提供可靠的目标缓冲区大小约束。服务端可返回任意长度的数据,客户端将其写入栈缓冲区,导致栈内存被覆盖。

解决方案

代码修复应移除或改造危险的 PQfn(..., result_is_int=0, ...) 使用方式,为服务端返回数据设置明确长度上限,并在写入客户端缓冲区前校验返回长度。lo_* 函数应使用带长度参数的安全缓冲区接口,拒绝超过目标缓冲区容量的响应。pg_dump、psql 等调用方也应同步使用修复后的 libpq 接口。修复后应增加恶意超长响应的客户端回归测试,确认不会发生栈内存覆盖。

安装漏洞补丁包。 下载地址:

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 。

相关推荐
笃行35010 小时前
【金仓数据库产品体验官】订单增量同步实战:MERGE、OUTPUT 与 IDENTITY 的兼容验证
数据库
火云代理11 小时前
同一个网站,有的网络能打开、有的打不开?认识 IPv4 与 IPv6 的访问差异
服务器·网络·网络协议·tcp/ip·测试工具·php·状态模式
坤坤子吖11 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
星恒随风13 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
无足鸟ICT14 小时前
【RHCA+】IO调度算法
linux·服务器
wacsii14 小时前
【Linux进程(四)】命令行参数与环境变量
linux·服务器
无奈笑天下14 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
xiaoye-duck15 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
科研邪修法16 小时前
培训PDF保护配置:把需求转换成可验收权限
linux·服务器·网络
AllData公司负责人16 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析