🇰🇷 한글 설명
PostgreSQL의 PL/perl 절차가 Perl 코드 실행을 적절히 제한하지 않아, 데이터베이스 생성 권한이 있는 인증된 사용자가 악의적인 Perl 스크립트를 통해 임의의 코드를 실행할 수 있는 취약점입니다. Safe.pm 모듈의 결함이 원인입니다.
💡 쉬운 설명
PostgreSQL의 Perl 기능이 악성 코드를 제대로 차단하지 못합니다. 데이터베이스 관리자 권한이 있는 사용자가 숨겨진 명령어를 통해 서버를 완전히 장악할 수 있습니다.
🇺🇸 원문 (English)
PostgreSQL 7.4 before 7.4.29, 8.0 before 8.0.25, 8.1 before 8.1.21, 8.2 before 8.2.17, 8.3 before 8.3.11, 8.4 before 8.4.4, and 9.0 Beta before 9.0 Beta 2 does not properly restrict PL/perl procedures, which allows remote authenticated users, with database-creation privileges, to execute arbitrary Perl code via a crafted script, related to the Safe module (aka Safe.pm) for Perl. NOTE: some sources report that this issue is the same as CVE-2010-1447.
📍 영향받는 시스템
PostgreSQL 7.4-7.4.28, 8.0-8.0.24, 8.1-8.1.20, 8.2-8.2.16, 8.3-8.3.10, 8.4-8.4.3, 9.0 Beta 1
⚔️ 공격 벡터
데이터베이스 생성 권한 보유 인증 사용자가 CREATE FUNCTION으로 malicious Perl 코드가 포함된 PL/perl 함수 생성 후 실행
🛡️ 대응 방법
PostgreSQL을 패치된 버전으로 업그레이드: 7.4.29+, 8.0.25+, 8.1.21+, 8.2.17+, 8.3.11+, 8.4.4+, 9.0 이상
🔧 검증 코드
출력된 PostgreSQL 버전이 위의 최소 권장 버전 이상인지 확인하여 패치 상태 판단
psql -U postgres -c "SELECT version();" 2>/dev/null | grep -oE '[0-9]+\.[0-9]+(\.[0-9]+)?'