🇰🇷 한글 설명
psqlODBC는 서버가 제공한 데이터의 개수와 길이를 세 가지 지점에서 신뢰합니다. SQLBulkOperations는 서버가 제공한 행 수로 뺄셈을 하여 언더플로가 발생할 수 있고, SQLStatistics는 고정 저장소 크기로 제한하지 않은 채 서버가 제공한 키 개수로 인덱스 키를 순회하며, bytea 8진수 디코딩은 잘린 이스케이프 시퀀스 끝을 넘어 최대 두 바이트를 읽습니다. 현재 SSL 설정에서 신뢰되지 않는 서버는 클라이언트를 충돌시키거나 범위를 벗어난 읽기를 유발할 수 있으며, psqlODBC 18.00.0006 이전 버전이 영향을 받습니다.
💡 쉬운 설명
데이터베이스 서버와 통신하는 psqlODBC 드라이버가 서버에서 온 데이터의 크기를 검증하지 않아 문제가 생깁니다. 악의적인 서버에 연결되면 프로그램이 멈추거나 메모리의 잘못된 영역을 읽을 수 있습니다.
🇺🇸 원문 (English)
psqlODBC trusts counts and lengths in server data in three places. SQLBulkOperations uses a server-supplied row count in a size subtraction that can underflow. SQLStatistics iterates index keys using a server-supplied key count without bounding it to the fixed storage. Bytea octal decoding reads up to two bytes past the end of a truncated escape sequence. A server not trusted under current SSL settings can crash the client or make it read out of bounds. Versions before psqlODBC 18.00.0006 are affected.
📍 영향받는 시스템
psqlODBC 18.00.0006 이전 버전을 사용하는 모든 클라이언트 시스템
⚔️ 공격 벡터
공격자가 신뢰되지 않은 악의적 PostgreSQL 서버를 구성하거나 중간자 공격으로 클라이언트를 해당 서버에 연결하도록 유도
🛡️ 대응 방법
psqlODBC를 18.00.0006 이상 버전으로 업데이트하고, 신뢰할 수 없는 서버에 대한 연결을 피하며 SSL 인증서 검증을 활성화
🔧 검증 코드
출력된 psqlODBC 패키지 버전이 18.00.0006 미만이면 취약하며, 18.00.0006 이상이면 패치가 적용된 것입니다.
odbcinst -j 2>/dev/null; dpkg -l | grep -i psqlodbc 2>/dev/null; rpm -qa | grep -i psqlodbc 2>/dev/null