Undertow: infinite loop in sslconduit during close
Description
A flaw was found in undertow. This issue makes achieving a denial of service possible due to an unexpected handshake status updated in SslConduit, where the loop never terminates.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Undertow's SslConduit has an infinite loop bug in TLS handshake handling, allowing remote attackers to cause denial of service.
The vulnerability exists in Undertow's SslConduit class, where an unexpected handshake status update causes the loop to never terminate, leading to a denial of service [1][2][3][4].
An attacker can exploit this by sending a specially crafted TLS handshake that triggers the infinite loop in the SSL/TLS processing. No authentication is required, and the attack can be performed remotely [4].
Successful exploitation results in a denial of service condition, consuming CPU resources indefinitely, making the server unresponsive [4].
Red Hat has released security updates for Red Hat JBoss Enterprise Application Platform (EAP) to address this issue. Affected users should apply the patches as referenced in the errata [1][2][3].
AI Insight generated on May 20, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
io.undertow:undertow-coreMaven | >= 2.3.0, < 2.3.5.Final | 2.3.5.Final |
io.undertow:undertow-coreMaven | < 2.2.24.Final | 2.2.24.Final |
Affected products
2Patches
31b763064a41aMerge pull request #1453 from fl4via/UNDERTOW-2239
1 file changed · +2 −1
core/src/main/java/io/undertow/protocols/ssl/SslConduit.java+2 −1 modified@@ -1004,7 +1004,8 @@ private synchronized long doWrap(ByteBuffer[] userBuffers, int off, int len) thr private SSLEngineResult wrapAndFlip(ByteBuffer[] userBuffers, int off, int len) throws IOException { SSLEngineResult result = null; - while (result == null || (result.getHandshakeStatus() == SSLEngineResult.HandshakeStatus.NEED_WRAP && result.getStatus() != SSLEngineResult.Status.BUFFER_OVERFLOW)) { + while (result == null || (result.getHandshakeStatus() == SSLEngineResult.HandshakeStatus.NEED_WRAP + && result.getStatus() != SSLEngineResult.Status.BUFFER_OVERFLOW && !engine.isInboundDone())) { if (userBuffers == null) { result = engine.wrap(EMPTY_BUFFER, wrappedData.getBuffer()); } else {
1302c8cf4476[UNDERTOW-2239] CVE-2023-1108 At SslConduit.wrapAndFlip, do not attempt to wrap if engine.isInboundDone()
1 file changed · +2 −1
core/src/main/java/io/undertow/protocols/ssl/SslConduit.java+2 −1 modified@@ -999,7 +999,8 @@ private synchronized long doWrap(ByteBuffer[] userBuffers, int off, int len) thr private SSLEngineResult wrapAndFlip(ByteBuffer[] userBuffers, int off, int len) throws IOException { SSLEngineResult result = null; - while (result == null || (result.getHandshakeStatus() == SSLEngineResult.HandshakeStatus.NEED_WRAP && result.getStatus() != SSLEngineResult.Status.BUFFER_OVERFLOW)) { + while (result == null || (result.getHandshakeStatus() == SSLEngineResult.HandshakeStatus.NEED_WRAP + && result.getStatus() != SSLEngineResult.Status.BUFFER_OVERFLOW && !engine.isInboundDone())) { if (userBuffers == null) { result = engine.wrap(EMPTY_BUFFER, wrappedData.getBuffer()); } else {
ccc053b55f5d[UNDERTOW-2239] CVE-2023-1108 At SslConduit.wrapAndFlip, do not attempt to wrap if engine.isInboundDone()
1 file changed · +2 −1
core/src/main/java/io/undertow/protocols/ssl/SslConduit.java+2 −1 modified@@ -1004,7 +1004,8 @@ private synchronized long doWrap(ByteBuffer[] userBuffers, int off, int len) thr private SSLEngineResult wrapAndFlip(ByteBuffer[] userBuffers, int off, int len) throws IOException { SSLEngineResult result = null; - while (result == null || (result.getHandshakeStatus() == SSLEngineResult.HandshakeStatus.NEED_WRAP && result.getStatus() != SSLEngineResult.Status.BUFFER_OVERFLOW)) { + while (result == null || (result.getHandshakeStatus() == SSLEngineResult.HandshakeStatus.NEED_WRAP + && result.getStatus() != SSLEngineResult.Status.BUFFER_OVERFLOW && !engine.isInboundDone())) { if (userBuffers == null) { result = engine.wrap(EMPTY_BUFFER, wrappedData.getBuffer()); } else {
Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
24- access.redhat.com/errata/RHSA-2023:1184ghsavendor-advisoryx_refsource_REDHATWEB
- access.redhat.com/errata/RHSA-2023:1185ghsavendor-advisoryx_refsource_REDHATWEB
- access.redhat.com/errata/RHSA-2023:1512ghsavendor-advisoryx_refsource_REDHATWEB
- access.redhat.com/errata/RHSA-2023:1513ghsavendor-advisoryx_refsource_REDHATWEB
- access.redhat.com/errata/RHSA-2023:1514ghsavendor-advisoryx_refsource_REDHATWEB
- access.redhat.com/errata/RHSA-2023:1516ghsavendor-advisoryx_refsource_REDHATWEB
- access.redhat.com/errata/RHSA-2023:2135ghsavendor-advisoryx_refsource_REDHATWEB
- access.redhat.com/errata/RHSA-2023:3883ghsavendor-advisoryx_refsource_REDHATWEB
- access.redhat.com/errata/RHSA-2023:3884ghsavendor-advisoryx_refsource_REDHATWEB
- access.redhat.com/errata/RHSA-2023:3885ghsavendor-advisoryx_refsource_REDHATWEB
- access.redhat.com/errata/RHSA-2023:3888ghsavendor-advisoryx_refsource_REDHATWEB
- access.redhat.com/errata/RHSA-2023:3892ghsavendor-advisoryx_refsource_REDHATWEB
- access.redhat.com/errata/RHSA-2023:3954ghsavendor-advisoryx_refsource_REDHATWEB
- access.redhat.com/errata/RHSA-2023:4612ghsavendor-advisoryx_refsource_REDHATWEB
- github.com/advisories/GHSA-m4mm-pg93-fv78ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2023-1108ghsaADVISORY
- access.redhat.com/security/cve/CVE-2023-1108ghsavdb-entryx_refsource_REDHATWEB
- bugzilla.redhat.com/show_bug.cgighsaissue-trackingx_refsource_REDHATWEB
- github.com/undertow-io/undertow/commit/1302c8cf4476936802504efe0d36c58dcd954f78ghsaWEB
- github.com/undertow-io/undertow/commit/1b763064a41a30583b5df9a118898513007a70beghsaWEB
- github.com/undertow-io/undertow/commit/ccc053b55f5de9872bc1a4999fd6aa85fc5e146dghsaWEB
- github.com/undertow-io/undertow/pull/1457ghsaWEB
- security.netapp.com/advisory/ntap-20231020-0002ghsaWEB
- security.netapp.com/advisory/ntap-20231020-0002/mitre
News mentions
0No linked articles in our index yet.