🇰🇷 한글 설명
rabbitmq-c 0.16.0 미만 버전에서 악의적인 AMQP 서버가 크기가 작은 HEADER 또는 METHOD 프레임을 전송할 경우 amqp_handle_input() 함수 내에서 부호 없는 size_t 언더플로우가 발생합니다. 이로 인해 경계 검사를 우회하여 메모리 범위를 벗어난 읽기(Out-of-bounds read)가 발생하고 프로세스가 충돌할 수 있습니다. TLS 인증이 없는 환경에서는 중간자 공격(On-path attacker)을 통해서도 발생 가능합니다.
💡 쉬운 설명
RabbitMQ를 사용하는 프로그램이 잘못된 크기의 데이터를 받았을 때 계산 오류가 발생하여 프로그램이 갑자기 꺼지는 문제입니다. 해커가 중간에서 가짜 데이터를 보내 서비스가 멈추게 만들 수 있습니다.
🇺🇸 원문 (English)
rabbitmq-c is a C-language AMQP client library for RabbitMQ. Prior to 0.16.0, a malicious AMQP server can send an undersized HEADER or METHOD frame during client login and cause unsigned size_t underflow in amqp_handle_input() in librabbitmq/amqp_connection.c. The parser subtracts HEADER_SIZE, fixed per-frame fields, and FOOTER_SIZE from state->target_size without first checking the minimum frame length. The wrapped encoded.len value is passed through amqp_decode_properties() to amqp_decode_table_internal(), where it defeats bounds checks and causes an out-of-bounds read and process crash. An on-path attacker can also trigger the issue when AMQP traffic is not protected by TLS with certificate validation. The demonstrated impact is denial of service, with no reliable memory disclosure or code execution shown. This issue is fixed in version 0.16.0.
📍 영향받는 시스템
rabbitmq-c version < 0.16.0
⚔️ 공격 벡터
악의적인 AMQP 서버 또는 TLS 인증이 없는 환경에서의 중간자 공격(On-path attack)
🛡️ 대응 방법
rabbitmq-c 라이브러리를 0.16.0 이상의 버전으로 업데이트하고, AMQP 통신 시 TLS 인증을 적용하십시오.
🔧 검증 코드
출력된 버전 정보가 0.16.0 미만인지 확인하십시오.
dpkg -l librabbitmq-dev 2>/dev/null | grep -E 'librabbitmq' || rpm -qa | grep rabbitmq-c