CVE-2024-3884CVE-2024-3884是Red Hat Undertow中的一个高危拒绝服务漏洞。Undertow是一个高性能、低内存占用的Java HTTP服务器,被广泛应用于JBoss/WildFly等企业级应用服务器中。该漏洞源于FormEncodedDataDefinition类的doParse(StreamSourceChannel)方法在处理大型application/x-www-form-urlencoded编码的表单数据时存在内存管理问题。当攻击者向受影响服务器发送包含超大表单数据的请求时,该方法会触发OutOfMemoryError,导致服务器内存耗尽并崩溃。由于该漏洞可通过网络远程触发,且无需任何认证或用户交互,攻击者可以轻易地对目标服务器发起拒绝服务攻击。此漏洞的CVSS评分为7.5分,属于高危级别,对使用Undertow作为Web服务器的企业应用构成严重威胁。
漏洞存在于Undertow的FormEncodedDataDefinition.doParse(StreamSourceChannel)方法中。该方法负责解析HTTP请求中application/x-www-form-urlencoded类型的表单数据。当服务器接收到包含大型表单数据的请求时,该方法会将整个表单数据加载到内存中进行处理。在处理过程中,由于缺乏对输入数据大小的有效限制和流式处理机制,当表单数据超过服务器可用内存时,会触发OutOfMemoryError异常。攻击者可以通过构造包含超大参数值的POST请求来触发此漏洞,例如发送大量长字符串参数或大量参数名值对。漏洞的利用方式简单直接,攻击者只需构造恶意的HTTP POST请求,设置Content-Type为application/x-www-form-urlencoded,并在请求体中包含超过服务器内存容量的表单数据。服务器在调用doParse方法时会尝试将整个请求体加载到内存,最终导致内存耗尽、Java堆空间溢出,服务器进程崩溃或变得无响应。