Splunk Enterprise versions 10.2.0 through 10.2.6 and 10.4.0 through 10.4.2 expose the Patroni REST API (PostgreSQL sidecar) on SHC members without authentication. An unauthenticated attacker can PATCH /config to set a malicious archive_command and POST /restart to trigger it, achieving remote code execution with the privileges of the PostgreSQL process via the classic Patroni RCE chain.
id: CVE-2026-76268
info:
name: Splunk Enterprise Patroni REST API - Missing Authentication RCE
author: DhiyaneshDk
severity: critical
description: |
Splunk Enterprise versions 10.2.0 through 10.2.6 and 10.4.0 through 10.4.2 expose the Patroni REST API (PostgreSQL sidecar) on SHC members without authentication. An unauthenticated attacker can PATCH /config to set a malicious archive_command and POST /restart to trigger it, achieving remote code execution with the privileges of the PostgreSQL process via the classic Patroni RCE chain.
impact: |
An unauthenticated attacker with network access to the Patroni port can achieve remote code execution on the Splunk Enterprise server through PostgreSQL archive_command injection.
remediation: |
Upgrade Splunk Enterprise to version 10.2.7 or 10.4.3 or later.
reference:
- https://advisory.splunk.com/advisories/SVD-2026-1001
- https://pocbit.org/pocs/cve-2026-76268
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2026-76268
epss-score: 0.004
epss-percentile: 0.32615
cwe-id: CWE-306
metadata:
verified: true
max-request: 2
vendor: splunk
product: splunk_enterprise
shodan-query: html:"patroni"
fofa-query: body="patroni"
tags: cve,cve2026,splunk,patroni,postgresql,rce,unauth,misconfig
flow: http(1) && http(2)
http:
- raw:
- |
GET /patroni HTTP/1.1
Host: {{Hostname}}
Accept: application/json
matchers:
- type: dsl
internal: true
dsl:
- 'contains_all(body, "\"patroni\"", "\"state\"", "\"role\"")'
- 'status_code == 200'
condition: and
- raw:
- |
GET /config HTTP/1.1
Host: {{Hostname}}
Accept: application/json
matchers:
- type: dsl
dsl:
- 'contains(body, "\"postgresql\"")'
- 'status_code == 200'
condition: and
# digest: 4a0a00473045022034b275a826e8d03d0f74f0652a5c1fd156325bcfc0181c2a77eadd6ad978cb74022100c3a66a1ef22828f54f57ac7284174cc331402d0b557b2fa1e1ea8addfaca7579:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.