🇰🇷 한글 설명
PostgreSQL의 논리적 복제 기능에서 SQL injection 취약점으로, 구독자 테이블 작성자가 ALTER SUBSCRIPTION ... REFRESH PUBLICATION 명령을 통해 구독 발행자의 자격증명으로 임의의 SQL을 실행할 수 있습니다. 이 공격은 다음 REFRESH PUBLICATION 실행 시에 발생합니다.
💡 쉬운 설명
PostgreSQL 데이터베이스에서 특정 권한을 가진 사용자가 악의적인 SQL 코드를 몰래 삽입할 수 있는 보안 문제입니다. 다음 동기화 작업 시 이 악의적인 코드가 관리자 권한으로 실행됩니다.
🇺🇸 원문 (English)
SQL injection in PostgreSQL logical replication ALTER SUBSCRIPTION ... REFRESH PUBLICATION allows a subscriber table creator to execute arbitrary SQL with the subscription's publication-side credentials. The attack takes effect at the next REFRESH PUBLICATION. Within major versions 16, 17, and 18, minor versions before PostgreSQL 18.4, 17.10, and 16.14 are affected. Versions before PostgreSQL 16 are unaffected.
📍 영향받는 시스템
PostgreSQL 16.14 이전, 17.10 이전, 18.4 이전 버전 (16 이전 버전은 안전)
⚔️ 공격 벡터
구독자에서 CREATE TABLE 권한을 가진 사용자가 ALTER SUBSCRIPTION ... REFRESH PUBLICATION에 SQL injection 페이로드를 삽입
🛡️ 대응 방법
PostgreSQL을 16.14, 17.10, 또는 18.4 이상 버전으로 즉시 업그레이드
🔧 검증 코드
출력된 PostgreSQL 버전이 16.14, 17.10, 18.4 이상인지 확인하여 패치된 버전인지 검증
psql -U postgres -t -c 'SELECT version();' | grep -oE 'PostgreSQL [0-9]+\.[0-9]+'