🇰🇷 한글 설명
RabbitMQ의 x-jms-topic 교환기에서 바인딩 생성 시 전달되는 selector 인자가 적절한 검증 없이 Erlang의 atom 생성 과정을 거치면서 발생합니다. 인증된 저권한 사용자가 임의의 문자열을 전송하여 Erlang VM의 atom 메모리를 고갈시킴으로써 브로커 노드 전체를 중단시킬 수 있는 서비스 거부(DoS) 취약점입니다.
💡 쉬운 설명
해커가 특수한 명령어를 반복해서 보내 서버의 메모리를 가득 채워 시스템을 멈추게 만드는 공격입니다. 권한이 낮은 사용자라도 서버 전체를 마비시킬 수 있어 위험합니다.
🇺🇸 원문 (English)
RabbitMQ is a messaging and streaming broker. Prior to versions 3.13.15, 4.0.20, 4.1.11, 4.2.6, 4.3.0, When a binding is created on an x-jms-topic exchange, add_binding/3 reads the rjms_erlang_selector argument and passes it through erl_scan:string/1 then erl_parse:parse_term/1. erl_scan:string/1 interns every atom literal it tokenizes. validate_binding/2 is a no-op (-> ok.), there is no length cap, and the surrounding try/catch cannot reclaim atoms. The Java JMS client compiles selectors client-side, but the server does not enforce this , a raw AMQP client can send arbitrary selector strings. An authenticated low-privilege AMQP user confined to one vhost can crash the entire broker node (cross-tenant DoS) in <100 bind calls. Preconditions include rabbitmq_jms_topic_exchange plugin enabled (bundled; required for any JMS deployment) Authenticated AMQP user with read on an x-jms-topic exchange + write on a queue (or configure to declare both). This issue is fixed in versions 3.13.15, 4.0.20, 4.1.11, 4.2.6, 4.3.0.
📍 영향받는 시스템
RabbitMQ versions prior to 3.13.15, 4.0.20, 4.1.11, 4.2.6, 4.3.0 (with rabbitmq_jms_topic_exchange plugin enabled)
⚔️ 공격 벡터
인증된 저권한 AMQP 사용자가 x-jms-topic 교환기에 임의의 selector 문자열을 포함한 바인딩 요청을 반복 전송
🛡️ 대응 방법
RabbitMQ를 수정된 버전(3.13.15, 4.0.20, 4.1.11, 4.2.6, 4.3.0 이상)으로 즉시 업데이트하십시오.
🔧 검증 코드
출력된 버전이 취약점이 해결된 버전(3.13.15, 4.0.20, 4.1.11, 4.2.6, 4.3.0 이상)인지 확인하십시오.
rabbitmqctl version 2>/dev/null || rabbitmq --version 2>/dev/null
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
💻 영향받는 소프트웨어
Microsoft Exchange Server