🇰🇷 한글 설명
RabbitMQ Java 클라이언트 라이브러리에서 협상된 AMQP frame_max 값이 일관되게 적용되지 않는 취약점이 발견되었습니다. 악의적인 브로커가 협상된 크기보다 큰 프레임을 전송할 경우, 클라이언트가 이를 거부하지 않고 메모리를 할당 및 디코딩을 시도하여 서비스 거부(DoS) 상태를 유발할 수 있습니다.
💡 쉬운 설명
통신 규칙을 어기고 너무 큰 데이터를 보내는 가짜 서버에 연결될 경우, 프로그램이 이를 처리하려다 과부하가 걸려 멈출 수 있는 문제입니다. 이로 인해 연결된 서비스가 정상적으로 작동하지 않을 수 있습니다.
🇺🇸 원문 (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, the AMQP connection tuning path records the negotiated AMQP frame_max value, but src/main/java/com/rabbitmq/client/impl/SocketFrameHandler.java and NettyFrameHandlerFactory continue to validate broker-controlled frame payload lengths against maxInboundMessageBodySize because the negotiated limit is not applied consistently through setMaxInboundFramePayloadSize. A malicious or compromised broker can send a method frame larger than the negotiated frame_max during or after connection establishment, causing the client to allocate and decode a protocol-invalid frame instead of rejecting it with MalformedFrameException. The protocol violation can disrupt the affected connection and cause client-side denial of service. This issue is fixed in version 5.33.0.
📍 영향받는 시스템
RabbitMQ Java client library (version 5.33.0 미만)
⚔️ 공격 벡터
악의적으로 조작된 브로커가 협상된 프레임 크기보다 큰 데이터를 전송하여 클라이언트의 자원을 소모함
🛡️ 대응 방법
RabbitMQ Java client 라이브러리를 5.33.0 버전 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 결과에서 rabbitmq-client의 버전을 확인하여 5.33.0 미만인지 체크합니다.
mvn dependency:list | grep rabbitmq-client