🇰🇷 한글 설명
RabbitMQ Java 클라이언트 라이브러리에서 신뢰할 수 없는 시스템 응답의 javaReturnType 값을 검증 없이 Class.forName()에 전달하여 정적 초기화 코드를 실행할 수 있는 취약점입니다. 공격자가 네트워크 중간에서 응답을 조작할 경우 JVM 내의 특정 클래스를 실행시켜 기밀성, 무결성, 가용성에 영향을 줄 수 있습니다. 이 문제는 5.33.0 버전에서 수정되었습니다.
💡 쉬운 설명
프로그램이 외부에서 받은 잘못된 정보를 그대로 실행 가능한 코드로 오해하여 실행하는 보안 약점입니다. 해커가 중간에서 가짜 정보를 보내면 프로그램이 의도치 않은 동작을 하거나 멈출 수 있습니다.
🇺🇸 원문 (English)
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.33.0, com.rabbitmq.tools.jsonrpc.ProcedureDescription receives a javaReturnType value in an untrusted system.describe response and passes it through JSONUtil.tryFill, setJavaReturnType, and computeReturnTypeAsJavaClass to Class.forName(javaReturnType) with initialization enabled. An attacker able to answer the JsonRpcClient request through a shared broker or network interception can select a class already present in the victim JVM and trigger its static initializer, while JsonRpcClient.java later passes getReturnType output to mapper.parse and may also create type confusion. Successful exploitation can affect confidentiality, integrity, and availability in the client process. This issue is fixed in version 5.33.0.
📍 영향받는 시스템
RabbitMQ Java client library (version 5.33.0 미만)
⚔️ 공격 벡터
공유 브로커 또는 네트워크 중간자 공격(MITM)을 통한 JsonRpcClient 응답 조작
🛡️ 대응 방법
RabbitMQ Java client 라이브러리를 5.33.0 버전 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 rabbitmq-client의 버전을 확인하여 5.33.0 미만인지 체크합니다.
mvn dependency:list | grep rabbitmq-client