Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-14669 — CVE-2026-14669에 대한 PoC 익스플로잇: PostgreSQL의 to_char() 시간대 약어 힙 버퍼 오버플로우로, 정보 유출과 ROP 체인을 통해 RCE를 가능하게 합니다. Docker 랩과 자동화된 PoC를 포함합니다. | Kitploit
도구/GitHubGitHub/hackspeak/cve-2026-14669
Vulnerability AnalysisExploitationPenetration TestingPayload DevelopmentDatabase SecurityBinary ExploitationLabs & Practice
GitHubhackspeak/cve-2026-14669

CVE-2026-14669

CVE-2026-14669에 대한 PoC 익스플로잇: PostgreSQL의 to_char() 시간대 약어 힙 버퍼 오버플로우로, 정보 유출과 ROP 체인을 통해 RCE를 가능하게 합니다. Docker 랩과 자동화된 PoC를 포함합니다.

저장소 보기
31422일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-14669 - PostgreSQL to_char() 시간대 약어 힙 버퍼 오버플로

PostgreSQL to_char() 함수는 시간대 형식화를 처리할 때 힙 버퍼 오버플로 취약점이 존재합니다. 공격자는 과도하게 긴 POSIX 시간대 약어를 설정하여 25바이트 고정 버퍼의 경계를 벗어난 쓰기를 트리거할 수 있으며, 정보 유출 및 ROP 체인과 결합하여 원격 코드 실행을 달성할 수 있습니다.

취약점 정보

  • CVE 번호: CVE-2026-14669
  • CVSS 점수: 8.8 (높음)
  • 취약점 유형: 힙 버퍼 오버플로 → 원격 코드 실행
  • 영향 구성 요소: PostgreSQL to_char(timestamptz) 함수
  • 발견 팀: V12 Security

영향을 받는 버전

PostgreSQL 시리즈영향 범위
18.x18.0 – 18.5
17.x17.0 – 17.10
16.x16.0 – 16.14
15.x15.0 – 15.18
14.x14.0 – 14.23

수정 버전

  • PostgreSQL 18.6+
  • PostgreSQL 17.11+
  • PostgreSQL 16.15+
  • PostgreSQL 15.19+
  • PostgreSQL 14.24+

취약점 원리

formatting.c의 DCH_TZ / DCH_tz 처리 경로는 25바이트 고정 스택 버퍼를 사용하여 시간대 약어를 저장하지만 입력 길이에 대한 검사가 전혀 없습니다. 시간대 약어가 24바이트를 초과하면 strcpy()가 힙 메모리에 경계를 벗어난 쓰기를 수행합니다.

트리거 경로:

root@kitploit:~
SET TIME ZONE '<超长缩写>+00';
SELECT to_char(now()::timestamptz, 'TZ');
  ↓
DCH_to_char() → DCH_from_char_action()
  ↓
strcpy(buf, tmtcTzn(...))  ← 堆溢出

이용 조건

  • 유효한 데이터베이스 인증 자격 증명 (USAGE 수준 최소 권한)
  • TCP로 접근 가능한 데이터베이스 포트
  • SQL 문을 실행할 수 있어야 함

전체 이용 체인

V12 Security의 PoC는 세 단계로 구성됩니다:

1단계: 정보 유출

힙 오버플로를 통해 인접한 힙 객체를 손상시키고 PIE 베이스 주소와 힙 포인터를 유출하여 ASLR을 무력화합니다.

2단계: ROP 체인 구성

대형 객체(large object) 또는 bytea 필드를 이용해 힙에 ROP 가젯 체인을 배치합니다.

3단계: 제어 흐름 탈취

두 번째 오버플로로 힙의 함수 포인터를 덮어써 ROP 체인으로 점프하여 임의 명령을 실행합니다(postgres 사용자 권한으로).

PoC 파일

  • poc.py - 전체 이용 스크립트(210줄, PostgreSQL 19beta1 대상)
  • requirements.txt - Python 종속성(psycopg, pwntools)
  • docker-compose.yml - 취약점 테스트 환경

사용 방법

1. 테스트 환경 시작

root@kitploit:~
docker-compose up -d

컨테이너 시작이 완료될 때까지 기다립니다(헬스 체크 통과):

root@kitploit:~
docker logs pg-tzlab

2. 의존성 설치

root@kitploit:~
pip install -r requirements.txt

3. PoC 실행

root@kitploit:~
python3 poc.py

기본적으로 127.0.0.1:55432에 연결하며 사용자 이름은 postgres, 비밀번호는 postgres입니다.

이용에 성공하면 컨테이너 로그에서 명령 실행 출력을 확인할 수 있습니다:

root@kitploit:~
docker logs pg-tzlab | grep PWNED

4. 사용자 지정 구성

poc.py의 다음 상수를 편집하세요:

  • HOST, PORT - 대상 주소
  • DEFAULT_COMMAND - 실행할 명령

⚠️ 중요: 이 PoC는 특정 빌드의 오프셋 주소(postgres:19beta1 Docker 이미지 sha256:a6bdd01...)를 하드코딩합니다. 다른 버전에서는 gadget을 다시 찾아야 합니다.

완화 조치

  1. 즉시 업그레이드하여 수정 버전 적용(가장 효과적)
  2. 네트워크 격리: 데이터베이스 포트를 신뢰할 수 있는 호스트에만 공개
  3. 계정 최소화: 불필요한 계정 정리 및 강력한 비밀번호 강제
  4. 모니터링 및 알림: 과도하게 긴 SET TIME ZONE 문(> 50자) 모니터링

면책 조항

⚠️ 본 PoC는 보안 연구, 취약점 검증 및 방어적 테스트 목적으로만 사용해야 합니다.

  • 폐기 가능한 테스트 환경(Docker lab)에서 실행하세요
  • 권한이 없거나 프로덕션 환경에서 사용하지 마세요
  • 이용 시 대상 서버 프로세스 충돌 또는 제어 흐름 탈취가 발생할 수 있습니다

본 PoC를 사용하면 현지 법률 및 규정과 대상 시스템의 권한 경계를 준수하는 데 동의하는 것입니다.

참고 링크

  • PostgreSQL 공식 보안 공지
  • PostgreSQL 릴리스 공지
  • 업스트림 수정 커밋
  • V12 Security 기술 분석
  • 원본 PoC 저장소

원저작자

  • 원본 PoC: V12 Security 팀
  • 원본 저장소: https://github.com/v12-security/pocs
  • 라이선스: 업스트림 저장소에 LICENSE 파일이 없어 이 저장소는 MIT License를 사용합니다.
  • 이 저장소: 미러 배포 버전이며 원저작자 표기를 유지합니다.
도구 다운로드