
Splunk Enterprise 是一款企业级实时数据分析和监控平台,主要用于收集、索引和搜索机器生成的数据(如日志、事件、指标等),帮助组织实现安全监控、IT运维管理(ITOps)、应用性能监控和业务分析等场景。它采用分布式架构,支持从本地服务器、云端到混合环境的多种部署方式,通过其强大的搜索处理语言(SPL)让用户能够快速查询和分析海量数据,并借助仪表板、告警和机器学习功能实现自动化洞察与响应,被广泛应用于安全运营中心(SOC)、DevOps 和合规审计等领域。
该漏洞的根因在于 Splunk Enterprise 的 PostgreSQL Sidecar 服务(splunk-postgres)的 HTTP API 端点完全缺少身份认证控制(CWE-306)。该 Sidecar 进程监听在本地回环地址的 5435 端口,但 Splunk 主 Web 应用(监听在所有网络接口的 8000 端口)充当反向代理,将请求转发至 Sidecar API,且未添加任何额外的身份认证层。攻击者可通过以下两个核心端点实现完整的 RCE 利用链:
端点一:/v1/postgres/recovery/backup — 调用 pg_dump 命令,接受 database 和 backupFile 两个参数。backupFile 参数存在路径遍历缺陷,可写入任意文件系统位置;database 参数被直接传递给 pg_dump 的位置参数,而 PostgreSQL 的 libpq 将其解释为连接字符串,攻击者可通过 hostaddr=attacker.db.example.com 将数据库连接重定向至攻击者控制的外部 PostgreSQL 服务器,从而将攻击者控制的数据库转储写入 Splunk 服务器文件系统。
端点二:/v1/postgres/recovery/restore — 调用 pg_restore 命令,将转储文件中的 SQL 语句恢复到本地 Splunk PostgreSQL 实例。攻击者利用 Splunk 本地存储的 .pgpass 凭据文件(路径为 /opt/splunk/var/packages/data/postgres/.pgpass,包含 postgres_admin 用户的明文密码)完成身份认证,使攻击者控制的 SQL 在本地数据库中执行。通过 PostgreSQL 的 lo_export 大对象导出函数,攻击者可将任意内容写入文件系统任意位置。
CVE-2026-20253
10.2.0 <= Splunk Enterprise < 10.2.4
10.0.0 <= Splunk Enterprise < 10.0.7
https://github.com/watchtowrlabs/watchTowr-vs-Splunk-CVE-2026-20253
https://advisory.splunk.com/advisories/SVD-2026-0603