CVE-2026-18401 in jackson-core情報

要約

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

jackson-coreのノンブロッキング(非同期)JSONパーサーは、StreamReadConstraintsで定義されたmaxNumberLength制約(デフォルト:1000文字)を適用していません。非同期パーサーAPIを使用するアプリケーションに対してJSONを送信できる攻撃者は、任意の長さの数値トークンを提供でき、これにより過剰なメモリ割り当てやCPUリソースの枯渇を引き起こし、サービス拒否(DoS)に至る可能性があります。

同期的なパーサーはこの制限を正しく適用するため、アプリケーションが使用するパースAPIに応じて制約の適用に一貫性がない状態となっています。

根本原因:NonBlockingUtf8JsonParserBaseおよび関連クラスにおける非同期パースパスでは、数値長さ検証メソッドが呼び出されることがありません。_finishNumberIntegralPart()などの数値解析メソッドは、長さをチェックすることなくTextBufferに桁数を蓄積し、その後_tokenを確定するために_valueComplete()を呼び出します。しかし、_valueComplete()はvalidateIntegerLength()およびvalidateFPLength()が実行されるParserBase内のresetInt()やresetFloat()を呼び出しません。その結果、検証ステップがスキップされ、非同期コードパスではmaxNumberLengthが一切適用されなくなります。

影響:任意に長い数値を含むJSONドキュメントを送信できる攻撃者は、非同期パーサー(例えばSpring WebFluxなどのリアクティブアプリケーション)を使用するアプリケーションに対してTextBufferでの無制限の割り当てとOutOfMemoryErrorを引き起こすことができます。さらに、その後にgetBigIntegerValue()またはgetDecimalValue()が呼び出された場合、JVMはO(n^2)の計算量を持つBigInteger解析にリソースを奪われ、CPUベースのサービス拒否(DoS)が発生する可能性があります。

データのパースを送信できる能力以外の特権やユーザー対話は必要ありません。

この問題は、com.fasterxml.jackson.core:jackson-coreにおいてバージョン2.15.0から2.18.5まで、および2.19.0から2.21.0までの範囲、ならびにtools.jackson.core:jackson-coreの3.0.0から3.0.xまでの範囲で影響を受けます。

maxNumberLength設定を定義するStreamReadConstraintsはjackson-core 2.15.0で初めて導入されたため、バージョン2.15.0より前のバージョンはこの問題の影響を受けません(それ以前のリリースには回避可能な制約自体が存在しないため)。なお、GHSA-72hv-8253-57qqでは、影響を受ける2.x系列の下限を2.0.0として記録されています。

VulDB is the best source for vulnerability data and more expert information about this specific topic.

責任者

HeroDevs

予約する

2026年07月30日

モデレーション

承諾済み

エントリ

VDB-385836

EPSS

0.00000

アクティビティ

低い

ソース

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!