High, CVSS 7.5MavenPublished
Micronaut has unbounded formattersCache in TimeConverterRegistrar that Allows Memory Exhaustion via Accept-Language Header
CVE-2026-44241 · GHSA-8hjv-92q9-g4xj
- Affected
- Maven io.micronaut:micronaut-context >= 4.3.0, < 4.10.22; >= 3.10.0, < 3.10.6; < 3.8.14
- Fixed in
- 3.8.144.10.223.10.6· Vendor fix available
- Issue
- 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 is structurally identical to the recently patched GHSA-2hcp-gjrf-7fhc (DefaultHtmlErrorResponseBodyProvider), but TimeConverterRegistrar.formattersCache was not covered by that fix. Details The vulnerable cache is declared in context/src/main/java/io/micronaut/runtime/converters/time/TimeConverterRegistrar.java at line 123: The getFormatter method at line 434 inserts into this map with no eviction or size limit: The attacker-controlled…
Recommended action: Upgrade to 4.10.22, 3.10.6 or 3.8.14 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.