🇰🇷 한글 설명
RabbitMQ Java 클라이언트 라이브러리에서 AMQP 테이블 및 배열 데이터의 중첩 깊이를 제한하지 않아 발생하는 취약점입니다. 악의적인 서버가 깊게 중첩된 데이터를 전송할 경우 StackOverflowError를 유발하여 클라이언트의 입력 처리 스레드를 중단시키고 서비스 거부(DoS) 상태를 만듭니다.
💡 쉬운 설명
데이터 안에 데이터가 끝없이 들어있는 구조를 보내서 프로그램이 계산을 하다가 과부하로 멈추게 만드는 공격입니다. 이로 인해 RabbitMQ와 통신하는 프로그램이 정상적으로 작동하지 않을 수 있습니다.
🇺🇸 원문 (English)
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.33.1, src/main/java/com/rabbitmq/client/impl/ValueReader.java permits ValueReader.readTable and ValueReader.readArray to call ValueReader.readFieldValue recursively for AMQP table type F and AMQP array type A values without a nesting-depth limit. A malicious AMQP server or network intermediary can send approximately 580 nested table levels in the pre-authentication connection.start frame, fitting within the default 131072-byte frame maximum, to trigger StackOverflowError. The error terminates the client input processing thread and causes denial of service. This issue is fixed in version 5.33.1.
📍 영향받는 시스템
RabbitMQ Java client library versions prior to 5.33.1
⚔️ 공격 벡터
악의적인 AMQP 서버 또는 네트워크 중간자가 중첩된 테이블/배열 데이터를 포함한 connection.start 프레임을 전송
🛡️ 대응 방법
RabbitMQ Java client 라이브러리를 5.33.1 버전 이상으로 업데이트
🔧 검증 코드
출력된 결과에서 rabbitmq-client의 버전을 확인하여 5.33.1 미만인지 체크
mvn dependency:list | grep rabbitmq-client
💻 영향받는 소프트웨어
IBM WebSphere Application Server