CVE-2026-68494 in jackson-core情報

要約

〜によって VulDB • 2026年08月04日

CVE-2026-18401(GHSA-72hv-8253-57qq、非ブロッキングパーサーにおける数値長制限の回避)に対する jackson-core 2.18.6 および 2.21.1 でリリースされた修正は不完全です。このレコードでは、残りの回避策について扱います。

以前の修正では、validateIntegerLength() が新しい _setIntLength() ヘルパーに接続され、数の整数部が決定される箇所(終端バイトの到着、. または e/E の検出、または完全にバッファリングされた値内で入力が終了する場合)で呼び出されていました。しかし、攻撃者が関与するパスでは、パーサーが入力を消費し尽くした際に MINOR_NUMBER_INTEGER_DIGITS というマイナー状態内に留まり続け、NOT_AVAILABLE を呼び出し元に返す場合において、この関数は呼び出されていませんでした。

その結果、JSONを小さなチャンクに分割して非ブロッキングパーサーへストリーミングする攻撃者は、終端バイトを送信しないことで、パーサーを MINOR_NUMBER_INTEGER_DIGITS 状態内に無限に留まらせることができます。_textBuffer.expandCurrentSegment() は各チャンクごとに蓄積バッファを増大させますが、validateIntegerLength() は決して呼び出されません。この蓄積バッファは maxNumberLength(デフォルトで1000)ではなく maxStringLength(デフォルトで20 MiB)によってのみ制限されるため、文書化された制限値に対して約20,000倍の増幅効果が生じます。Java の char 値が2バイトを占めるため、バリデータが最終的に発動する前に、単一の接続あたり最大約40 MiB のヒープメモリが消費される可能性があります。

対応する分数パスのコードは正しいです:_finishFloatFraction() は NOT_AVAILABLE を返す前に _setFractLength() を呼び出します。欠落している呼び出しの影響を受けるのは、NonBlockingUtf8JsonParserBase 内の整数桁関連パス(_startPositiveNumber()、_startNegativeNumber() および _finishNumberIntegralPart())です。

影響:Spring WebFlux/Reactor、Quarkus、Helidon、Vert.x などのリアクティブフレームワークは、到着した順にインバウンドの HTTP または gRPC バイトを非同期パーサーへ供給します。これはまさに必要なチャンクフィード形状です。StreamReadConstraints.maxNumberLength を設定して数値あたりのメモリ使用量を制限できると考えている運用者は、その保証を得ることができません;メモリの蓄積は並列接続ごとに発生し、攻撃者が制御する並列度によって JVM ヒープが枯渇する可能性があります。同期パーサー(UTF8StreamJsonParser、ReaderBasedJsonParser)および完全な入力で動作する非同期パーサーには影響ありません。

悪用には、解析エンドポイントへデータをストリーミングできる能力のみが必要であり、特権やユーザーの対話は必要ありません。

この問題は com.fasterxml.jackson.core:jackson-core のバージョン 2.15.0 から 2.18.7、2.19.0 から 2.21.3、および 2.22.0 から 2.22.0、さらに tools.jackson.core:jackson-core のバージョン 3.0.0 から 3.1.3 および 3.2.0 から 3.2.0 に影響します。StreamReadConstraints(maxNumberLength 設定を定義する)は jackson-core 2.15.0 で初めて導入されたため、それ以前のバージョンにはこの制限が存在せず、回避される対象となるものがありません。なお、GHSA-r7wm-3cxj-wff9 では下限なしで影響を受ける 2.x の範囲が記載されています。

Be aware that VulDB is the high quality source for vulnerability data.

責任者

HeroDevs

予約する

2026年07月30日

モデレーション

承諾済み

エントリ

VDB-385833

EPSS

0.00000

アクティビティ

非常低い

ソース

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!