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 之前的版本受此问题影响。
| 影响版本 | 修复于 | 修复发布 |
|---|---|---|
| 18 | 18.4 | 2026年5月14日 |
| 17 | 17.10 | 2026年5月14日 |
| 16 | 16.14 | 2026年5月14日 |
| 15 | 15.18 | 2026年5月14日 |
| 14 | 14.23 | 2026年5月14日 |
有关 PostgreSQL 版本策略的更多信息,请访问版本策略页面。
| 总分 | 8.8 |
|---|---|
| 组件 | client |
| 向量 | AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
如果您希望报告 PostgreSQL 中的新安全漏洞,请发送电子邮件至 security@postgresql.org。
如需报告非安全性 Bug,请参阅报告 Bug 页面。