脆弱性
AMQPプロトコルパーサーの readLongstr 関数における境界チェックの不備により、ストリーム同期ずれの脆弱性が存在する。テーブルフィールド内の長い文字列を解析する際、符号付き32ビット整数の最大値(約2.1 GiB)を超える長さが指定されると、不適切なエラーハンドリングが発生する。パーサーはネットワークバッファからデータを読み取らずに解析成功(空文字列)を返すため、バッファ内のポインタと実際のプロトコル構造がずれる。これにより、攻撃者が細工したペイロードの一部が正規のAMQPフレームとして誤認される危険がある。
対象ソフト
RabbitMQは、アプリケーション間でメッセージをやり取りするための広く利用されているメッセージブローカーであり、amqp091-goはそのGo言語向けクライアントライブラリである。
影響
パーサーの同期が崩れることで、攻撃者はメッセージペイロード内に偽造されたAMQPフレーム(接続の切断、チャネルの開放、メッセージの公開など)を埋め込み、クライアントやサーバーに意図しない操作を実行させることができる。その結果、リモートコード実行(RCE)、不正なデータの注入、または通信セッションの完全なハイジャックを招く恐れがある。
対応策
1.13.0 以降にアップグレードすること。