CVE-2020-2583Vulnerability in the Java SE, Java SE Embedded product of Oracle Java SE (component: Serialization). Supported versions that are affected are Java SE: 7u241, 8u231, 11.0.5 and 13.0.1; Java SE Embedded: 8u231. Difficult to exploit vulnerability allows unauthenticated attacker with network access via multiple protocols to compromise Java SE, Java SE Embedded. Successful attacks of this vulnerability can result in unauthorized ability to cause a partial denial of service (partial DOS) of Java SE, Java SE Embedded. Note: This vulnerability applies to Java deployments, typically in clients running sandboxed Java Web Start applications or sandboxed Java applets (in Java SE 8), that load and run untrusted code (e.g., code that comes from the internet) and rely on the Java sandbox for security. This vulnerability can also be exploited by using APIs in the specified Component, e.g., through a web service which supplies data to the APIs. CVSS 3.0 Base Score 3.7 (Availability impacts). CVSS Vector: (CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L).
CWE-755
No public exploit
Nothing published shows this CVE being exploited, which is not the same as ruling it out. nothing published in 6 years.
CVSS E:U
A Waratek agent blocks this today.
Applicable rule: CVE has an ARMR patch rule that provides mitigation
| Decided by | armr-patch-file : An ARMR patch file on disk for this CVE |
|---|---|
| Finding | CVE has an ARMR patch rule that provides mitigation |
Shipped files covering this CVE. A CVE genuinely takes more than one: separate Maven artifacts hooking different parser classes, the same patch built for two ARMR versions, or a fix at both the framework and the container.
vcpu/2020/Q1-January/CVE-2020-2583/patch/2.6/CVE-2020-2583.armr patch rule added 2020-06-28 updated 2026-03-04app("2020 JANUARY CPU"):
requires(version: "ARMR/2.6")
/***************************************************************************
CVE-2020-2583 (2020 JANUARY CPU)
CVSS 3.0 Summary:
Base Score | 3.7 LOW
Attack Vector | Network
Attack Complexity | High
Privileges Required | None
User Interaction | None
Scope | Unchanged
Confidentiality Impact | None
Integrity Impact | None
Availability Impact | Low
Description:
A flaw was found in the what the BeanContextSupport class in the
Serialization component of OpenJDK handled exceptions during
deserialization. A specially-crafted input could cause a Java
application to use an excessive amount of resources when
deserialized.
Resources:
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2020-2583
http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/b76e1348c535
Affected Operating System:
Any
Affected Versions:
7u241, 8u231, 11u5, 13u1
Fixed Version:
7u251, 8u241, 11u6, 13u2
Tested Versions:
6u0 - 6u211
7u0 - 7u241
8u0 - 8u231
Protection Provided:
Functional
Patch Version:
1.0
***************************************************************************/
patch("CVE-2020-2583 :01"):
function("java/beans/beancontext/BeanContextSupport.readChildren(Ljava/io/ObjectInputStream;)V",
checksums: ["d3744dbc02"]) // 6u0 - 6u211, 7u0 - 7u241, 8u0 - 8u231
entry()
code(language: java, import: ["java.beans.PropertyChangeListener",
"java.beans.PropertyVetoException",
"java.beans.VetoableChangeListener",
"java.beans.beancontext.BeanContext",
"java.beans.beancontext.BeanContextChild",
"java.beans.beancontext.BeanContextSupport",
"java.io.IOException",
"java.io.ObjectInputStream"]):
private static JavaField serializableField;
private static JavaField childPCLField;
private static JavaField childVCLField;
private static JavaMethod childDeserializedHookMethod;
private static boolean shouldInit = true;
public void init() {
serializableField = JavaField.load("java/beans/beancontext/BeanContextSupport.serializable");
childPCLField = JavaField.load("java/beans/beancontext/BeanContextSupport.childPCL");
childVCLField = JavaField.load("java/beans/beancontext/BeanContextSupport.childVCL");
childDeserializedHookMethod = JavaMethod.load("java/beans/beancontext/BeanContextSupport.childDeserializedHook(Ljava/lang/Object;Ljava/beans/beancontext/BeanContextSupport$BCSChild;)V");
shouldInit = false;
}
public void patch(JavaFrame frame) {
if (shouldInit) {
init();
}
BeanContextSupport self = (BeanContextSupport) frame.loadThisVariable();
ObjectInputStream ois = (ObjectInputStream) frame.loadObjectVariable(1);
int serializable = serializableField.readInt(self);
PropertyChangeListener childPCL = (PropertyChangeListener) childPCLField.readObject(self);
VetoableChangeListener childVCL = (VetoableChangeListener) childVCLField.readObject(self);
try {
readChildren(self, ois, serializable, childPCL, childVCL);
} catch (IOException ex) {
frame.raiseException(ex);
} catch (ClassNotFoundException ex) {
frame.raiseException(ex);
}
frame.returnVoid();
}
private void readChildren(BeanContextSupport self, ObjectInputStream ois, int serializable,
PropertyChangeListener childPCL, VetoableChangeListener childVCL)
throws IOException, ClassNotFoundException {
int count = serializable;
while (count-- > 0) {
Object child = ois.readObject();
Object bscc = ois.readObject();
synchronized (child) {
BeanContextChild bcc = null;
try {
bcc = (BeanContextChild) child;
} catch (ClassCastException cce) {
// do nothing
}
if (bcc != null) {
try {
bcc.setBeanContext(self.getBeanContextPeer());
bcc.addPropertyChangeListener("beanContext", childPCL);
bcc.addVetoableChangeListener("beanContext", childVCL);
} catch (PropertyVetoException pve) {
continue;
}
}
childDeserializedHookMethod.call(self, child, bscc);
}
}
}
endcode
endpatch
endapp
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
3 metrics
VRT selects the newest version's highest entry and
publishes it as cvssScore, newest rather than largest because scores are not comparable
across versions, and highest rather than first because the first entry is frequently a CNA placeholder
scoring 0.0 over NVD's own analysis.
| Version | Score | Band | Vector | Assigner | Type | |
|---|---|---|---|---|---|---|
| CVSS 3.1 | 3.7 | LOW | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L |
NVD | Primary | published |
| CVSS 3.0 | 3.7 | LOW | CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L |
secalert_us@oracle.com | Secondary | |
| CVSS 2.0 | 4.3 | no band published | AV:N/AC:M/Au:N/C:N/I:N/A:P |
NVD | Primary |
| Advisory | Type | Quarter | Products Oracle named in risk matrix |
|---|---|---|---|
| Oracle Critical Patch Update January 2020 ↗ | CPU | 2020-Q1 | Oracle Java SE / Serialization (Java SE: 7u241, 8u231, 11.0.5, 13.0.1; Java SE Embedded: 8u231) |
| Family | Component | Oracle's version cell (verbatim) | Indexed as |
|---|---|---|---|
| Oracle Java SE | Serialization | Java SE: 7u241, 8u231, 11.0.5, 13.0.1; Java SE Embedded: 8u231 | 7.0.241.0 · 8.0.231.0 · 11.0.5.0 · 13.0.1.0 |
| Source | Vendor | Product | Scheme | Affected Versions |
|---|---|---|---|---|
| nvd | canonical | ubuntu linux | generic | 16.04 · 18.04 · 19.10 |
| nvd | debian | debian linux | generic | 8.0 · 9.0 · 10.0 |
| nvd | mcafee | epolicy orchestrator | generic | 5.9.0 · 5.9.1 · 5.10.0 · 5.10.0:update_1 · 5.10.0:update_2 · 5.10.0:update_3 · 5.10.0:update_4 · 5.10.0:update_5 · 5.10.0:update_6 |
| nvd | netapp | active iq unified manager | generic | ≥ 7.3 · ≥ 9.5 |
| nvd | netapp | e-series performance analyzer | generic | any version |
| nvd | netapp | e-series santricity management | generic | any version |
| nvd | netapp | e-series santricity os controller | generic | ≥ 11.0.0 and ≤ 11.60.3 |
| nvd | netapp | e-series santricity storage manager | generic | any version |
| nvd | netapp | e-series santricity web services | generic | any version |
| nvd | netapp | oncommand insight | generic | any version |
| nvd | netapp | oncommand workflow automation | generic | any version |
| nvd | netapp | santricity unified manager | generic | any version |
| nvd | netapp | steelstore cloud integrated storage | generic | any version |
| nvd | opensuse | leap | generic | 15.1 |
| nvd | oracle | jdk | javase | 1.7.0:update241 · 1.8.0:update231 · 11.0.5 · 13.0.1 |
| nvd | oracle | jre | javase | 1.7.0:update_241 · 1.8.0:update_231 · 11.0.5 · 13.0.1 |
| nvd | oracle | openjdk | javase | 7 · 7:update80 · 7:update85 · 7:update241 · 8 · 8:update20 · 8:update40 · 8:update60 · 8:update66 · 8:update72 · 8:update92 · 8:update102 · 8:update112 · 8:update152 · 8:update162 · 8:update172 · 8:update192 · 8:update202 · 8:update212 · 8:update222 · 8:update232 · 11 · 11.0.1 · 11.0.2 · 11.0.3 · 11.0.4 · 11.0.5 · 13 · 13.0.1 |
| nvd | redhat | enterprise linux | generic | 8.0 |
| nvd | redhat | enterprise linux desktop | generic | 6.0 · 7.0 |
| nvd | redhat | enterprise linux eus | generic | 7.7 · 8.1 |
| nvd | redhat | enterprise linux server | generic | 6.0 · 7.0 |
| nvd | redhat | enterprise linux server aus | generic | 7.7 |
| nvd | redhat | enterprise linux server tus | generic | 7.7 |
| nvd | redhat | enterprise linux workstation | generic | 6.0 · 7.0 |
| URL | Tags |
|---|---|
| https://access.redhat.com/errata/RHSA-2020:0122 | ADVISORY, RHSA-2020:0122 |
| https://access.redhat.com/security/cve/CVE-2020-2583 | REPORT, RHSA-2020:0122 |
| https://access.redhat.com/errata/RHSA-2020:0128 | ADVISORY, RHSA-2020:0128 |
| https://access.redhat.com/errata/RHSA-2020:0157 | ADVISORY, RHSA-2020:0157 |
| https://access.redhat.com/errata/RHSA-2020:0196 | ADVISORY, RHSA-2020:0196 |
| https://access.redhat.com/errata/RHSA-2020:0202 | ADVISORY, RHSA-2020:0202 |
| https://access.redhat.com/errata/RHSA-2020:0231 | ADVISORY, RHSA-2020:0231 |
| https://access.redhat.com/errata/RHSA-2020:0232 | ADVISORY, RHSA-2020:0232 |
| https://access.redhat.com/errata/RHSA-2020:0465 | ADVISORY, RHSA-2020:0465 |
| https://access.redhat.com/errata/RHSA-2020:0469 | ADVISORY, RHSA-2020:0469 |
| Published | 2020-01-15 | By the CVE Program. |
|---|---|---|
| ARMR remediation created | 2020-06-28 | Earliest commit adding this CVE's ARMR patch or security rule. |
| ARMR remediation last updated | 2026-03-04 | Most recent commit touching this CVE's ARMR patch or security rule. |
| Last VRT activity | 2026-03-04 | Most recent commit touching this CVE's classification, patch or rule file. |
| NVD record modified | 2026-06-17 | NVD's own last-modified date for this record. |