IPBUF安全漏洞报告
English
CVE-2026-6638 CVSS 3.7 低危

CVE-2026-6638 PostgreSQL逻辑复制SQL注入漏洞

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

漏洞信息

漏洞编号
CVE-2026-6638
漏洞类型
SQL注入
CVSS评分
3.7 低危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
PostgreSQL

相关标签

SQL注入PostgreSQL数据库安全逻辑复制CVE-2026-6638

漏洞概述

PostgreSQL在逻辑复制功能中存在SQL注入漏洞。具体而言,`ALTER SUBSCRIPTION ... REFRESH PUBLICATION`命令未能正确清理由订阅者创建的表相关参数。这使得订阅者端的表创建者能够利用该漏洞,在发布端执行任意SQL代码。攻击者利用该漏洞可以订阅发布端的凭据权限进行恶意操作。

技术细节

该漏洞位于PostgreSQL的逻辑复制模块中。当管理员在订阅端执行`ALTER SUBSCRIPTION ... REFRESH PUBLICATION`时,PostgreSQL会向发布端请求表的元数据并同步数据。由于代码在处理表名等参数时缺乏严格的输入验证,攻击者可以在订阅端创建包含恶意SQL代码的表名(例如通过表名注入)。当刷新操作触发时,发布端会将这些恶意参数拼接到SQL查询中执行。由于进程运行在发布端的权限上下文中,且使用的是订阅配置中的发布端凭据,攻击者可以借此以发布者身份执行任意SQL语句,造成数据泄露或完整性破坏。该漏洞仅影响PostgreSQL 16、17和18的特定旧版本,且需要攻击者具备创建表的权限以及特定的用户交互(触发刷新),因此攻击难度相对较高,但在特定环境下危害较大。

攻击链分析

STEP 1
1. 获取访问权限
攻击者获取PostgreSQL订阅者端(Subscriber)的数据库访问权限,并具备创建表的低权限(PR:L)。
STEP 2
2. 构造恶意对象
攻击者在订阅者数据库中创建一个特制的表,表名中包含SQL注入载荷(Payload)。
STEP 3
3. 触发同步机制
攻击者等待或诱导管理员执行`ALTER SUBSCRIPTION ... REFRESH PUBLICATION`命令,或者如果有脚本自动执行该操作。
STEP 4
4. 执行注入代码
发布端(Publisher)在处理刷新请求时,将未经过滤的表名拼接到SQL语句中并执行,导致攻击者以发布端凭据权限执行任意SQL。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
-- Step 1: On the subscriber, create a table with a malicious name containing SQL payload -- The payload attempts to execute a simple statement (e.g., sleep or a notice) CREATE TABLE "public.users; SELECT pg_sleep(5); --" (id INT); -- Step 2: Trigger the vulnerability by forcing a publication refresh -- This causes the publisher to fetch table metadata and execute the injected SQL ALTER SUBSCRIPTION my_subscription REFRESH PUBLICATION;

影响范围

PostgreSQL 18 < 18.4
PostgreSQL 17 < 17.10
PostgreSQL 16 < 16.14

防御指南

临时缓解措施
在应用补丁前,应严格限制订阅者创建表的权限,避免使用不受信任的订阅者连接。同时,密切监控逻辑复制的`REFRESH PUBLICATION`操作日志,以检测潜在的异常行为。

参考链接

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