RabbitMQ Federation Upstream Skips Vhost Authorization Allowing Cross-Vhost Message Access
CyStack researcher Duong Tran discovered an authorization-bypass vulnerability in RabbitMQ's Federation plugin that breaks the broker's core tenancy boundary, and proved it by draining another tenant's messages. Vhost isolation is what keeps tenants apart in RabbitMQ, and a 'policymaker' user is supposed to be confined to the vhosts it can log into. But when a federation-upstream is defined with an empty-host ("direct") URI, the validator never checks the creating user against the vhost embedded in that URI — the exact check RabbitMQ's own Shovel plugin performs on the same primitive. As a result a low-trust 'policymaker' on one vhost can declare an upstream, queue, and policy that pull messages out of a completely different vhost it has no permission on; the federation link connects internally as a privileged 'none' user that approves every check. With the default ack mode the victim's messages are consumed and deleted, not merely copied, so it is both a confidentiality breach and data loss across the tenancy boundary. It affects RabbitMQ 3.13.0–3.13.17, 4.0.0–4.0.23, 4.1.0–4.1.13, 4.2.0–4.2.8, and 4.3.0–4.3.2; upgrading to 3.13.18, 4.0.24, 4.1.14, 4.2.9, or 4.3.3 fixes it.
auth-bypassmessage-accessvhost