🇰🇷 한글 설명
PostgreSQL Anonymizer의 anon.image_blur() 함수가 입력 이미지의 선언된 크기를 검증하지 않아, 실제로는 작은 이미지에 매우 큰 선언 크기를 지정하는 방식으로 공격할 수 있습니다. 이를 악용하면 백엔드의 메모리를 고갈시켜 OOM 종료를 유발할 수 있으며(overcommit이 활성화된 경우), 이로 인해 클러스터 전체가 크래시 복구 상태에 빠질 수 있습니다. 해당 문제는 PostgreSQL Anonymizer 3.3.0 이상에서 수정되었습니다.
💡 쉬운 설명
공격자가 크기 정보를 속인 작은 이미지를 보내 데이터베이스가 대량의 메모리를 쓰게 만듭니다. 그 결과 데이터베이스 프로세스가 강제 종료되고 전체 서비스가 일시적으로 멈출 수 있습니다.
🇺🇸 원문 (English)
PostgreSQL Anonymizer's `anon.image_blur()` function doesn't check the declared dimension of the provided image, allowing an attacker to provide a small image with enormous declared dimensions. This vulnerability can be exploited to exhaust the memory of a backend and OOM-kill it (when ovecommit is on), which results in a cluster-wide crash recovery. The problem is resolved in PostgreSQL Anonymizer 3.3.0 and later versions.
📍 영향받는 시스템
PostgreSQL Anonymizer 3.3.0 미만 버전 (anon.image_blur 함수 사용 환경)
⚔️ 공격 벡터
작은 이미지 데이터에 매우 큰 선언 차원을 지정하여 anon.image_blur() 함수를 호출, 백엔드 메모리 고갈 유도
🛡️ 대응 방법
PostgreSQL Anonymizer를 3.3.0 이상으로 업그레이드하고, 업그레이드 전까지 anon.image_blur() 함수 사용을 제한
🔧 검증 코드
출력된 버전이 3.3.0 미만이면 취약하며, 3.3.0 이상이면 패치가 적용된 것입니다. 결과가 비어 있으면 확장이 설치되어 있지 않습니다.
psql -U postgres -c "SELECT extversion FROM pg_extension WHERE extname='anonymizer';"