[BE] PostgreSQL 18.4 보안 릴리스: CVE-2026-6473 RCE 포함 11개 취약점 수정
서론
데이터베이스 보안 패치는 상대적으로 주목받지 못하는 경우가 많다. “어차피 내부망에 있으니 괜찮겠지”, “DB 업그레이드는 리스크가 크니 나중에”라는 생각이 많은 조직에서 업그레이드를 미루게 만드는 흔한 이유들이다. 그런데 2026년 5월 14일에 출시된 PostgreSQL 18.4 (및 17.10, 16.14, 15.18, 14.23) 보안 릴리스는 그 핑계를 허락하지 않는다.
이번 릴리스에는 원격 코드 실행(RCE)이 가능한 CVE-2026-6473을 포함해 11개의 보안 취약점과 60개 이상의 버그가 수정됐다. CVE-2026-6473은 정수 오버플로(Integer Wraparound)를 이용해 메모리 손상을 유발하고, 비권한 데이터베이스 계정만으로도 서버에서 임의 코드를 실행할 수 있는 심각한 결함이다.
일반적으로 PostgreSQL은 네트워크에 직접 노출되지 않는다고 생각할 수 있지만, 멀티테넌트 클라우드 데이터베이스 서비스나 SaaS 플랫폼 환경에서는 이야기가 달라진다. DB에 접근할 수 있는 모든 사용자가 잠재적 공격자가 될 수 있다. 이 글에서는 이번 릴리스의 주요 내용과 CVE-2026-6473의 기술적 세부 사항, 그리고 업그레이드 방법을 정리한다.
본론
릴리스 개요
PostgreSQL Global Development Group은 2026년 5월 14일, 현재 지원 중인 모든 버전의 업데이트를 동시에 출시했다.
| 신규 버전 | 이전 버전 | 릴리스일 |
|---|---|---|
| PostgreSQL 18.4 | 18.3 | 2026-05-14 |
| PostgreSQL 17.10 | 17.9 | 2026-05-14 |
| PostgreSQL 16.14 | 16.13 | 2026-05-14 |
| PostgreSQL 15.18 | 15.17 | 2026-05-14 |
| PostgreSQL 14.23 | 14.22 | 2026-05-14 |
이번 업데이트는 덤프(dump)/리로드(reload) 또는 pg_upgrade 없이 적용할 수 있다. PostgreSQL 바이너리를 정지하고 교체하면 되는 마이너 버전 업그레이드라, 운영 환경에서의 업그레이드 부담이 상대적으로 적다.
핵심 취약점: CVE-2026-6473 (Integer Wraparound → RCE)
이번 릴리스에서 가장 주목해야 할 취약점은 CVE-2026-6473이다.
취약점 원인
CVE-2026-6473의 핵심 원인은 PostgreSQL 서버 기능 내부의 정수 오버플로(Integer Wraparound) 문제다. 정수값이 해당 자료형의 최대 한계를 초과하면 다시 0이나 음수로 되돌아오는(wraparound) 현상이 발생한다. PostgreSQL은 이 정수값을 메모리 할당 크기 계산에 사용했는데, 공격자가 이 연산을 의도적으로 오버플로시키면 다음과 같은 흐름으로 공격이 성립한다.
1
2
3
4
5
6
7
8
9
10
11
공격 입력 (특수하게 조작된 쿼리/파라미터)
↓
정수 오버플로 유발 → 음수 또는 매우 작은 값으로 wraparound
↓
PostgreSQL이 실제 필요한 것보다 훨씬 작은 메모리 버퍼 할당
↓
해당 버퍼에 데이터 쓰기 → 경계 초과 쓰기 (Out-of-Bounds Write)
↓
힙(Heap) 메모리 손상 (Memory Corruption)
↓
임의 코드 실행 (Arbitrary Code Execution)
Out-of-Bounds Write를 통한 메모리 손상은 공격자가 return address나 함수 포인터를 덮어쓰는 방식으로 제어 흐름을 탈취하는 전형적인 공격 패턴이다.
익스플로잇 요구 조건
이 취약점은 완전히 인증 없이(unauthenticated) 악용할 수는 없다. 비권한(unprivileged) 데이터베이스 사용자 계정이 필요하다. 즉, PostgreSQL에 로그인할 수 있는 모든 사용자가 잠재적 공격자가 될 수 있다.
이것이 왜 위험한지는 다음 시나리오를 통해 이해할 수 있다.
- 멀티테넌트 SaaS 환경: 각 고객사에 별도 DB 사용자를 부여하는 구조에서, 한 고객이 악의적으로 서버 전체를 장악할 수 있다. 데이터 격리(Isolation)가 완전히 무너지는 시나리오다.
- 공유 PostgreSQL 인스턴스: 여러 팀이 하나의 PostgreSQL 서버를 공유하는 내부 환경에서, 권한이 적은 사용자가 DBA 수준의 접근권을 얻을 수 있다.
- 클라우드 관리형 DB: 가령 AWS RDS PostgreSQL 같은 관리형 서비스에서도, DB 접근 권한이 있는 사용자가 내부 인프라에 영향을 미칠 가능성을 배제할 수 없다.
영향 버전
CVE-2026-6473에 영향받는 버전은 다음과 같다.
- PostgreSQL 18.4 미만의 모든 18.x
- PostgreSQL 17.10 미만의 모든 17.x
- PostgreSQL 16.14 미만의 모든 16.x
- PostgreSQL 15.18 미만의 모든 15.x
- PostgreSQL 14.23 미만의 모든 14.x
추가 보안 수정: 11개 취약점 전체 범위
CVE-2026-6473 외에도 PostgreSQL 팀은 이번 릴리스에서 총 11개의 보안 취약점을 수정했다. 공식 발표에 따르면 이번에 수정된 취약점 유형의 범위는 다음과 같다.
메모리 손상(Memory Corruption) 결함
CVE-2026-6473을 포함한 버퍼 관련 결함들이다. 정수 연산 오류에서 비롯된 메모리 할당 문제들이 여러 개 패치됐다.
복제 명령어의 SQL 인젝션
PostgreSQL의 논리적 복제(Logical Replication) 또는 스트리밍 복제(Streaming Replication) 명령어 처리 과정에서 발생하는 SQL 인젝션 취약점이다. 퍼블리셔/서브스크라이버 구조의 고가용성(HA) 환경이나 읽기 복제본(Read Replica)을 운영 중인 경우 이 부분이 추가적으로 위험할 수 있다.
SQL 인젝션이라고 하면 보통 애플리케이션 레이어의 문제를 떠올리는데, 복제 명령어에서의 인젝션은 DB 서버 내부에서 발생한다는 점에서 더 깊은 영향을 미칠 수 있다.
60개 이상의 버그 수정
보안 이슈 외에도 지난 수개월간 보고된 60개 이상의 버그가 함께 수정됐다. 주요 카테고리는 다음과 같다.
쿼리 플래너 관련
특정 복잡한 조인이나 서브쿼리에서 잘못된 실행 계획이 선택되는 문제들이 수정됐다. 특히 중첩 루프 조인(Nested Loop Join)과 해시 조인(Hash Join) 선택이 비정상적으로 이뤄지던 엣지 케이스들이 포함된다.
파티셔닝 관련
범위 파티션(Range Partition)과 해시 파티션(Hash Partition) 처리 중 발생하던 오류들이 수정됐다. 파티션 프루닝(Partition Pruning)이 올바르게 동작하지 않던 케이스도 포함된다.
논리적 복제 안정성
WAL(Write-Ahead Log) 파싱 오류 및 복제 슬롯(Replication Slot) 처리 개선이 이뤄졌다. 복제 슬롯 누적으로 디스크가 가득 차는 문제의 원인 중 하나였던 슬롯 정리 로직도 개선됐다.
성능 개선
특정 집계 함수와 윈도우 함수의 불필요한 재연산이 방지되는 수정이 포함됐다. GROUP BY와 PARTITION BY를 함께 사용하는 복잡한 쿼리에서 체감 성능 개선이 있을 수 있다.
tzdata 업데이트: 캐나다 BC주 영구 서머타임
이번 릴리스는 시간대 데이터 파일을 tzdata 2026b로 업데이트했다. 가장 주목할 만한 변경은 캐나다 브리티시컬럼비아(BC)주의 America/Vancouver 시간대가 2026년 11월부터 연중 UTC-07(사실상 영구 서머타임)으로 고정된다는 것이다.
이 변경이 중요한 이유가 있다. TIMESTAMP WITH TIME ZONE 컬럼이나 AT TIME ZONE 'America/Vancouver' 같은 시간대 변환을 사용하는 애플리케이션이 있다면, 2026년 11월 이후부터 반환되는 값이 달라질 수 있다.
1
2
3
4
5
-- 이 쿼리의 결과가 2026년 11월 이후 달라질 수 있음
SELECT created_at AT TIME ZONE 'America/Vancouver' FROM orders;
-- tzdata 2026b 적용 후 확인 방법
SELECT now() AT TIME ZONE 'America/Vancouver';
캐나다 BC주 사용자나 해당 시간대 데이터를 처리하는 서비스라면 tzdata 업데이트 전후로 시간 변환 로직을 미리 테스트해두는 것이 좋다.
PostgreSQL 14 EOL 예고: 2026년 11월 12일
이번 릴리스와 함께 중요한 공지가 하나 포함됐다. PostgreSQL 14는 2026년 11월 12일에 지원이 종료(EOL)된다. 이후에는 보안 패치도 제공되지 않는다.
현재 PostgreSQL 14를 운영 중인 조직은 EOL 전에 최소 버전 15 이상으로 업그레이드할 계획을 세워야 한다. 특히 EOL 이후에도 14.x를 계속 사용하면 CVE-2026-6473 같은 심각한 취약점이 발견돼도 패치를 받을 수 없다.
1
2
3
4
5
6
7
8
9
10
# 현재 PostgreSQL 버전 확인
psql -c "SELECT version();"
# pg_upgrade를 이용한 14 → 18 업그레이드 (사전 확인)
pg_upgrade \
-b /usr/lib/postgresql/14/bin \
-B /usr/lib/postgresql/18/bin \
-d /var/lib/postgresql/14/main \
-D /var/lib/postgresql/18/main \
--check
--check 옵션으로 사전 호환성 검사를 먼저 수행하고, 문제가 없으면 실제 업그레이드를 진행하는 것이 안전하다. 대형 DB의 경우 pg_upgrade 전에 충분한 테스트 환경 검증이 필요하다.
업그레이드 방법
이번 보안 릴리스는 마이너 버전 업그레이드이므로 pg_upgrade가 필요 없다. 단순히 PostgreSQL 서비스를 중단하고 패키지를 업데이트하면 된다.
1
2
3
4
5
6
7
8
9
# Ubuntu/Debian 기준 (예: PostgreSQL 18)
sudo systemctl stop postgresql
sudo apt-get update && sudo apt-get upgrade postgresql-18
sudo systemctl start postgresql
# RHEL/Rocky Linux/Amazon Linux 기준
sudo systemctl stop postgresql-18
sudo dnf update postgresql18
sudo systemctl start postgresql-18
업그레이드 후 로그를 확인해 이상이 없는지 검증한다.
1
2
3
4
5
# 최근 로그 확인
sudo journalctl -u postgresql --since "5 minutes ago"
# 버전 확인
psql -U postgres -c "SELECT version();"
CVE-2026-6473 패치 적용 여부를 확인하는 가장 확실한 방법은 버전 번호 확인이다. 18.4, 17.10, 16.14, 15.18, 14.23 이상이면 이번 보안 릴리스가 적용된 것이다.
업계 반응
PostgreSQL 커뮤니티와 보안 커뮤니티 모두 이번 릴리스를 신속히 적용할 것을 권고하고 있다. TheHackerWire는 “CVE-2026-6473은 비권한 사용자도 익스플로잇할 수 있다는 점에서 DBA나 인프라 팀이 즉각 대응해야 한다”고 분석했다.
멀티테넌트 환경을 운영하는 클라우드 서비스 제공사들은 해당 사실을 고객에게 투명하게 공지하고 관리형 업그레이드를 제공해야 한다는 목소리도 나오고 있다. AWS, Google Cloud, Azure 등 관리형 PostgreSQL 서비스들은 각 플랫폼의 유지보수 정책에 따라 자동 패치를 진행하거나 사용자에게 업그레이드 권고를 발송할 예정이다.
정리
- PostgreSQL 18.4, 17.10, 16.14, 15.18, 14.23이 2026년 5월 14일 동시 출시됐다.
- CVE-2026-6473(Integer Wraparound → Out-of-Bounds Write → RCE) 를 포함한 11개 보안 취약점이 패치됐다.
- CVE-2026-6473은 비권한 DB 계정만으로도 서버 RCE가 가능해 멀티테넌트 환경에서 특히 위험하다.
- 복제 명령어의 SQL 인젝션 등 다양한 유형의 취약점이 함께 수정됐다.
- 마이너 버전 업그레이드이므로 dump/reload나 pg_upgrade 없이 바이너리 교체만으로 적용 가능하다.
- tzdata 2026b 업데이트로 캐나다 BC주
America/Vancouver시간대가 2026년 11월부터 UTC-07 고정. - PostgreSQL 14는 2026년 11월 12일 EOL이므로 버전 15 이상으로 업그레이드 계획이 필요하다.
- CVE-2026-6473이 포함된 만큼 가급적 빠른 업그레이드가 강력히 권고된다.