Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2024-22871

CVE-2024-22871: Clojure Denial of Service Vulnerability

CVE-2024-22871 is a denial of service vulnerability affecting Clojure versions 1.20 to 1.12.0-alpha5 through the clojure.core$partial$fn__5920 function. This article covers the technical details, affected versions, and mitigation.

Published:

CVE-2024-22871 Overview

CVE-2024-22871 is a denial of service (DoS) vulnerability affecting Clojure versions 1.20 through 1.12.0-alpha5. The flaw resides in the clojure.core$partial$fn__5920 function and is associated with insecure deserialization behavior [CWE-502]. A remote attacker can trigger the condition over the network without authentication or user interaction, exhausting application availability. The issue also affects Clojure packages distributed through Fedora 38, 39, and 40. Several Fedora package announcements have shipped updated builds to address the defect.

Critical Impact

A network-reachable attacker can cause a Clojure application to enter a denial of service state through the clojure.core$partial$fn__5920 function, disrupting service availability.

Affected Products

  • Clojure versions 1.20 through 1.12.0-alpha5 (including alpha1 through alpha8 builds)
  • Fedora 38, 39, and 40 distributions packaging affected Clojure builds
  • Applications and services embedding the vulnerable Clojure runtime

Discovery Timeline

  • 2024-02-29 - CVE-2024-22871 published to NVD
  • 2026-06-17 - Last updated in NVD database

Technical Details for CVE-2024-22871

Vulnerability Analysis

The vulnerability lives inside clojure.core$partial$fn__5920, an internal function generated from Clojure's partial higher-order function. When the function processes attacker-influenced input through unsafe deserialization paths, it can be coerced into resource-intensive computation. The result is a denial of service condition that disrupts availability of any process executing the vulnerable code.

The issue is classified as a Deserialization of Untrusted Data weakness [CWE-502]. Exploitation does not require authentication or user interaction, and the attack can be delivered remotely across the network. The EPSS score is 1.533% (71.5 percentile), indicating moderate observed exploitation probability for this class of issue.

Root Cause

The root cause is improper handling of untrusted data within the function returned by clojure.core/partial. When deserialized payloads reach this code path, the runtime performs operations that consume excessive CPU or memory, locking up the host process. The vulnerable behavior is present in stable releases through 1.20 and in 1.12.0 alpha builds up to alpha5.

Attack Vector

An unauthenticated attacker delivers crafted input to a Clojure application that processes serialized data through the affected partial function path. Because the attack vector is network-based with low complexity, services exposing Clojure-based endpoints — REST APIs, message consumers, or RPC handlers — are the primary risk surface. No code execution or data disclosure occurs; the impact is limited to availability loss.

For additional technical context, see the HackMD Security Overview.

Detection Methods for CVE-2024-22871

Indicators of Compromise

  • Sudden CPU saturation or out-of-memory conditions in Java Virtual Machine (JVM) processes hosting Clojure applications
  • Unresponsive Clojure service endpoints following receipt of unusually structured serialized payloads
  • Thread dumps showing prolonged execution within clojure.core$partial$fn__5920 frames

Detection Strategies

  • Inventory all Clojure runtimes and dependencies to identify versions in the 1.20 through 1.12.0-alpha5 range
  • Inspect application logs for repeated request timeouts or worker thread starvation correlated with deserialization activity
  • Use software composition analysis (SCA) tooling to flag vulnerable Clojure artifacts in build pipelines and container images

Monitoring Recommendations

  • Track JVM heap utilization, garbage collection pauses, and thread counts on Clojure-hosting services
  • Alert on anomalous request payload sizes or content types reaching deserialization endpoints
  • Monitor Fedora package update channels and apply advisories referenced in the Fedora package announcements

How to Mitigate CVE-2024-22871

Immediate Actions Required

  • Upgrade Clojure to a fixed release beyond the affected 1.20 through 1.12.0-alpha5 range
  • Apply Fedora updates referenced in the Fedora Package Announcement advisories for Fedora 38, 39, and 40
  • Restrict network exposure of Clojure services that accept serialized input from untrusted sources

Patch Information

Fedora has shipped updated Clojure packages through the package-announce mailing list. Refer to the advisories at Fedora 38/39/40 Package Announcements and the additional Fedora advisory for the specific package versions that contain the fix. Update vulnerable Clojure builds to a release that no longer includes the defective code path in clojure.core$partial$fn__5920.

Workarounds

  • Validate and constrain the size, structure, and source of any data deserialized by Clojure applications
  • Place rate limiting and request timeouts in front of endpoints that invoke partial against untrusted input
  • Isolate Clojure workloads behind authenticated gateways to reduce the unauthenticated attack surface

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.