Miggo Logo

CVE-2024-23672: Denial of Service via incomplete cleanup vulnerability in Apache Tomcat

6.3

CVSS Score
3.1

Basic Information

EPSS Score
0.61408%
Published
3/13/2024
Updated
2/13/2025
KEV Status
No
Technology
TechnologyJava

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
Package NameEcosystemVulnerable VersionsFirst Patched Version
org.apache.tomcat:tomcat-websocketmaven>= 11.0.0-M1, <= 11.0.0-M1611.0.0-M17
org.apache.tomcat:tomcat-websocketmaven>= 10.1.0-M1, <= 10.1.1810.1.19
org.apache.tomcat:tomcat-websocketmaven>= 9.0.0-M1, <= 9.0.859.0.86
org.apache.tomcat:tomcat-websocketmaven>= 8.5.0, <= 8.5.988.5.99
org.apache.tomcat.embed:tomcat-embed-websocketmaven>= 11.0.0-M1, <= 11.0.0-M1611.0.0-M17
org.apache.tomcat.embed:tomcat-embed-websocketmaven>= 10.1.0-M1, <= 10.1.1810.1.19
org.apache.tomcat.embed:tomcat-embed-websocketmaven>= 9.0.0-M1, <= 9.0.859.0.86
org.apache.tomcat.embed:tomcat-embed-websocketmaven>= 8.5.0, <= 8.5.988.5.99

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stems from incomplete cleanup during WebSocket closure. The commit introduces:

  1. A new closeConnection() method in WsSession.java to handle unregistration.
  2. Session close timeout tracking (sessionCloseTimeoutExpiry).
  3. checkCloseTimeout() in the background process. The original doClose/onClose methods directly called wsRemoteEndpoint.close() without session cleanup, and the background process lacked timeout enforcement. These gaps allowed clients to keep connections open via suspended/resumed sessions without proper termination.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

**ni*l o* S*rvi** vi* in*ompl*t* *l**nup vuln*r**ility in *p**** Tom**t. It w*s possi*l* *or W**So*k*t *li*nts to k**p W**So*k*t *onn**tions op*n l***in* to in*r**s** r*sour** *onsumption.T*is issu* *****ts *p**** Tom**t: *rom **.*.*-M* t*rou** **.*.

Reasoning

T** vuln*r**ility st*ms *rom in*ompl*t* *l**nup *urin* W**So*k*t *losur*. T** *ommit intro*u**s: *. * n*w *los**onn**tion() m*t*o* in WsS*ssion.j*v* to **n*l* unr**istr*tion. *. S*ssion *los* tim*out tr**kin* (s*ssion*los*Tim*out*xpiry). *. ****k*los