Wysoka

XStream can be used for Remote Code Execution

  • Ujawniono: 16.11.2020
  • Aktualizacja: 11.10.2026 12:22

Impact

The vulnerability may allow a remote attacker to run arbitrary shell commands only by manipulating the processed input stream.

Patches

If you rely on XStream's default blacklist of the Security Framework, you will have to use at least version 1.4.14.

Workarounds

No user is affected, who followed the recommendation to setup XStream's Security Framework with a whitelist! Anyone relying on XStream's default blacklist can immediately switch to a whilelist for the allowed types to avoid the vulnerability.

Users of XStream 1.4.13 or below who still want to use XStream default blacklist can use a workaround depending on their version in use.

Users of XStream 1.4.13 can simply add two lines to XStream's setup code:

java
xstream.denyTypes(new String[]{ "javax.imageio.ImageIO$ContainsFilter" });
xstream.denyTypes(new Class[]{ java.lang.ProcessBuilder.class });

Users of XStream 1.4.12 to 1.4.7 who want to use XStream with a black list will have to setup such a list from scratch and deny at least the following types: javax.imageio.ImageIO$ContainsFilter, java.beans.EventHandler, java.lang.ProcessBuilder, java.lang.Void and void.

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 });

Users of XStream 1.4.6 or below can register an own converter to prevent the unmarshalling of the currently know critical types of the Java runtime. It is in fact an updated version of the workaround for CVE-2013-7285:

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

Credits

Chen L found and reported the issue to XStream and provided the required information to reproduce it. He was supported by Zhihong Tian and Hui Lu, both from Guangzhou University.

References

See full information about the nature of the vulnerability and the steps to reproduce it in XStream's documentation for CVE-2020-26217.

For more information

If you have any questions or comments about this advisory:

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Java / Kotlin (Maven) com.thoughtworks.xstream:xstream < 1.4.14-java7 1.4.14-java7

Odnośniki

Ocena CVSS 8/10
Wektor CVSS
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H
Słabość (CWE)
CWE-78
Platforma
Java / Kotlin (Maven)
Paczka
com.thoughtworks.xstream:xstream
Ujawniono
16.11.2020
Aktualizacja
11.10.2026 12:22

Źródła i licencje

OSV / GitHub Advisory Database - GHSA-mw36-7c6c-q4q2 - CC BY 4.0

Historia podatności: com.thoughtworks.xstream:xstream

Wszystkie opisane podatności tej paczki (Java / Kotlin (Maven)), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (37) w archiwum
Wszystkich wpisów
37
Pierwsza → ostatnia
05.2019 11.2024
Bez poprawki
0
Wykorzystywana w atakach
1

Rozkład istotności

  • Krytyczna 2
  • Wysoka 22
  • Średnia 13

Ujawnienia w latach

  1. 2019: 2
  2. 2020: 5
  3. 2021: 26
  4. 2022: 3
  5. 2023: 0
  6. 2024: 1
  7. 2025: 0
  8. 2026: 0
Istotność:
  1. Wysoka · 8.2 CVE-2022-41966 < 1.4.20 1.4.20
  2. Wysoka · 8.5 CVE-2021-39139 < 1.4.18 1.4.18
  3. Wysoka · 8.5 CVE-2021-39141 < 1.4.18 1.4.18
  4. Wysoka · 8.5 Wykorzystywana w atakach CVE-2021-39144 < 1.4.18 1.4.18
  5. Wysoka · 8.5 CVE-2021-39145 < 1.4.18 1.4.18
  6. Wysoka · 8.5 CVE-2021-39146 < 1.4.18 1.4.18
  7. Wysoka · 8.5 CVE-2021-39147 < 1.4.18 1.4.18
  8. Wysoka · 8.5 CVE-2021-39148 < 1.4.18 1.4.18
  9. Wysoka · 8.5 CVE-2021-39149 < 1.4.18 1.4.18
  10. Wysoka · 8.5 CVE-2021-39151 < 1.4.18 1.4.18
  11. Wysoka · 8.5 CVE-2021-39153 < 1.4.18 1.4.18
  12. Wysoka · 8.5 CVE-2021-39154 < 1.4.18 1.4.18
  13. Wysoka · 7.5 CVE-2021-29505 < 1.4.17 1.4.17
  14. Wysoka · 7.5 CVE-2021-21341 < 1.4.16 1.4.16
  15. XStream can be used for Remote Code Execution ten wpis
    Wysoka · 8.0 CVE-2020-26217 < 1.4.14-java7 1.4.14-java7
Pokaż więcej (4) Widać 20 z 24

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.