CVE-2020-26217: Remote Code Execution in XStream

Published Nov 16, 2020
·
Updated

A flaw was found in xstream. An unsafe deserialization of user-supplied XML, in conjunction with relying on the default deny list, allows a remote attacker to perform a variety of attacks including a remote code execution of arbitrary code in the context of the JVM running the XStream application. The highest threat from this vulnerability is to data confidentiality and integrity as well as system availability.

Other sources

It was found that Remote code execution (RCE) is possible in XStream prior to 1.4.14 via unsafe deserialization of user supplied XML in conjunction with relying on the default XStream deny list, a remote attacker could use this flaw to perform a variety of attacks but principally this is arbitrary code execution in the context of the JVM running the XStream application.

Upstream Advisory: https://github.com/x-stream/xstream/security/advisories/GHSA-mw36-7c6c-q4q2

Upstream Fix: https://github.com/x-stream/xstream/commit/0fec095d534126931c99fd38e9c6d41f5c685c1a

Upstream explanation and PoC: https://x-stream.github.io/CVE-2020-26217.html

Red Hat

XStream before version 1.4.14 is vulnerable to Remote Code Execution.The vulnerability may allow a remote attacker to run arbitrary shell commands only by manipulating the processed input stream. Only users who rely on blocklists are affected. Anyone using XStream's Security Framework allowlist is not affected. The linked advisory provides code workarounds for users who cannot upgrade. The issue is fixed in version 1.4.14.

XStream could allow a remote attacker to execute arbitrary code on the system, caused by flaws in the XStream.java and SecurityVulnerabilityTest.java scripts. By manipulating the processed input stream, an attacker could exploit this vulnerability to execute arbitrary code on the system.

IBM

Affected Software

65 affected componentsFixes available
redhat/xstream<0:1.3.1-12.el7_9
0:1.3.1-12.el7_9
redhat/xstream<1.4.14
1.4.14
debian/libxstream-java
1.4.15-3+deb11u21.4.15-3+deb11u31.4.20-1+deb12u11.4.21-1
IBM RDNG<=6.0.2
IBM DOORS Next<=7.0
IBM DOORS Next<=7.0.1
IBM DOORS Next<=7.0.2
IBM RDNG<=6.0.6.1
IBM RDNG<=6.0.6
IBM PUB<=7.0.1
IBM PUB<=7.0.2
IBM PUB<=7.0
IBM EWM<=7.0.2
IBM EWM<=7.0.1
IBM RTC<=6.0.2
IBM RTC<=6.0.6.1
IBM EWM<=7.0
IBM RTC<=6.0.6
IBM Global Configuration Management<=All
IBM ETM<=7.0.2
IBM RQM<=6.0.6.1
IBM ETM<=7.0.1
IBM RQM<=6.0.6
IBM ETM<=7.0.0
IBM RQM<=6.0.2
IBM Engineering Requirements Quality Assistant On-Premises<=All
Xstream Project Xstream<1.4.14
Debian Debian Linux=9.0
Debian Debian Linux=10.0
NetApp Snapmanager Sap
NetApp Snapmanager Oracle
Apache ActiveMQ=5.15.4
Oracle Banking Cash Management=14.2
Oracle Banking Cash Management=14.3
Oracle Banking Cash Management=14.5
Oracle Banking Corporate Lending Process Management=14.2
Oracle Banking Corporate Lending Process Management=14.3
Oracle Banking Corporate Lending Process Management=14.5
Oracle Banking Credit Facilities Process Management=14.2
Oracle Banking Credit Facilities Process Management=14.3
Oracle Banking Credit Facilities Process Management=14.5
Oracle Banking Platform=2.4.0
Oracle Banking Platform=2.7.1
Oracle Banking Platform=2.9.0
Oracle Banking Supply Chain Finance=14.2
Oracle Banking Supply Chain Finance=14.3
Oracle Banking Supply Chain Finance=14.5
Oracle Banking Trade Finance Process Management=14.2
Oracle Banking Trade Finance Process Management=14.3
Oracle Banking Trade Finance Process Management=14.5
Oracle Banking Virtual Account Management=14.2.0
Oracle Banking Virtual Account Management=14.3.0
Oracle Banking Virtual Account Management=14.5.0
Oracle Business Activity Monitoring=11.1.1.9.0
Oracle Business Activity Monitoring=12.2.1.3.0
Oracle Business Activity Monitoring=12.2.1.4.0
Oracle Communications Policy Management=12.5.0
Oracle Endeca Information Discovery Studio=3.2.0.0
Oracle Retail Xstore Point of Service=16.0.6
Oracle Retail Xstore Point of Service=17.0.4
Oracle Retail Xstore Point of Service=18.0.3
Oracle Retail Xstore Point of Service=19.0.2
XStream XStream<1.4.14
Apache ActiveMQ<5.15.14
Apache ActiveMQ=5.16.0

Remediation

Information

Depending on the version of XStream used there are various usage patterns that mitigate this flaw, though we would strongly recommend using the allow list approach if at all possible as there are likely more class combinations the deny list approach may not address. Allow list approach ```java XStream xstream = new XStream(); XStream.setupDefaultSecurity(xstream); xstream.allowTypesByWildcard(new String[] {"com.misc.classname"}) ``` Deny list for XStream 1.4.13 ```java xstream.denyTypes(new String[]{ "javax.imageio.ImageIO$ContainsFilter" }); xstream.denyTypes(new Class[]{ java.lang.ProcessBuilder.class }); ``` Deny list for XStream 1.4.7 -> 1.4.12 ```java xstream.denyTypes(new String[]{ "javax.imageio.ImageIO$ContainsFilter" }); xstream.denyTypes(new Class[]{ java.lang.ProcessBuilder.class, java.beans.EventHandler.class, java.lang.ProcessBuilder.class, java.lang.Void.class, void.class }); ``` Deny list for versions prior to XStream 1.4.7 ```java xstream.registerConverter(new Converter() { public boolean canConvert(Class type) { return type != null && (type == java.beans.EventHandler.class || type == java.lang.ProcessBuilder.class || type == java.lang.Void.class || void.class || type.getName().equals("javax.imageio.ImageIO$ContainsFilter") || Proxy.isProxy(type)); } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { throw new ConversionException("Unsupported type due to security reasons."); } public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) { throw new ConversionException("Unsupported type due to security reasons."); } }, XStream.PRIORITY_LOW); ```

Event History

Nov 16, 2020
CVE Published
07:40 PM
CVE Published
via MITRE·09:00 PM
Data Sourced
via MITRE·09:00 PM
DescriptionSeverityWeakness
Nov 18, 2020
Data Sourced
via Red Hat·10:05 AM
DescriptionSeverityAffected Software
Aug 26, 2024
Data Sourced
via Launchpad·04:27 PM
Description
Sep 15, 2024
Data Sourced
via Ubuntu·04:29 PM
RemedyDescriptionSeverityAffected Software
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is CVE-2020-26217?

CVE-2020-26217 is a vulnerability in XStream before version 1.4.14 that allows remote code execution.

2

How severe is CVE-2020-26217?

CVE-2020-26217 has a severity rating of critical (9 out of 10).

3

How can a remote attacker exploit CVE-2020-26217?

A remote attacker can exploit CVE-2020-26217 by manipulating the processed input stream to run arbitrary shell commands.

4

Which systems are affected by CVE-2020-26217?

Systems using XStream before version 1.4.14 and relying on blocklists are affected by CVE-2020-26217.

5

How can I fix CVE-2020-26217?

To fix CVE-2020-26217, update XStream to version 1.4.14 or apply the appropriate patches provided by the vendor.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203