CVE-2026-6477
PostgreSQL libpq 的 lo_* 函数可让服务器超级用户覆盖客户端栈内存
PostgreSQL libpq 的 lo_export()、lo_read()、lo_lseek64() 和 lo_tell64() 使用了本质上不安全的 PQfn(..., result_is_int=0, ...),使服务器超级用户能够用任意长度的响应覆盖客户端栈缓冲区。 与 gets() 类似,该调用会把由服务器决定的任意长度数据写入大小未指定的缓冲区。由于 psql 的 \lo_export 命令和 pg_dump 都会调用 lo_read(),服务器超级用户可覆盖 pg_dump 或 psql 的栈内存。 PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 之前的版本受此问题影响。
版本信息
| 受影响分支 | 引入版本 | 修复版本 | 修复发布日期 |
|---|---|---|---|
| 14 | — | 14.23 | 2026-05-14 |
| 15 | — | 15.18 | 2026-05-14 |
| 16 | — | 16.14 | 2026-05-14 |
| 17 | — | 17.10 | 2026-05-14 |
| 18 | — | 18.4 | 2026-05-14 |
CVSS 3.0
| 总分 | 8.8 |
|---|---|
| 组件 | client |
| 向量 | AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
首次发布: 2026-05-14
历史来源记录
下列记录保留历史来源当时的原始声明,独立于上方核实的修复清单。
center · 2026-10-03 12:08:35.169032+08
- PostgreSQL 18 · 原始小版本坐标: 4
- PostgreSQL 17 · 原始小版本坐标: 10
- PostgreSQL 16 · 原始小版本坐标: 14
- PostgreSQL 15 · 原始小版本坐标: 18
- PostgreSQL 14 · 原始小版本坐标: 23
pgweb · 2026-10-03 12:08:55.967155+08
- PostgreSQL 18 · 原始小版本坐标: 4
- PostgreSQL 17 · 原始小版本坐标: 10
- PostgreSQL 16 · 原始小版本坐标: 14
- PostgreSQL 15 · 原始小版本坐标: 18
- PostgreSQL 14 · 原始小版本坐标: 23