🇰🇷 한글 설명
PostgreSQL의 PL/Tcl 구현에서 pltcl_modules 테이블의 소유권과 권한을 확인하지 않고 Tcl 코드를 로드하는 취약점입니다. 데이터베이스 생성 권한이 있는 인증된 사용자가 악의적인 Tcl 스크립트를 삽입하여 임의의 코드를 실행할 수 있습니다.
💡 쉬운 설명
PostgreSQL 데이터베이스의 Tcl 기능이 보안을 제대로 검증하지 않아, 악의를 가진 데이터베이스 사용자가 서버에서 임의의 명령을 실행할 수 있습니다. 데이터베이스 생성 권한이 필요하므로 내부자 위협입니다.
🇺🇸 원문 (English)
The PL/Tcl implementation in 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 loads Tcl code from the pltcl_modules table regardless of the table's ownership and permissions, which allows remote authenticated users, with database-creation privileges, to execute arbitrary Tcl code by creating this table and inserting a crafted Tcl script.
📍 영향받는 시스템
PostgreSQL 7.4 (7.4.29 미만), 8.0-8.4 (각각 8.0.25/8.1.21/8.2.17/8.3.11/8.4.4 미만), 9.0 Beta2 미만
⚔️ 공격 벡터
인증된 사용자가 데이터베이스 생성 권한을 이용해 pltcl_modules 테이블을 생성하고 악의적인 Tcl 스크립트 삽입
🛡️ 대응 방법
PostgreSQL을 패치된 최신 버전으로 업그레이드하거나 신뢰할 수 없는 사용자에게 데이터베이스 생성 권한 제거
🔧 검증 코드
표시된 PostgreSQL 버전이 각 메이저 버전의 패치 버전 이상인지 확인합니다. 미만이면 취약합니다.
psql -U postgres -c "SELECT version();" 2>/dev/null | grep -oE 'PostgreSQL [0-9]+\.[0-9]+\.[0-9]+'