🇰🇷 한글 설명
PostgreSQL의 권한 상승 취약점으로, CREATEDB 또는 CREATEROLE 권한을 가진 원격 인증 사용자가 특수 문자(큰따옴표, 백슬래시, 캐리지 리턴, 줄바꿈)를 포함한 데이터베이스나 역할 이름을 이용하여 관리 작업 중 처리 오류를 악용해 superuser 권한을 획득할 수 있습니다.
💡 쉬운 설명
PostgreSQL 데이터베이스에서 제한된 권한을 가진 사용자가 특수 문자를 포함한 이름으로 데이터베이스나 사용자 계정을 만들 때, 시스템이 이를 잘못 처리하여 최고 권한을 얻을 수 있습니다. 제한된 사용자가 전체 시스템 관리자 권한을 얻게 되는 심각한 보안 문제입니다.
🇺🇸 원문 (English)
PostgreSQL before 9.1.23, 9.2.x before 9.2.18, 9.3.x before 9.3.14, 9.4.x before 9.4.9, and 9.5.x before 9.5.4 might allow remote authenticated users with the CREATEDB or CREATEROLE role to gain superuser privileges via a (1) " (double quote), (2) \ (backslash), (3) carriage return, or (4) newline character in a (a) database or (b) role name that is mishandled during an administrative operation.
📍 영향받는 시스템
PostgreSQL 9.1 < 9.1.23, 9.2 < 9.2.18, 9.3 < 9.3.14, 9.4 < 9.4.9, 9.5 < 9.5.4
⚔️ 공격 벡터
CREATEDB 또는 CREATEROLE 역할을 가진 인증된 사용자가 큰따옴표, 백슬래시, 캐리지 리턴, 줄바꿈을 포함한 데이터베이스/역할 이름 생성으로 권한 상승을 트리거
🛡️ 대응 방법
PostgreSQL을 최소 9.1.23, 9.2.18, 9.3.14, 9.4.9, 9.5.4 이상으로 업그레이드하거나, CREATEDB/CREATEROLE 권한 필요성 재검토 및 제한
🔧 검증 코드
출력된 PostgreSQL 버전이 각 주 버전별 패치 버전 미만(9.1<23, 9.2<18, 9.3<14, 9.4<9, 9.5<4)이면 취약함
postgres --version 2>/dev/null | awk '{print $NF}' || psql -V 2>/dev/null | tail -1