CVE-2017-20189
Clojure classes can be used to craft a serialized object that runs arbitrary code on deserialization
CVE-2017-20189 is a critical vulnerability (CVSS 9.8) in Clojure, published January 22, 2024. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.33%, the 71st percentile. Fixed in org.clojure:clojure 1.9.0.
In Clojure before 1.9.0, classes can be used to construct a serialized object that executes arbitrary code upon deserialization. This is relevant if a server deserializes untrusted objects.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
9.8
In Clojure before 1.9.0, classes can be used to construct a serialized object that executes arbitrary code upon deserialization. This is relevant if a server deserializes untrusted objects.
- Record
CVE-2017-20189- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
CVE List
9.8
In Clojure before 1.9.0, classes can be used to construct a serialized object that executes arbitrary code upon deserialization. This is relevant if a server deserializes untrusted objects.
- Record
CVE-2017-20189- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
EUVDEUVD-2024-0379
9.8
In Clojure before 1.9.0, classes can be used to construct a serialized object that executes arbitrary code upon deserialization. This is relevant if a server deserializes untrusted objects.
- Record
EUVD-2024-0379- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-jgxc-8mwq-9xqw
9.8
Clojure classes can be used to craft a serialized object that runs arbitrary code on deserialization
In Clojure before 1.9.0, classes can be used to construct a serialized object that executes arbitrary code upon deserialization. This is relevant if a server deserializes untrusted objects.
- Record
GHSA-jgxc-8mwq-9xqw- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
OSV
9.8
In Clojure before 1.9.0, classes can be used to construct a serialized object that executes arbitrary code upon deserialization. This is relevant if a server deserializes untrusted objects.
- Record
CVE-2017-20189- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVDEBIAN-CVE-2017-20189
9.8
In Clojure before 1.9.0, classes can be used to construct a serialized object that executes arbitrary code upon deserialization. This is relevant if a server deserializes untrusted objects.
- Record
DEBIAN-CVE-2017-20189- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-jgxc-8mwq-9xqw
9.8
Clojure classes can be used to craft a serialized object that runs arbitrary code on deserialization
In Clojure before 1.9.0, classes can be used to construct a serialized object that executes arbitrary code upon deserialization. This is relevant if a server deserializes untrusted objects.
- Record
GHSA-jgxc-8mwq-9xqw- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2017-20189
9.8
In Clojure before 1.9.0, classes can be used to construct a serialized object that executes arbitrary code upon deserialization. This is relevant if a server deserializes untrusted objects.
- Record
UBUNTU-CVE-2017-20189- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVROOT-APP-MAVEN-CVE-2017-20189 No score
CVE-2017-20189 in io.root.org.clojure:clojure - Patched by Root
Root has patched CVE-2017-20189 in the io.root.org.clojure:clojure package for Root:Maven. Multiple fixed versions available.
- Record
ROOT-APP-MAVEN-CVE-2017-20189- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
org.clojure:clojureMaven |
before 1.9.0 | 1.9.0 |
clojureDebian:12 |
before 1.9.0-1 | 1.9.0-1 |
clojureDebian:13 |
before 1.9.0-1 | 1.9.0-1 |
clojureDebian:14 |
before 1.9.0-1 | 1.9.0-1 |
org.clojure:clojureMaven |
before 1.9.0, plus listed versions 1.0.01.1.01.2.01.2.11.3.0 Show 45 moreShow less1.3.0-RC01.3.0-alpha51.3.0-alpha61.3.0-alpha71.3.0-alpha81.3.0-beta11.3.0-beta21.3.0-beta31.4.01.4.0-alpha11.4.0-alpha21.4.0-alpha31.4.0-alpha41.4.0-alpha51.4.0-beta11.4.0-beta21.4.0-beta31.4.0-beta41.4.0-beta51.4.0-beta61.4.0-beta71.5.01.5.0-RC11.5.0-RC141.5.0-RC151.5.0-RC161.5.0-RC171.5.0-RC21.5.0-RC31.5.0-RC41.5.0-RC51.5.0-RC61.5.0-alpha11.5.0-alpha21.5.0-alpha31.5.0-alpha41.5.0-alpha51.5.0-alpha61.5.0-alpha71.5.0-beta11.5.0-beta101.5.0-beta111.5.0-beta121.5.0-beta131.5.0-beta2 |
1.9.0 |
io.root.org.clojure:clojureRoot:Maven |
before 1.8.0-root.io.1 | 1.8.0-root.io.11.7.0-root.io.11.6.0-root.io.11.5.1-root.io.11.4.0-root.io.11.9.0-root.io.1 |
org.clojure:clojureRoot:Maven |
before 1.8.0-aikido.1 | 1.8.0-aikido.11.7.0-aikido.11.6.0-aikido.11.5.1-aikido.11.4.0-aikido.11.9.0-aikido.1 |
clojureUbuntu:18.04:LTS |
All versions, plus listed versions 1.8.0-31.9.0~alpha15-11.9.0~alpha15-21.9.0-21.9.0-6~18.04 |
None known |
History
| When | Changed | Sources |
|---|---|---|
| 2026-11-02 | created | CVE List, EUVD, GitHub Advisories, NVD, OSV |
References
hackmd.io/%40fe1w0/HyefvRQKp
clojure.atlassian.net/browse/CLJ-2204
github.com/frohoff/ysoserial/pull/68/files
github.com/clojure/clojure/commit/271674c9b484d798484d134a5ac40a6df15d3ac3
security.snyk.io/vuln/SNYK-JAVA-ORGCLOJURE-5740378
security.netapp.com/advisory/ntap-20241108-0002
Show 7 moreShow less
Left out here: 65 versions. The JSON record has them.