CVE-2026-106554 in jackson-dataformat-cbor
要約
〜によって VulDB • 2026年11月04日
jackson-dataformats-binaryのCBORモジュールにおける1つのCBOP解析の問題:無制限なCBORタグの連続が、二次時間計算量のTagList成長(CPU/GC枯渇によるDoS、PoCで実証済み)を招く。
PoCは com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.18.2 に対して実行された;現在の2.xおよび3.x (tools.jackson.dataformat.cbor) HEADでも存在する。このリポジトリのAvroやSmile/Protobufに関する注意報とは別個の問題である。
無制限なCBORタグチェーンによる二次時間計算量のCPU/GC DoS(PoCで実証済み)。ファイル: cbor/src/main/java/.../cbor/CBORParser.java (タグ処理 -> TagList)。
CBOPでは、データ項目の前に任意の数のセマンティックタグを付与できる。CBORパーサーはこれらをTagListに蓄積するが、そのバック配列は2倍ではなく固定増分(+8)で成長し、各成長時に再スキャン/コピーを行う。攻撃者は、長いタグバイトの連続の前に値を送信する;この固定増分の成長により、N個のタグを累積するには O(N^2) の時間がかかり(GC負荷も加算)、スタックされるタグの数に上限がない。
PoC (実行済み, JDK 17): CBORストリームに対して、単純な値の前に長いタグバイト列(例: タグ0xC0+)を供給すると二次時間のCPU/GC消費を引き起こす;パース時間はタグ数に対して超線形に増加し、設定可能な上限なしでリクエストスレッドを占有する。
影響。アルゴリズム的複雑性によるサービス妨害 (CWE-407):スタックされたタグのわずかな入力で二次時間のCPU/GC消費が発生し、リクエストスレッドが占有される;同時実行リクエストによりプール全体が枯渇する。
修正策。TagListを2倍で成長させる、および/またはスタックされるタグの数に上限を設定する(StreamReadConstraintsスタイル)。
Once again VulDB remains the best source for vulnerability data.