VRT 391,192 CVEs tracked · 15,442 in RASP scope · data as of 18 hours ago

CVE-2020-2583

3.7 Low Protected by RASP

Description

Vulnerability 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

Exploitation Status

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

  • CISA KEV not listed
  • CISA Vulnrichment exploitation: none
  • Indexed PoC none indexed
  • EPSS 4.0% chance in 30 days

Waratek Defense Posture

Protected by RASP

A Waratek agent blocks this today.

Applicable rule: CVE has an ARMR patch rule that provides mitigation

  • Protection full a patch rule written for this CVE
  • Action available patch rule
  • Review human armr-file
  • Record active
Decided by armr-patch-file : An ARMR patch file on disk for this CVE
Finding CVE has an ARMR patch rule that provides mitigation

ARMR rule files

1 file

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-04
app("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.7 LOW v3.1 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.

VersionScoreBandVectorAssignerType
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

Affected Software & Releases

🏛️ Oracle CPU Advisories & Products

AdvisoryTypeQuarterProducts 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)

Indexed Oracle Components & Versions

FamilyComponentOracle'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

🖥️ Product CPEs & Version Ranges

24 product(s) over 75 version claims (uncapped)
SourceVendorProductSchemeAffected 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

References

URLTags
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

Timeline

Published 2020-01-15 Last modified 2026-06-17
Published2020-01-15By the CVE Program.
ARMR remediation created2020-06-28Earliest commit adding this CVE's ARMR patch or security rule.
ARMR remediation last updated2026-03-04Most recent commit touching this CVE's ARMR patch or security rule.
Last VRT activity2026-03-04Most recent commit touching this CVE's classification, patch or rule file.
NVD record modified2026-06-17NVD's own last-modified date for this record.