Description
Micronaut Framework is a JVM-based full stack Java framework designed for building modular, easily testable JVM applications. From 4.3.0 to before 4.10.22, 3.10.6, and 3.8.14, TimeConverterRegistrar caches DateTimeFormatter instances in an unbounded ConcurrentHashMap<String, DateTimeFormatter> whose key is derived from the @Format annotation pattern concatenated with the locale from the HTTP Accept-Language header. Because Locale.forLanguageTag() accepts arbitrary BCP 47 private-use extensions (en-x-a001, en-x-a002, …), an unauthenticated attacker can generate an unlimited number of unique cache keys by sending requests with novel locale tags, growing the cache until heap memory is exhausted and the JVM crashes. This vulnerability is fixed in 4.10.22, 3.10.6, and 3.8.14.
Published: 2026-05-12
Score: 7.5 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Micronaut Framework is a JVM‑based full‑stack framework for building modular Java applications. From version 4.3.0 up to, but excluding, 4.10.22 – and likewise for 3.10.0 through 3.10.5 and 3.8.0 through 3.8.13 – the TimeConverterRegistrar maintains an unbounded ConcurrentHashMap that stores DateTimeFormatter instances. The key used for the cache combines an @Format annotation pattern with the locale extracted from an HTTP Accept‑Language header. Because the Locale.forLanguageTag method accepts arbitrary BCP‑47 private‑use extensions, an unauthenticated attacker can send crafted Accept‑Language headers that create an unbounded number of unique cache keys. The growing cache eventually consumes all available JVM heap memory, leading the application to crash and causing a denial‑of‑service. The flaw is remedied in release 4.10.22, 3.10.6, and 3.8.14.

Affected Systems

affected. Versions from 4.3.0 through 4.10.21, as well as 3.10.0 through 3.10.5 and 3.8.0 through 3.8.13, contain the unbounded cache. Updating to the fixed releases 4.10.22, 3.10.6 or 3.8.14 resolves the issue. No other vendor or product versions are known to be impacted.

Risk and Exploitability

The CVSS score of 7.5 indicates a high severity. The EPSS score of <1% indicates a very low historical likelihood of exploitation, yet the vulnerability is publicly known and can be triggered via a simple HTTP header. The flaw is not listed in the CISA KEV catalog. Attackers can exploit it remotely and unauthenticated by sending crafted Accept‑Language headers with private‑use extensions, so the attack vector is network‑based and requires no special privileges.

Generated by OpenCVE AI on August 2, 2026 at 02:14 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the vendor‑supplied patch: update Micronaut Framework to 4.10.22 or later, eliminating the unbounded cache that leads to CWE-400 resource exhaustion.
  • If an immediate update is not possible, configure the application or a reverse proxy to strip or reject Accept‑Language headers containing private‑use extensions. This limits cache key diversity and mitigates the CWE-400 exploit.
  • Deploy monitoring to detect sudden spikes in JVM memory usage that may indicate a cache‑overflow DoS attack caused by CWE-400. Respond by throttling or blocking offending requests.

Generated by OpenCVE AI on August 2, 2026 at 02:14 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-8hjv-92q9-g4xj Micronaut has unbounded `formattersCache` in `TimeConverterRegistrar` that Allows Memory Exhaustion via `Accept-Language` Header
History

Fri, 10 Jul 2026 01:00:00 +0000

Type Values Removed Values Added
Description Micronaut Framework is a JVM-based full stack Java framework designed for building modular, easily testable JVM applications. From 4.3.0 to before 4.10.22, TimeConverterRegistrar caches DateTimeFormatter instances in an unbounded ConcurrentHashMap<String, DateTimeFormatter> whose key is derived from the @Format annotation pattern concatenated with the locale from the HTTP Accept-Language header. Because Locale.forLanguageTag() accepts arbitrary BCP 47 private-use extensions (en-x-a001, en-x-a002, …), an unauthenticated attacker can generate an unlimited number of unique cache keys by sending requests with novel locale tags, growing the cache until heap memory is exhausted and the JVM crashes. This vulnerability is fixed in 4.10.22. Micronaut Framework is a JVM-based full stack Java framework designed for building modular, easily testable JVM applications. From 4.3.0 to before 4.10.22, 3.10.6, and 3.8.14, TimeConverterRegistrar caches DateTimeFormatter instances in an unbounded ConcurrentHashMap<String, DateTimeFormatter> whose key is derived from the @Format annotation pattern concatenated with the locale from the HTTP Accept-Language header. Because Locale.forLanguageTag() accepts arbitrary BCP 47 private-use extensions (en-x-a001, en-x-a002, …), an unauthenticated attacker can generate an unlimited number of unique cache keys by sending requests with novel locale tags, growing the cache until heap memory is exhausted and the JVM crashes. This vulnerability is fixed in 4.10.22, 3.10.6, and 3.8.14.
References

Wed, 13 May 2026 16:15:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 13 May 2026 00:45:00 +0000

Type Values Removed Values Added
First Time appeared Micronaut-projects
Micronaut-projects micronaut-core
Vendors & Products Micronaut-projects
Micronaut-projects micronaut-core

Tue, 12 May 2026 22:00:00 +0000

Type Values Removed Values Added
Description Micronaut Framework is a JVM-based full stack Java framework designed for building modular, easily testable JVM applications. From 4.3.0 to before 4.10.22, TimeConverterRegistrar caches DateTimeFormatter instances in an unbounded ConcurrentHashMap<String, DateTimeFormatter> whose key is derived from the @Format annotation pattern concatenated with the locale from the HTTP Accept-Language header. Because Locale.forLanguageTag() accepts arbitrary BCP 47 private-use extensions (en-x-a001, en-x-a002, …), an unauthenticated attacker can generate an unlimited number of unique cache keys by sending requests with novel locale tags, growing the cache until heap memory is exhausted and the JVM crashes. This vulnerability is fixed in 4.10.22.
Title Micronaut Framework: Unbounded formattersCache in TimeConverterRegistrar Allows Memory Exhaustion via Accept-Language Header
Weaknesses CWE-400
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}


Subscriptions

Micronaut-projects Micronaut-core
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-10T00:08:24.422Z

Reserved: 2026-05-05T15:42:40.520Z

Link: CVE-2026-44241

cve-icon Vulnrichment

Updated: 2026-05-13T15:30:03.723Z

cve-icon NVD

Status : Deferred

Published: 2026-05-12T22:16:35.473

Modified: 2026-06-17T10:50:24.023

Link: CVE-2026-44241

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-02T02:15:03Z

Weaknesses
  • CWE-400

    Uncontrolled Resource Consumption