
XStream SSRF CVE-2021-21349
Schwachstelle
CVE-2021-21349: Ein Server-Side-Forgery-Request kann beim Unmarshalling mit XStream aktiviert werden, um auf Datenströme von einer beliebigen URL zuzugreifen, die auf eine Ressource im Intranet oder auf dem lokalen Host verweist.
Betroffene Versionen
Alle Versionen bis einschließlich Version 1.4.15 sind betroffen, wenn die Version standardmäßig verwendet wird. Kein Benutzer ist betroffen, der der Empfehlung gefolgt ist, das Sicherheitsframework von XStream mit einer Whitelist einzurichten, die auf die minimal erforderlichen Typen beschränkt ist.
Beschreibung
Der verarbeitete Stream enthält zum Zeitpunkt des Unmarshallings Typinformationen, um die zuvor geschriebenen Objekte neu zu erstellen. XStream erstellt daher neue Instanzen auf der Grundlage dieser Typinformationen. Ein Angreifer kann den verarbeiteten Eingabestrom manipulieren und Objekte ersetzen oder injizieren, was zu einer Server-Side-Forgery-Anfrage führt.

$ docker build -t cve-2021-21349 .
$ python -m http.server 8080
$ docker run -it --rm cve-2021-21349
Serving HTTP on :: port 8080 (http://[::]:8080/) ...
::ffff:127.0.0.1 - - [05/May/2021 16:35:39] "GET /internal.txt HTTP/1.1" 200 -
Ändern Sie pom.xml wie folgt
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.16</version>
</dependency>
Fügen Sie NoTypePermission.NONE hinzu
import com.thoughtworks.xstream.security.NoTypePermission; // Add
XStream xstream = new XStream();
xstream.addPermission(NoTypePermission.NONE); // Add
xstream.fromXML(xml);