CVE-2024-22871: Reading specially crafted serializable objects from an untrusted source may cause an infinite loop and denial of service
7.5
CVSS Score
3.1
Basic Information
CVE ID
GHSA ID
EPSS Score
0.25201%
CWE
Published
2/29/2024
Updated
8/13/2024
KEV Status
No
Technology
Java
Technical Details
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
---|---|---|---|
org.clojure:clojure | maven | >= 1.7.0, < 1.11.2 | 1.11.2 |
org.clojure:clojure | maven | >= 1.12.0-alpha1, < 1.12.0-alpha9 | 1.12.0-alpha9 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability stems from Clojure's infinite sequence classes (Cycle, Repeat, Iterate) inheriting ASeq.hashCode()
that walks the entire sequence. The exploit specifically uses clojure.core$partial$fn__5920
to construct malicious Iterate instances, as shown in the GenData.java
PoC and Clojure verification scripts. This function's involvement in creating the problematic proxy objects is confirmed across multiple sources including NVD descriptions, Fedora advisories, and the HackMD technical analysis. The combination of 1) being part of the deserialization payload construction and 2) enabling infinite sequence creation makes this function directly vulnerable.