🇰🇷 한글 설명
PostgreSQL의 pg_restore_attribute_stats() 함수에서 길이가 불일치하는 배열 값을 받을 때 버퍼 오버리드가 발생하여 배열 끝을 넘어선 메모리를 읽을 수 있다. 이를 통해 테이블 유지보수 권한을 가진 사용자가 메모리 내용을 유추할 수 있으므로 정보 공개 위험이 존재한다.
💡 쉬운 설명
PostgreSQL의 함수가 허락된 범위를 벗어나 메모리를 읽어서 비공개 정보가 노출될 수 있다. 이를 악용하려면 데이터베이스에 대한 관리 권한이 필요하다.
🇺🇸 원문 (English)
Buffer over-read in PostgreSQL function pg_restore_attribute_stats() accepts array values of unmatched length, which causes query planning to read past end of one array. This allows a table maintainer to infer memory values past that array end. Within major version 18, minor versions before PostgreSQL 18.4 are affected. Versions before PostgreSQL 18 are unaffected.
📍 영향받는 시스템
PostgreSQL 18.0 ~ 18.3 (18.4 이전의 모든 마이너 버전)
⚔️ 공격 벡터
테이블 유지보수자가 pg_restore_attribute_stats() 함수 호출 시 길이가 맞지 않는 배열을 인자로 전달
🛡️ 대응 방법
PostgreSQL을 18.4 이상으로 업그레이드하거나, PostgreSQL 17 이하로 사용 중인 경우 업그레이드 불필요
🔧 검증 코드
출력된 PostgreSQL 버전이 18.4 이상이면 안전, 18.0~18.3이면 업그레이드 필요
psql --version | grep -oP 'PostgreSQL \K[0-9]+\.[0-9]+'