Описание
AMQP 0-9-1 body assembly never validates accumulated size
Origin
This vulnerability was identified by Team RabbitMQ and/or other teams at Broadcom, not via a responsible disclosure from an external researcher.
Impact
A reader process accumulates memory until the memory alarm fires, degrading all publishers cluster-wide, or until the node runs out of memory. The memory alarm provides only partial mitigation, since it is reactive rather than preventive. AMQP 0-9-1 is the most widely used protocol, and any publisher can trigger this condition.
Description
The content-header BodySize (a uint64) was stored without validation against max_message_size. The size check ran only when assembly completed. By declaring body_size = 2^63-1 and then streaming fragments, a client ensured that check_msg_size never fired, so the accumulated body size went unbounded.
Preconditions
Any authenticated AMQP 0-9-1 client with publish permission can exploit this.
CVSS
CVSS v4.0: CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N (7.1, High). Fixed in 4.3.0, 4.2.6, 4.1.11, 4.0.20, 3.13.15.
Пакеты
rabbitmq
>= 4.2.0, < 4.2.6
4.2.6
rabbitmq
>= 4.1.0, < 4.1.11
4.1.11
rabbitmq
>= 4.0.0, < 4.0.20
4.0.20
rabbitmq
>= 3.13.0, < 3.13.15
3.13.15