🇰🇷 한글 설명
Eclipse Vert.x의 MSSQL 클라이언트 내 TDS 메시지 디코더가 수신되는 TDS 패킷을 누적 크기 제한 없이 직접 메모리 버퍼에 통합합니다. 공격자가 종료 플래그를 설정하지 않은 TDS 패킷을 지속적으로 전송할 경우, 클라이언트 측에서 무제한적인 메모리 할당이 발생하여 메모리 부족(OOM)으로 인한 시스템 충돌이 발생할 수 있습니다.
💡 쉬운 설명
데이터를 받는 과정에서 크기 제한을 두지 않아, 공격자가 가짜 데이터를 계속 보내면 컴퓨터의 메모리가 가득 차서 프로그램이 멈춰버리는 문제입니다. 인증이 완료되기 전 단계에서 발생하므로 보안에 취약합니다.
🇺🇸 원문 (English)
In Eclipse Vert.x versions [4.0.0, 4.5.34] or [5.0.0,5.0.12] or [5.1.0,5.1.9] or [5.2.0, 5.2.0], the TDS message decoder in the Vert.x MSSQL client (vertx-mssql-client) aggregates inbound TDS packets into a composite direct-memory buffer without any cumulative size limit. A malicious, compromised, or man-in-the-middle SQL Server can send a continuous stream of TDS packets without setting the END_OF_MESSAGE status flag, causing unbounded direct-memory allocation on the client and leading to an out-of-memory crash. This occurs before authentication completes.
The impacted component is io.vertx:vertx-mssql-client.
📍 영향받는 시스템
io.vertx:vertx-mssql-client [4.0.0-4.5.34, 5.0.0-5.0.12, 5.1.0-5.1.9, 5.2.0]
⚔️ 공격 벡터
악의적인 SQL 서버 또는 중간자(MitM) 공격자가 종료 플래그가 없는 TDS 패킷을 지속적으로 전송하여 메모리 고갈 유도
🛡️ 대응 방법
영향을 받지 않는 최신 버전의 vertx-mssql-client로 업데이트
🔧 검증 코드
출력된 결과에서 vertx-mssql-client의 버전을 확인하여 취약한 버전 범위에 포함되는지 체크합니다.
mvn dependency:list | grep vertx-mssql-client