REDHAT-BUG-2272325: Red Hat Undertow vulnerability
Description: Product Security received a report that Undertow might incorrectly re-use an HTTP request header value from a previous stream for a request associated with a subsequent stream on the same HTTP/2 connection. The issue is linked to the readHpackString method and its interaction with the stringBuilder field. While such behavior typically results in an error followed by the termination of the HTTP/2 connection, it presents a potential vector for information leakage between requests.
The original reporter referenced a similar issue in Apache Tomcat (CVE-2020-17527). In the patch for that vulnerability (https://github.com/apache/tomcat/commit/8d2fe6894d6e258a6d615d7f786acca80e6020cb) a StringBuilder field was improperly reused across multiple requests, leading to this issue. In the io.undertow.protocols.http2.HpackDecoder class of Undertow, within the readHpackString method, there is a code pattern identical to the one mentioned:
for (int i = 0; i < length; ++i) { stringBuilder.append((char) buffer.get()); } String ret = stringBuilder.toString(); stringBuilder.setLength(0); if (ret.isEmpty()) { //return the interned empty string, rather than allocating a new one each time return ""; }
Steps to reproduce: No reproducers or PoC were provided, this issue was identified through static testing.
Affected versions: 2.2.x, 2.3.x, and 3.x
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Operational
Inventory deployments to determine whether you are running Undertow in the affected series: 2.2.x, 2.3.x, or 3.x. Identify all services and containers that include Undertow in those version ranges.
- Operational
Inspect and modify the implementation of io.undertow.protocols.http2.HpackDecoder.readHpackString to eliminate reuse of a shared StringBuilder (the stringBuilder field). Ensure the StringBuilder is not reused across requests/streams (for example, make it a method-local StringBuilder or otherwise prevent cross-stream reuse), rebuild Undertow with the change, and redeploy the fixed binaries.
- Operational
If you detect any occurrences of this bug, or otherwise suspect information leakage between requests, rotate any credentials or secrets that may have been exposed and remediate affected sessions before placing the instance back into production.
Event History
Frequently Asked Questions
What is the severity of REDHAT-BUG-2272325?
The vulnerability REDHAT-BUG-2272325 is classified as a high severity issue.
How do I fix REDHAT-BUG-2272325?
To fix REDHAT-BUG-2272325, update Undertow to a version above 3.0.0 or apply the appropriate security patches provided by Red Hat.
What specific component of Undertow is affected by REDHAT-BUG-2272325?
The vulnerability REDHAT-BUG-2272325 affects the readHpackString method in Undertow, which may incorrectly reuse HTTP request header values.
What versions of Undertow are impacted by REDHAT-BUG-2272325?
Undertow versions between 2.2.0 and 3.0.0 are affected by vulnerability REDHAT-BUG-2272325.
Can REDHAT-BUG-2272325 lead to information disclosure?
Yes, REDHAT-BUG-2272325 could potentially lead to unintended information disclosure through the reuse of HTTP request header values.