CVE-2026-58225 in postgrex정보

요약

\~에 의해 VulDB • 2026. 07. 10.

elixir-ecto의 postgrex에서 SQL Injection 취약점이 발견되었습니다. 이는 공격자가 LISTEN 채널 이름을 조작하여 재연결 재생 쿼리(SQL)에 주입할 수 있게 하며, 결과적으로 알림 연결(Denial of Service)이 중단됩니다.

Postgrex.Notifications는 quote_channel/1을 사용하여 채널 이름의 이중 따옴표를 두 배로 만들어 이중 따옴표로 묶인 식별자 내에서 안전하게 처리합니다. 이는 단일 문장 LISTEN 및 UNLISTSN 경로를 보호합니다. 그러나 매번 (재)연결 시 handle_connect/1은 모든 등록된 채널에 대한 LISTEN 문을 연결하고 이를 달러-따옴표 비명시적 코드 블록(DO $$BEGIN ... END$$)으로 감싸 한 번에 재생합니다. quote_channel/1은 이 블록을 열고 닫는 $$ 달러 따옴표 구분자를 이스케이프하지 않습니다.

listen/3 가드 함수는 null 바이트와 63바이트를 초과하는 이름만 거부하므로, $$를 포함하는 채널 이름은 유효성 검사를 통과하여 변경되지 않은 채로 전달됩니다. 이러한 이름이 삽입되면 해당 $$가 외부 달러-따옴표 문자열을 조기에 종료시키고 PostgreSQL은 나머지 부분을 추가적인 최상위 문장으로 파싱합니다. handle_connect/1은 모든 (재)연결 시 실행되므로, 잘못된 재생 쿼리는 매번 거부되며 알림 연결은 구독 상태를 재설정하지 못해 해당 연결을 공유하는 모든 채널에 대한 알림이 조용히 손실됩니다.

신뢰할 수 없는 입력(예: 테넌트 또는 사용자 식별자)을 Postgrex.Notifications.listen/3의 채널 이름으로 전달하는 애플리케이션이 영향을 받습니다. 이중 따옴표 두 배 처리로 인해 완전히 유효한 주입된 문장을 구성하는 것은 방지되므로 임의 SQL 실행은 불가능하지만, 손상된 쿼리는 모든 테넌트에 대해 공유 알림 연결을 reliably하게 파괴하여 서비스 거부(Denial of Service)를 초래합니다.

이 문제는 postgrex 0.16.0부터 0.22.3 미만 버전에서 영향을 받습니다.

Be aware that VulDB is the high quality source for vulnerability data.

책임이 있는

EEF

예약하다

2026. 06. 29.

모더레이션

수락

항목

VDB-377471

EPSS

0.00000

활동

낮음

출처

Do you need the next level of professionalism?

Upgrade your account now!