{"schema_version":"1.7.2","id":"OESA-2024-2579","modified":"2024-12-20T13:08:01Z","published":"2024-12-20T13:08:01Z","upstream":["CVE-2024-4109"],"summary":"undertow security update","details":"Java web server using non-blocking IO\r\n\r\nSecurity Fix(es):\r\n\r\nDescription: 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 \u0026lt; 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 \u0026quot;\u0026quot;; } ```  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(CVE-2024-4109)","affected":[{"package":{"ecosystem":"openEuler:22.03-LTS-SP3","name":"undertow","purl":"pkg:rpm/openEuler/undertow\u0026distro=openEuler-22.03-LTS-SP3"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.4.0-8.oe2203sp3"}]}],"ecosystem_specific":{"noarch":["undertow-1.4.0-8.oe2203sp3.noarch.rpm","undertow-javadoc-1.4.0-8.oe2203sp3.noarch.rpm"],"src":["undertow-1.4.0-8.oe2203sp3.src.rpm"]}},{"package":{"ecosystem":"openEuler:20.03-LTS-SP4","name":"undertow","purl":"pkg:rpm/openEuler/undertow\u0026distro=openEuler-20.03-LTS-SP4"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.4.0-8.oe2003sp4"}]}],"ecosystem_specific":{"noarch":["undertow-1.4.0-8.oe2003sp4.noarch.rpm","undertow-javadoc-1.4.0-8.oe2003sp4.noarch.rpm"],"src":["undertow-1.4.0-8.oe2003sp4.src.rpm"]}},{"package":{"ecosystem":"openEuler:22.03-LTS-SP1","name":"undertow","purl":"pkg:rpm/openEuler/undertow\u0026distro=openEuler-22.03-LTS-SP1"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.4.0-8.oe2203sp1"}]}],"ecosystem_specific":{"noarch":["undertow-1.4.0-8.oe2203sp1.noarch.rpm","undertow-javadoc-1.4.0-8.oe2203sp1.noarch.rpm"],"src":["undertow-1.4.0-8.oe2203sp1.src.rpm"]}},{"package":{"ecosystem":"openEuler:24.03-LTS","name":"undertow","purl":"pkg:rpm/openEuler/undertow\u0026distro=openEuler-24.03-LTS"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.4.0-9.oe2403"}]}],"ecosystem_specific":{"noarch":["undertow-1.4.0-9.oe2403.noarch.rpm","undertow-javadoc-1.4.0-9.oe2403.noarch.rpm"],"src":["undertow-1.4.0-9.oe2403.src.rpm"]}},{"package":{"ecosystem":"openEuler:22.03-LTS-SP4","name":"undertow","purl":"pkg:rpm/openEuler/undertow\u0026distro=openEuler-22.03-LTS-SP4"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.4.0-8.oe2203sp4"}]}],"ecosystem_specific":{"noarch":["undertow-1.4.0-8.oe2203sp4.noarch.rpm","undertow-javadoc-1.4.0-8.oe2203sp4.noarch.rpm"],"src":["undertow-1.4.0-8.oe2203sp4.src.rpm"]}}],"references":[{"type":"ADVISORY","url":"https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2024-2579"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-4109"}],"database_specific":{"severity":"High"}}