
비파괴적 PostgreSQL 취약점 점검 도구로, CVE-2026-6471을 대상으로 합니다. 서버 버전과 REPLICATION 권한을 감사하여 논리적 디코딩 인증 결함에 대한 노출 여부를 식별하고, 수정 지침을 제공합니다.
CVE-2026-6471을 위한 방어적이고 비파괴적인 취약점 점검 도구
CVE-2026-6471은 논리적 디코딩(logical decoding) 하위 시스템과 관련된 PostgreSQL 권한 부여 취약점입니다.
이 취약점은 슈퍼유저 권한은 없지만 REPLICATION 권한을 보유한 PostgreSQL 역할이 PostgreSQL 서버로 하여금 PostgreSQL 운영체제 계정이 접근할 수 있는 공격자 제어 라이브러리를 로드하도록 유발할 수 있습니다.
성공적인 악용 시 PostgreSQL 서버 프로세스의 권한으로 임의 코드 실행이 가능할 수 있습니다.
이 저장소는 승인된 보안 평가를 위해 설계된 안전한 탐지 PoC를 제공합니다.
⚠️ 점검 도구는 악성 공유 라이브러리를 로드하지 않으며 운영체제 명령을 실행하지 않습니다.
| 속성 | 값 |
|---|---|
| CVE | CVE-2026-6471 |
| 제품 | PostgreSQL |
| 구성 요소 | 논리적 디코딩 (Logical Decoding) |
| CWE | CWE-862 — 누락된 권한 부여 (Missing Authorization) |
| CVSS v3.1 | 7.2 높음 (High) |
| 공격 경로 | 네트워크 (Network) |
| 공격 복잡성 | 낮음 (Low) |
| 필요 권한 | 높음 (High) |
| 사용자 상호작용 | 없음 (None) |
| 기밀성 영향 | 높음 (High) |
| 무결성 영향 | 높음 (High) |
| 가용성 영향 | 높음 (High) |
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
취약한 조건에서 이미 필요한 복제 기능을 가진 PostgreSQL 계정을 보유한 공격자는 데이터베이스에서 운영체제로의 권한 경계를 넘어설 수 있습니다.
┌──────────────────────┐
│ PostgreSQL 사용자 │
│ REPLICATION = YES │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ 논리적 디코딩 │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ 누락된 권한 부여 검증 │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ 라이브러리 로딩 │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ PostgreSQL OS 사용자 │
└──────────────────────┘
실제 영향은 PostgreSQL 운영체제 계정의 권한과 파일시스템 권한에 크게 좌우됩니다.
PostgreSQL 프로젝트의 보안 권고는 다음 영향을 받는 브랜치를 식별합니다:
| 브랜치 | 영향 받는 버전 | 수정 버전 |
|---|---|---|
| PostgreSQL 14 | < 14.24 | 14.24 |
| PostgreSQL 15 | < 15.19 | 15.19 |
| PostgreSQL 16 | < 16.15 | 16.15 |
| PostgreSQL 17 | < 17.11 | 17.11 |
| PostgreSQL 18 | < 18.6 | 18.6 |
사용 중인 PostgreSQL 브랜치에 대해 사용 가능한 최신 보안 릴리스로 업그레이드하십시오.
이 프로젝트는 의도적으로 비파괴적 검사만 수행합니다.
점검 도구는 다음을 확인해야 합니다:
REPLICATION 권한이 있는지 여부SELECT
version() AS postgres_version,
current_user AS current_user,
rolsuper AS is_superuser,
rolreplication AS has_replication
FROM pg_roles
WHERE rolname = current_user;
출력 예시:
postgres_version : PostgreSQL 17.x
current_user : security_audit
is_superuser : f
has_replication : t
취약한 버전과 REPLICATION 권한이 결합된 경우 수정이 필요한 것으로 처리해야 합니다.
PoC는 다음 워크플로우를 따릅니다:
┌───────────────┐
│ PostgreSQL │
│ 연결 │
└───────┬───────┘
│
▼
┌─────────────────┐
│ 서버 버전 확인 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 현재 역할 확인 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ REPLICATION │
│ 권한 확인 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 수정 버전과 │
│ 비교 │
└────────┬────────┘
│
┌───────┴────────┐
▼ ▼
잠재적 취약 영향 없음
❌ 공격자 제어 .so 로드
❌ 임의 SQL 페이로드 실행
❌ 운영체제 명령 실행
❌ 리버스 셸 생성
❌ PostgreSQL 구성 수정
❌ 파일시스템 내용 수정
❌ 지속성 생성
❌ 프로덕션 시스템 악용
이로 인해 점검 도구는 통제된 취약점 평가 및 인벤토리 워크플로우에 적합합니다.
저장소를 클론합니다:
git clone https://github.com/<YOUR-USERNAME>/CVE-2026-6471.git
cd CVE-2026-6471
필요한 Python 종속성을 설치합니다:
python3 -m pip install psycopg2-binary
점검 도구를 실행합니다:
python3 CVE-2026-6471.py
예시:
╔════════════════════════════════════════════════════╗
║ CVE-2026-6471 SAFE CHECK ║
║ PostgreSQL Logical Decoding Audit ║
╚════════════════════════════════════════════════════╝
[+] PostgreSQL에 연결 중...
[+] 서버 버전 : PostgreSQL 17.x
[+] 현재 역할 : security_audit
[+] 슈퍼유저 : False
[+] 복제 권한 : True
[!] PostgreSQL 버전에 보안 업데이트 필요
[!] REPLICATION 권한 감지됨
[!] 잠재적 취약 상태
[!] PostgreSQL을 수정 버전으로 업그레이드하십시오.

관리자는 복제 권한이 있는 역할을 다음으로 검사할 수 있습니다:
SELECT
rolname,
rolsuper,
rolreplication
FROM pg_roles
WHERE rolreplication = true;
반환된 모든 계정을 검토하십시오.
계정에 복제 권한이 필요하지 않은 경우 운영 요구 사항에 따라 불필요한 권한을 제거하십시오.
적절한 수정 릴리스를 설치합니다:
14.24+
15.19+
16.15+
17.11+
18.6+
최소 수정 버전에서 멈추지 말고 사용 가능한 최신 PostgreSQL 보안 릴리스를 선호하십시오.
복제 기능이 있는 계정을 식별합니다:
SELECT
rolname,
rolreplication
FROM pg_roles
WHERE rolreplication = true;
불필요한 복제 권한을 제거합니다:
ALTER ROLE <role_name> NOREPLICATION;
역할이 합법적인 복제 인프라에 필요하지 않은지 확인한 후에만 권한 변경을 수행하십시오.
특별히 다음에 주의하십시오:
SUPERUSER
REPLICATION
LOGIN
CREATEDB
CREATEROLE
가능한 모든 곳에서 최소 권한 원칙을 사용하십시오.
간소화된 개념적 구현:
if postgres_version_is_affected:
if role_has_replication:
if not role_is_superuser:
report("POTENTIALLY VULNERABLE")
else:
report("AFFECTED VERSION - SUPERUSER CONTEXT")
else:
report("AFFECTED VERSION - REPLICATION NOT PRESENT")
else:
report("NOT AFFECTED")
점검 도구의 목적은 노출 식별이지 악용이 아닙니다.
| 결과 | 의미 |
|---|---|
| 🟢 영향 없음 (NOT AFFECTED) | PostgreSQL이 수정 버전을 실행 중 |
| 🟡 업데이트 필요 (UPDATE REQUIRED) | 버전이 영향 받는 브랜치 내에 있음 |
| 🟠 복제 권한 감지 (REPLICATION DETECTED) | 현재 역할에 복제 기능이 있음 |
| 🔴 잠재적 취약 (POTENTIALLY VULNERABLE) | 영향 받는 버전 + 관련 권한 |
| ⚪ 접근 권한 부족 (INSUFFICIENT ACCESS) | 스캐너가 필요한 역할 정보를 검사할 수 없음 |
REPLICATION 역할을 감사하십시오. INTERNET
│
▼
┌─────────────┐
│ 방화벽 │
└──────┬──────┘
│
▼
┌─────────────┐
│ PostgreSQL │
│ 서버 │
└──────┬──────┘
│
┌─────────┴─────────┐
▼ ▼
최소 권한 모니터링
│ │
▼ ▼
역할 제어 SIEM / 알림
PostgreSQL 네트워크 노출을 제한하고 데이터베이스 서비스를 신뢰할 수 없는 네트워크에 직접 노출하지 마십시오.
권장 테스트 설정:
┌───────────────────────────────────┐
│ 격리된 실험실 네트워크 │
│ │
│ ┌────────────┐ ┌────────────┐ │
│ │ 스캐너 │──▶│ PostgreSQL │ │
│ │ 머신 │ │ 테스트 호스트│ │
│ └────────────┘ └────────────┘ │
│ │
│ 프로덕션 시스템 없음 │
└───────────────────────────────────┘
보안 도구를 검증할 때 일회용 PostgreSQL 설치 또는 전용 실험실 환경을 사용하십시오.
이 프로젝트는 방어적 보안 연구, 취약점 평가 및 승인된 테스트만을 위한 것입니다.
포함된 방법론은 취약점을 무기화하지 않고 잠재적으로 취약한 PostgreSQL 설치를 식별하도록 설계되었습니다.
소유하지 않았거나 명시적 평가 권한이 없는 시스템에 대해 이 프로젝트를 사용하지 마십시오.
저자는 이 프로젝트로 인한 오용, 손상, 데이터 손실, 서비스 중단 또는 무단 접근에 대해 책임을 지지 않습니다.
사이버 보안 연구 • 취약점 분석 • 방어적 도구 개발
연구 → 검증 → 문서화 → 수정
기여를 환영합니다.
개선 사항을 제출할 때:
이 프로젝트가 보안 연구에 도움이 되었다면 ⭐을 주는 것을 고려해 주세요