CVE-2017-20189

In Clojure before 1.9.0, classes can be used to construct a serialized object that executes arbitrary code upon deserialization

Critical · published January 22, 2024

CVSS v3.1
9.8
EPSS
1%
Percentile
70.7
In the wild
Unconfirmed
What it is

🔥 A crafty serialization flaw in Clojure allows an attacker to sneak in arbitrary code just by deserializing an untrusted object! Think of it like a restaurant that serves meals prepped by unpredictable chefs—each meal could include a mysterious ingredient that ruins the whole dish. If your server cooks up a dish with untrusted ingredients, the results could be catastrophic! An attacker could exploit this vulnerability to execute harmful code, potentially gaining full control over the server. Imagine the chaos if they could alter data, compromise sensitive information, or even take the entire system down! This could lead to data breaches or service outages, making it absolutely devastating for your operations.

Put simply

Think of it like a restaurant that serves meals prepped by unpredictable chefs—each meal could include a mysterious ingredient that ruins the whole dish. If your server cooks up a dish with untrusted ingredients, the results could be catastrophic! This vulnerability occurs because Clojure versions prior to 1.9.0 allow classes to be used for constructing serialized objects, which can run arbitrary code when deserialized. If the server processes untrusted data, it opens the door for exploitation.

What to do

An attacker could exploit this vulnerability to execute harmful code, potentially gaining full control over the server. Imagine the chaos if they could alter data, compromise sensitive information, or even take the entire system down! This could lead to data breaches or service outages, making it absolutely devastating for your operations. Upgrade Clojure to version 1.9.0 or later immediately to close this security hole. Additionally, ensure that your deserialization logic strictly validates incoming objects to prevent untrusted data from being processed. Regularly audit your code for secure practices regarding serialization. You've got this! With these steps, you can fortify your defenses and keep your environment safe! 🛡️

The record
Technical detail
CVSS v3.1
9.8 · CRITICAL
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.01332 · 70.7th percentile
Published
2024-01-22T00:00Z
EPSS history
Timeline
  • 22 JAN 00:00Z
    In Clojure before 1.9.0, classes can be used to construct a serialized object that executes arbitrary code upon deserialization
    cvelistv5