IPBUF安全漏洞报告
English
CVE-2026-6474 CVSS 4.3 中危

CVE-2026-6474 PostgreSQL timeofday()函数格式化字符串漏洞

披露日期: 2026-05-14
来源: f86ef6dc-4d3a-42ad-8f28-e6d5547a5007

漏洞信息

漏洞编号
CVE-2026-6474
漏洞类型
格式化字符串漏洞
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
PostgreSQL

相关标签

格式化字符串信息泄露PostgreSQL内存读取CVE-2026-6474

漏洞概述

PostgreSQL的timeofday()函数存在格式化字符串漏洞。攻击者可通过精心构造的时区参数,利用该函数检索服务器内存部分内容。该漏洞影响PostgreSQL 18.4、17.10、16.14、15.18及14.23之前的多个版本。攻击者需具备低权限即可通过网络无交互利用此漏洞,导致敏感信息泄露风险。

技术细节

该漏洞源于PostgreSQL数据库的`timeofday()`函数在处理时区参数时,未能正确过滤用户输入,导致存在外部控制格式字符串漏洞。攻击者若拥有数据库的低权限账号,可以通过发送精心构造的时区字符串(例如包含特定格式说明符的参数)来调用该函数。由于函数底层实现直接将用户可控的时区数据作为格式化参数传递,攻击者可以利用此行为读取栈上的内存数据。这种攻击方式无需用户交互,且攻击复杂度较低。虽然该漏洞主要影响机密性且CVSS评分为中危,不会直接导致远程代码执行或数据破坏,但泄露的内存内容可能包含数据库连接凭证、内存地址布局或其他上下文敏感信息。这些信息对于攻击者规划后续的高级攻击(如绕过ASLR或构造RCE利用链)具有重要价值。

攻击链分析

STEP 1
1. 权限获取
攻击者获取PostgreSQL数据库的低权限用户访问凭证。
STEP 2
2. Payload构造
攻击者构造包含格式化字符串占位符(如%s, %p)的恶意时区参数。
STEP 3
3. 漏洞触发
攻击者执行SET TIME ZONE命令设置恶意时区,并调用timeofday()函数。
STEP 4
4. 信息泄露
服务器处理请求时将内存数据格式化返回,导致攻击者获取服务器内存片段。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
-- Set a malicious timezone containing format specifiers SET TIME ZONE '%p%n%s%n%x%n'; -- Trigger the vulnerable function to read memory SELECT timeofday();

影响范围

PostgreSQL < 18.4
PostgreSQL < 17.10
PostgreSQL < 16.14
PostgreSQL < 15.18
PostgreSQL < 14.23

防御指南

临时缓解措施
如果无法立即升级,建议严格限制数据库用户的权限,禁止非必要用户修改时区设置或调用特定函数。同时,开启数据库审计日志,监控对timeofday()函数的异常调用及SET TIME ZONE操作,以便及时发现潜在攻击行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表