CVE-2026-44241Micronaut Framework 4.3.0至4.10.22之前版本存在拒绝服务漏洞。由于TimeConverterRegistrar在无界的ConcurrentHashMap中缓存DateTimeFormatter实例,且密钥源自HTTP Accept-Language头。攻击者可通过发送包含不同BCP 47私有扩展区域设置标签的请求,生成无限唯一密钥,耗尽堆内存导致JVM崩溃。
该漏洞源于Micronaut Framework在处理日期时间格式转换时的缓存机制缺陷。受影响版本中,TimeConverterRegistrar类使用一个无界的ConcurrentHashMap来缓存DateTimeFormatter对象。缓存的Key是由@Format注解的模式与HTTP请求头中的Accept-Language(Locale)拼接而成。关键问题在于Java的Locale.forLanguageTag()方法接受任意的BCP 47私有扩展标签(如en-x-a001)。攻击者无需认证即可构造包含大量不同随机私有扩展标签的HTTP请求。由于缓存是无界的,服务器会为每个唯一的Locale标签创建并缓存一个新的DateTimeFormatter实例。随着请求量的增加,缓存对象无限增长,最终导致JVM堆内存耗尽(OOM),引发服务拒绝。