世界で最も広く導入されているオープンソースのメッセージブローカーであるRabbitMQに、2件の深刻なアクセス制御脆弱性が発見されました。
MiggoのLiad Eliyahu氏によると、一方の欠陥は未認証の攻撃者がブローカーのOAuthシークレットを盗み取り、完全な管理者権限を奪取することを可能にし、もう一方はログイン済みの任意のユーザーが他のテナントのデータを密かに覗き見できてしまうというものです。
両脆弱性は、メンテナーのMichael Klishin氏との協調的な情報開示を経てすでに修正されています。RabbitMQは、注文確認、決済イベント、認証トリガー、サービス間通信といった、現代のアプリケーションの内部配管を担っています。
年間1,500万件以上のダウンロード数を誇り、世界中のコンテナの約8%を支えていることから、ブローカーが乗っ取られれば、そこを流れるあらゆる情報が危険にさらされることになります。
CVE-2026-57219(CVSSスコア8.7、深刻度「高」)は認証を一切必要としません。RabbitMQの管理インターフェースにはGET /api/authという旧式のエンドポイントが残されており、これが機密情報であるoauth_client_secretを含むブローカーのOAuth設定を、誰の要求に対しても返してしまう状態でした。
Auth0、Entra ID、Keycloak、UAAといった機密クライアント方式のOAuth設定を用いる環境では、攻撃者はこの漏洩したシークレットを使って管理者トークンと交換し、メッセージ、キュー、ユーザー、ブローカー設定に対する完全な制御権を握ることができました。
根本原因は驚くほど単純なものでした。他のあらゆる機密性の高い管理エンドポイントとは異なり、このエンドポイントの認可関数is_authorized/2が常にtrueを返すようハードコードされていたのです。
CVE-2026-57221(CVSSスコア5.3、深刻度「中」)は、権限がまったくない状態でも有効なログインさえあれば悪用可能です。キューやエクスチェンジの存在確認に使われるRabbitMQの「パッシブ宣言」操作は、権限チェックを完全にスキップしていました。
認証済みのユーザーであれば誰でも、実際の権限にかかわらず、共有された仮想ホスト内のキューとエクスチェンジを列挙し、メッセージ・コンシューマーの統計情報を取得できてしまう状態でした。
このバグの原因をたどると、コード内の未使用変数の命名規則に行き着きました。これが意図せず、本来正しく実行されるはずだった他の操作に対する認可チェックを無効化してしまっていたのです。
両脆弱性はRabbitMQ 3.13.0(2024年初頭)以降存在していましたが、現在はバージョン4.3.0、4.2.6、4.1.11、4.0.20、3.13.15で修正されています。実際の悪用は確認されていません。
Miggoのセキュリティ研究チームは、並列に動作する複数のAIエージェントを展開し、矛盾点、すなわち他と異なる認可のかけ方をしているエンドポイントや、兄弟にあたる操作では課されているはずのチェックが欠けている操作を探し出していると述べています。RabbitMQに対して行われた、開示済みの1回の実行は約7時間続き、206件の仮説を検証しました。
両脆弱性は2年以上にわたって見過ごされてきました。このことは、成熟し広く利用されているソフトウェアの中にも、微妙な認可の不整合が潜んでいる可能性があることを浮き彫りにしています。
翻訳元: https://cyberpress.org/critical-rabbitmq-flaw/