PostgreSQL CVE 취약점 16건 상세 분석 및 보안 패치 가이드

반응형
PostgreSQL CVE 취약점 16건 상세 분석 및 보안 패치 가이드

PostgreSQL CVE 취약점 16건 상세 분석 및 보안 패치 가이드

2026년 PostgreSQL에서는 서버 코어뿐만 아니라 psql, pg_dump, PL/Perl, contrib 모듈 등 다양한 영역에서 보안 취약점이 공개되었습니다. 특히 메모리 손상, 버퍼 오버플로, Type Confusion, SQL Injection 등으로 인해 PostgreSQL 서버 또는 클라이언트 실행 계정 권한으로 임의 코드가 실행될 수 있는 취약점이 다수 포함되어 있습니다.

핵심: 아래 취약점 다수는 PostgreSQL 14~18 계열에 영향을 주며, 2026년 8월 13일 공개된 보안 릴리스인 PostgreSQL 14.24 / 15.19 / 16.15 / 17.11 / 18.6에서 수정되었습니다.

1. PostgreSQL 주요 CVE 목록

CVE 주요 내용 영향 영역 CVSS
CVE-2026-6464 psql COPY FROM STDIN 처리 과정에서 데이터가 psql 명령으로 처리될 수 있음 Client 8.1
CVE-2026-6471 Logical Decoding을 통한 임의 파일 dlopen 가능 Core Server 7.2
CVE-2026-14662 tsvector / tsquery 정수 오버플로에 따른 메모리 손상 및 코드 실행 Core Server 8.8
CVE-2026-14664 정규표현식 처리 중 Heap Buffer Overflow Core Server 8.8
CVE-2026-14668 ctid Type Confusion을 통한 메모리 정보 노출 Core Server 8.1
CVE-2026-14669 to_char(timestamptz) Heap Buffer Overflow Core Server 8.8
CVE-2026-14670 PL/Perl tied hash 처리 과정 Heap Buffer Overflow Core Server 8.8
CVE-2026-14671 refint Plan Cache Type Confusion Contrib Module 8.8
CVE-2026-14677 32-bit PL/Tcl 및 PL/Perl Integer Wraparound Core Server 8.8
CVE-2026-14679 Argument Match 과정 Stack Buffer Overflow Core Server 8.2
CVE-2026-14780 PostgreSQL 공식 보안 목록 및 NVD 등록 여부 별도 확인 필요 확인 필요 -
CVE-2026-15741 EXTRACT 표현식 Deparse 과정 SQL Injection Core Server 8.8
CVE-2026-15742 fuzzystrmatch Integer Wraparound에 따른 임의 메모리 쓰기 Contrib Module 8.8
CVE-2026-16239 Cursor/Portal Lifecycle Type Confusion Core Server 8.8
CVE-2026-18408 pg_dump / psql 복원 과정에서 클라이언트 코드 실행 가능 Client 8.8
CVE-2026-19385 pg_dump Heap Buffer Overflow Client 8.8

2. CVE-2026-6464 - psql COPY FROM STDIN 명령 처리 취약점

PostgreSQL의 psql 클라이언트에서 COPY FROM STDIN 또는 \copy FROM STDIN 명령이 정상적으로 입력 데이터를 기다리기 전에 실패할 경우, 뒤따르는 데이터 행이 일반 데이터가 아닌 psql 명령으로 해석될 수 있는 취약점입니다.

공격 조건이 충족되면 데이터에 포함된 내용이 의도하지 않은 psql 명령으로 처리될 수 있습니다. 반면 파일명을 직접 사용하는 COPY FROM 방식은 해당 취약점의 영향을 받지 않습니다.

CVSS: 8.1 / High

3. CVE-2026-6471 - Logical Decoding 임의 파일 로드 취약점

PostgreSQL Logical Decoding 기능에서 임의 파일을 동적 라이브러리로 로드할 수 있는 문제입니다. 공식 PostgreSQL 보안 정보에서는 Core Server 취약점으로 분류되며 CVSS 7.2가 부여되었습니다.

공격을 위해서는 높은 데이터베이스 권한이 요구되지만, 조건이 충족되는 환경에서는 서버 측 코드 실행으로 연결될 가능성이 있으므로 Logical Replication이나 Logical Decoding 기능을 사용하는 시스템에서는 패치 여부를 반드시 확인해야 합니다.

4. CVE-2026-14662 - tsvector / tsquery Integer Wraparound

PostgreSQL Full Text Search에서 사용하는 tsvector 및 tsquery 처리 과정에서 Integer Wraparound가 발생할 수 있는 취약점입니다.

조작된 대용량 입력으로 메모리 할당 크기가 실제 필요한 크기보다 작게 계산될 수 있으며, 이후 Out-of-Bounds Write가 발생할 수 있습니다.

악용에 성공하면 PostgreSQL 서버 프로세스를 실행하는 OS 계정 권한으로 임의 코드가 실행될 가능성이 있습니다.

CVSS: 8.8 / High

5. CVE-2026-14664 - PostgreSQL Regexp Heap Buffer Overflow

PostgreSQL 정규표현식 처리 과정에서 발생하는 Heap Buffer Overflow 취약점입니다. 특수하게 조작된 문자열을 이용해 메모리 경계를 벗어난 쓰기가 발생할 수 있습니다.

공격에 성공할 경우 PostgreSQL 서버를 실행하는 운영체제 사용자 권한으로 임의 코드가 실행될 수 있기 때문에 영향도가 높은 취약점입니다.

CVSS: 8.8 / High

6. CVE-2026-14668 - ctid Type Confusion

PostgreSQL의 ctid 데이터 타입 Selectivity Estimator에서 발생하는 Type Confusion 취약점입니다.

공격자는 잘못된 데이터 타입을 이용해 PostgreSQL 프로세스 메모리 일부에 기반한 계산 결과를 확인할 수 있으며, 이를 반복적으로 활용하면 서버 메모리 정보가 노출될 가능성이 있습니다.

CVSS: 8.1 / High

7. CVE-2026-14669 - to_char Heap Buffer Overflow

to_char(timestamptz) 함수에서 긴 POSIX Timezone 약어를 처리하는 과정에서 Heap Buffer Overflow가 발생할 수 있습니다.

공격자가 Timezone 값을 조작할 수 있는 조건에서는 메모리 손상을 유발하고 PostgreSQL 서버 OS 계정 권한으로 임의 코드 실행까지 이어질 수 있습니다.

CVSS: 8.8 / High

8. CVE-2026-14670 - PL/Perl Heap Buffer Overflow

PostgreSQL의 PL/Perl 기능에서 tied hash 객체를 반환하는 과정에서 발생하는 Heap Buffer Overflow 취약점입니다.

악의적으로 작성된 PL/Perl 함수가 존재할 경우 PostgreSQL 프로세스의 메모리를 손상시키고 서버 프로세스 권한으로 임의 코드를 실행할 가능성이 있습니다.

CVSS: 8.8 / High

9. CVE-2026-14671 - refint Plan Cache Type Confusion

PostgreSQL contrib 모듈인 refint에서 Plan Cache를 처리하는 과정에서 Type Confusion이 발생하는 취약점입니다.

공격자가 관련 데이터베이스 객체를 생성할 수 있는 경우 PostgreSQL 서버 프로세스 권한으로 임의 코드가 실행될 수 있습니다.

CVSS: 8.8 / High

10. CVE-2026-14677 - 32-bit PL/Tcl 및 PL/Perl Integer Wraparound

32-bit PostgreSQL 환경의 PL/Tcl 및 PL/Perl에서 함수 본문을 처리할 때 Integer Wraparound로 인해 실제보다 작은 메모리 공간이 할당될 수 있습니다.

이후 Out-of-Bounds Write가 발생할 수 있으며, 악용 시 PostgreSQL 서버 프로세스 권한으로 코드 실행이 가능합니다.

이 취약점은 32-bit PostgreSQL 빌드가 주요 영향 대상이라는 점을 함께 확인해야 합니다. 일반적인 최신 64-bit Linux PostgreSQL 환경에서는 적용 조건이 다릅니다.

11. CVE-2026-14679 - Stack Buffer Overflow

PostgreSQL 함수의 Argument Name Matching 과정에서 OUT Parameter 개수를 이용해 Stack Buffer Overflow를 발생시킬 수 있는 취약점입니다.

공식 설명에 따르면 공격자가 기록 가능한 값에는 제약이 있지만, 서비스 가용성 또는 메모리 무결성에 영향을 줄 수 있어 패치가 필요합니다.

CVSS: 8.2 / High

12. CVE-2026-14780 - 별도 확인 필요

주의: 작성 시점 기준 PostgreSQL 공식 Security Information과 NVD 검색 결과에서 CVE-2026-14780을 PostgreSQL 취약점으로 확인할 수 없습니다.

따라서 CVE 번호 오기 여부를 먼저 확인하는 것이 좋습니다. CVE 번호가 잘못된 상태에서 PostgreSQL 취약점으로 단정하면 보안 점검 보고서나 취약점 조치 결과에 오류가 발생할 수 있습니다.

NVD에서는 다음 형식으로 직접 확인할 수 있습니다.

https://nvd.nist.gov/vuln/detail/CVE-2026-14780

13. CVE-2026-15741 - EXTRACT Deparse SQL Injection

PostgreSQL의 EXTRACT() 표현식을 Deparse하는 과정에서 발생하는 SQL Injection 취약점입니다.

악의적인 객체 정의가 존재하면 Expression Deparse를 사용하는 기능에서 의도하지 않은 SQL이 실행될 수 있습니다. 영향 대상에는 pg_dump, psql의 일부 명령 및 유사한 기능을 사용하는 외부 도구가 포함될 수 있습니다.

CVSS: 8.8 / High

14. CVE-2026-15742 - fuzzystrmatch Integer Wraparound

PostgreSQL contrib 모듈인 fuzzystrmatch의 levenshtein() 및 levenshtein_less_equal() 함수에서 발생하는 Integer Wraparound 취약점입니다.

극단적인 입력값을 이용하면 메모리 주소에 대한 비정상적인 쓰기가 발생할 수 있으며, 공격 성공 시 PostgreSQL 서버 프로세스 권한으로 임의 코드가 실행될 수 있습니다.

CVSS: 8.8 / High

15. CVE-2026-16239 - Cursor Type Confusion

PostgreSQL Cursor 및 Portal의 생명주기 관리 과정에서 발생하는 Type Confusion 취약점입니다.

Cursor를 닫은 뒤 동일한 이름으로 다른 타입의 Portal을 재생성하는 등의 방식으로 잘못된 타입의 메모리가 사용될 수 있습니다.

악용에 성공하면 PostgreSQL 서버를 실행하는 OS 계정 권한으로 임의 코드 실행이 가능합니다.

CVSS: 8.8 / High

16. CVE-2026-18408 - pg_dump / psql 복원 코드 실행 취약점

신뢰할 수 없는 PostgreSQL 서버에서 생성한 Dump 파일을 psql로 복원할 때 문제가 발생할 수 있는 취약점입니다.

악의적인 원본 서버의 Superuser가 Dump 데이터에 조작된 내용을 삽입하면 복원을 수행하는 클라이언트의 OS 계정 권한으로 임의 코드가 실행될 가능성이 있습니다.

pg_dumpall 역시 영향을 받을 수 있으며, pg_restore를 이용해 Plain Format Dump를 생성하는 경우도 주의해야 합니다.

CVSS: 8.8 / High

17. CVE-2026-19385 - pg_dump Heap Buffer Overflow

PostgreSQL pg_dump가 긴 Function Transform List를 처리하는 과정에서 Heap Buffer Overflow가 발생할 수 있는 취약점입니다.

공격자가 조작된 Transform List를 가진 객체를 생성할 수 있는 환경이라면 Dump를 실행하는 OS 사용자 권한으로 임의 코드가 실행될 가능성이 있습니다.

CVSS: 8.8 / High

18. 영향받는 PostgreSQL 버전

위 취약점 대부분은 PostgreSQL 14~18 계열에 영향을 주며, 2026년 8월 13일 PostgreSQL 보안 업데이트에서 수정되었습니다.

Major Version 취약 버전 기준 보안 패치 버전
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 이상
각 CVE마다 세부적인 영향 조건과 영향을 받는 구성요소가 다르므로 단순히 PostgreSQL Major Version만으로 취약 여부를 판단해서는 안 됩니다. PL/Perl, PL/Tcl, fuzzystrmatch, refint 등의 기능을 사용하지 않는 환경은 해당 구성요소 관련 취약점의 실제 공격 표면이 줄어들 수 있습니다.

19. 현재 PostgreSQL 버전 확인

SQL에서 다음 명령으로 버전을 확인할 수 있습니다.

SELECT version();

또는 Linux 서버에서 다음과 같이 확인할 수 있습니다.

psql --version

postgres --version

예를 들어 다음과 같이 표시된다면:

psql (PostgreSQL) 16.9

PostgreSQL 16.9는 위 2026년 8월 보안 릴리스인 16.15보다 이전 버전이므로 16.15 이상으로 업데이트하는 것을 검토해야 합니다.

20. 설치된 Extension 확인

이번 취약점 중에는 PostgreSQL Core Server뿐 아니라 contrib 모듈과 PL 언어에 영향을 주는 항목도 존재합니다. 현재 데이터베이스에 설치된 Extension은 다음 명령으로 확인할 수 있습니다.

SELECT
    extname,
    extversion
FROM pg_extension
ORDER BY extname;

psql에서는 다음 명령도 사용할 수 있습니다.

\dx

특히 다음과 같은 구성요소 사용 여부를 확인하는 것이 좋습니다.

fuzzystrmatch
refint
plperl
pltcl

21. 운영 환경 대응 방법

1) PostgreSQL 버전 확인

SELECT version();

2) 패키지 버전 확인

RPM 계열 Linux에서는 다음과 같이 확인할 수 있습니다.

rpm -qa | grep -i postgres

3) Extension 확인

SELECT extname, extversion
FROM pg_extension
ORDER BY extname;

4) PL 언어 확인

SELECT lanname
FROM pg_language
ORDER BY lanname;

5) 보안 업데이트 적용

운영 중인 Major Version을 변경하는 것이 아니라 해당 Major Version의 최신 Minor Release로 업데이트하는 방법을 우선 검토합니다.

PostgreSQL 14 → 14.24 이상
PostgreSQL 15 → 15.19 이상
PostgreSQL 16 → 16.15 이상
PostgreSQL 17 → 17.11 이상
PostgreSQL 18 → 18.6 이상

6) 업데이트 전 백업

운영 DB라면 패치 전 데이터베이스 백업과 복구 가능 여부를 확인해야 합니다.

pg_dump -Fc DB_NAME > DB_NAME.dump

다만 이번 취약점에는 pg_dump 자체와 관련된 보안 문제가 포함되어 있으므로, 신뢰할 수 없는 서버나 데이터베이스에서 생성한 Dump를 취약한 버전의 도구로 처리하는 것은 피해야 합니다.

7) 업데이트 후 버전 검증

SELECT version();

psql --version

22. 보안 점검 시 확인해야 할 핵심 사항

점검 항목 확인 내용
PostgreSQL Version 보안 패치 버전 이상인지 확인
psql 서버와 별도로 클라이언트 패키지 버전 확인
pg_dump 취약한 클라이언트 버전 사용 여부 확인
PL/Perl plperl 사용 여부 확인
PL/Tcl pltcl 사용 여부 확인
fuzzystrmatch Extension 설치 여부 확인
refint Contrib 모듈 사용 여부 확인
Logical Decoding Replication / Decoding 기능 사용 여부 확인
Backup Server pg_dump 실행 서버의 PostgreSQL Client 버전 확인

23. 서버만 업데이트하면 끝일까?

이번 CVE 목록에서는 Core Server 취약점과 Client 취약점이 동시에 존재한다는 점이 중요합니다.

예를 들어 다음 도구가 영향을 받을 수 있습니다.

PostgreSQL Server
psql
pg_dump
pg_dumpall
pg_restore

따라서 DB 서버 패키지만 업데이트하고, 별도의 백업 서버나 관리 서버에 설치된 psql과 pg_dump를 이전 버전으로 유지하면 일부 Client 취약점이 남을 수 있습니다.

운영 환경에서는 DB 서버 + DBA 관리 서버 + 백업 서버 + 배치 서버의 PostgreSQL Client 버전까지 함께 점검하는 것이 중요합니다.

24. 결론

2026년 PostgreSQL 보안 취약점은 단순한 정보 노출이나 서비스 거부 수준에 그치지 않고, Heap Buffer Overflow, Integer Wraparound, Type Confusion, SQL Injection 등 임의 코드 실행으로 연결될 수 있는 High 등급 취약점이 다수 포함되어 있습니다.

특히 PostgreSQL 14~18을 운영하고 있다면 현재 Minor Version을 확인하고, 환경에 맞는 보안 패치 버전인 14.24 / 15.19 / 16.15 / 17.11 / 18.6 이상 적용 여부를 확인하는 것이 중요합니다.

또한 서버 버전만 확인하지 말고 psql, pg_dump, PL/Perl, PL/Tcl, fuzzystrmatch, refint 등 실제 사용 중인 구성요소까지 함께 확인해야 합니다.

한편 요청 목록의 CVE-2026-14780은 작성 시점 기준 PostgreSQL 공식 Security Information에서 PostgreSQL 취약점으로 확인되지 않았으므로 CVE 번호를 다시 확인한 뒤 보안 점검 대상에 포함하는 것이 안전합니다.

25. 참고 사이트

NVD(National Vulnerability Database)의 각 CVE 상세 페이지는 다음 형식으로 확인할 수 있습니다.

https://nvd.nist.gov/vuln/detail/CVE-CODE

예:

https://nvd.nist.gov/vuln/detail/CVE-2026-6464

PostgreSQL 공식 Security Information에서도 PostgreSQL 버전별 영향 범위, 수정 버전, CVSS와 취약점 설명을 확인할 수 있습니다.

반응형