<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>FasterXML - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/fasterxml/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Tue, 21 Jul 2026 22:01:19 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/fasterxml/feed.xml" rel="self" type="application/rss+xml"/><item><title>Jackson-core Async Parser Max Number Length Bypass via Chunked Digit Accumulation</title><link>https://feed.craftedsignal.io/briefs/2026-07-jackson-core-async-parser-bypass/</link><pubDate>Tue, 21 Jul 2026 22:01:19 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-07-jackson-core-async-parser-bypass/</guid><description>An incomplete fix for GHSA-72hv-8253-57qq in `jackson-core` versions 2.18.6, 2.21.1, and potentially 3.0.x/3.1.x, allows attackers to bypass `maxNumberLength` constraints in the non-blocking JSON parser by streaming JSON numbers in small chunks, leading to unbounded memory accumulation and denial of service in reactive applications.</description><content:encoded><![CDATA[<p>A critical vulnerability exists in <code>jackson-core</code> versions 2.18.6 and 2.21.1 (and presumed in 3.0.x/3.1.x), which represents an incomplete fix for GHSA-72hv-8253-57qq, initially published in February 2026. This flaw primarily impacts reactive applications that utilize <code>jackson-core</code>'s non-blocking JSON parser, such as those built with Spring WebFlux, Quarkus, Helidon, or Vert.x JSON. The vulnerability allows an attacker to bypass the configured <code>maxNumberLength</code> constraint by sending JSON containing a large number in many small, non-terminating chunks. The parser's internal <code>_textBuffer</code> then continues to accumulate digits without proper validation, expanding up to the much larger <code>maxStringLength</code> (default 20 MiB), which is a roughly 20,000x amplification over the default <code>maxNumberLength</code> (1000). This uncontrolled memory growth can lead to severe memory exhaustion and denial-of-service conditions, impacting the availability of targeted applications.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker initiates an HTTP request to a vulnerable reactive application, sending a partial JSON payload that begins a large numeric value (e.g., <code>{&quot;value&quot;:1</code>).</li>
<li>The application's <code>jackson-core</code> non-blocking JSON parser begins processing the initial data chunk.</li>
<li>The attacker continues to send subsequent HTTP request chunks, each containing a small segment of digits, without ever sending a character that would terminate the number (e.g., '.', 'e', 'E', or '}' for object closure).</li>
<li>For each incoming chunk of digits, the non-blocking parser's <code>_textBuffer.expandCurrentSegment()</code> continuously allocates more memory to accumulate the digits.</li>
<li>Due to an incomplete fix for GHSA-72hv-8253-57qq, the critical <code>validateIntegerLength</code> check is not invoked when the parser runs out of input mid-integer, allowing the buffer to grow far beyond the intended <code>maxNumberLength</code>.</li>
<li>This uncontrolled memory accumulation continues until the allocated memory reaches <code>maxStringLength</code> (default 20 MiB) or the application's Java Virtual Machine (JVM) experiences an Out-Of-Memory (OOM) error.</li>
<li>The targeted application becomes unresponsive or crashes due to resource exhaustion, resulting in a denial-of-service for legitimate users.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Applications employing <code>jackson-core</code>'s non-blocking JSON parser in reactive frameworks are critically vulnerable to denial-of-service (DoS) attacks. This includes widely used environments such as Spring WebFlux, Quarkus, Helidon, and Vert.x JSON. Attackers can exploit this bypass to force the application's JVM to allocate excessive memory, potentially leading to Out-Of-Memory (OOM) errors and application crashes. The <code>maxNumberLength</code> configuration, intended to prevent such attacks, is effectively ignored, allowing memory consumption to reach up to <code>maxStringLength</code> (20 MiB per connection by default), which represents a ~20,000-fold increase over the expected limit. This resource exhaustion severely impacts the availability and stability of affected services.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade <code>jackson-core</code> to a patched version immediately upon its release. Monitor the project's advisories for the official fix.</li>
<li>If an immediate upgrade is not possible, consider implementing a custom patch derived from the fix branch to address the missing validation calls in <code>NonBlockingUtf8JsonParserBase.java</code>.</li>
<li>Review and configure <code>StreamReadConstraints</code> in <code>JsonFactory</code> builder to enforce appropriate <code>maxStringLength</code> values. While this is a workaround for the number length issue, it can mitigate the overall memory ceiling.</li>
<li>Enable application-level logging for <code>StreamConstraintsException</code> events, particularly those related to <code>Number value length</code>, to identify and alert on attempted exploitation or abnormal large number processing.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>java</category><category>json</category><category>serialization</category><category>memory-exhaustion</category><category>denial-of-service</category></item></channel></rss>