cbor2のC拡張デコーダーdecode_definite_long_string関数で範囲外読み取りが原因の脆弱性
タイトル cbor2のC拡張デコーダーdecode_definite_long_string関数で範囲外読み取りが原因の脆弱性
概要

cbor2 バージョン 5.7.0 までの C 拡張デコーダー(source/decoder.c)の decode_definite_long_string() 関数には複数の脆弱性が存在します。(1) 整数アンダーフローによる範囲外読み取り (CWE-191, CWE-125) があります。チャンク処理ループで不適切な変数参照と状態のリセット漏れが発生し、UTF-8 文字を消費した後に buffer_length が 0 にリセットされません。その結果、後続の chunk_length 計算で負の値(例:chunk_length = 65536 - buffer_length)が生成され、この値が signed integer として read() メソッドに渡されることで、無制限の読み取り操作やリソース枯渇が発生する可能性があります。(2) 参照カウント解放漏れが原因でメモリリーク (CWE-401) が発生します。メイン処理ループにおいて、各イテレーションで割り当てられるチャンクオブジェクトの Python オブジェクト参照(Py_DECREF)の解放が行われていません。そのため、65536 バイトを超える CBOR 文字列の場合、ペイロードサイズに応じてメモリリークが累積し、大きな CBOR ペイロードの繰り返し処理によってメモリ枯渇攻撃を受ける可能性があります。これらの脆弱性は、65536 バイト境界に複数バイトからなる UTF-8 文字を含む定長テキスト文字列を持つ特別に細工された CBOR データを送信することで、認証なしのリモートから悪用することができます。攻撃が成功すると、プロセスがクラッシュして(CBORDecodeEOF 例外が発生し)、メモリ枯渇によるサービス拒否状態に陥る可能性があります。cbor2 の C 拡張を利用して信頼できない CBOR データを処理する全てのアプリケーション(Web API や IoT データ収集機、メッセージキュー処理など)がこの問題の影響を受けます。コミット 851473490281f82d82560b2368284ef33cf6e8f9(バージョン 5.7.1 リリース)により修正されました。

想定される影響 当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。

公表日 2025年11月18日0:00
登録日 2026年1月6日12:04
最終更新日 2026年1月6日12:04
CVSS3.0 : 重要
スコア 7.5
ベクター CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
影響を受けるシステム
agronholm
cbor2 5.7.0 およびそれ以前
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年01月06日]
  掲載
2026年1月6日12:04