
XStream SSRF CVE-2021-21349
Vulnerabilidad
CVE-2021-21349: Se puede activar una solicitud de falsificación del lado del servidor al realizar unmarshalling con XStream para acceder a flujos de datos desde una URL arbitraria que haga referencia a un recurso en una intranet o en el host local.
Versiones Afectadas
Todas las versiones hasta la 1.4.15 inclusive están afectadas si se utiliza la versión tal cual viene de fábrica. Ningún usuario que haya seguido la recomendación de configurar el marco de seguridad de XStream con una lista blanca limitada a los tipos mínimos requeridos está afectado.
Descripción
El flujo procesado en el momento del unmarshalling contiene información de tipos para recrear los objetos anteriormente escritos. XStream crea, por tanto, nuevas instancias basadas en esta información de tipos. Un atacante puede manipular el flujo de entrada procesado y reemplazar o inyectar objetos, lo que da como resultado una solicitud de falsificación del lado del servidor.

$ 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 -
Cambiar pom.xml a lo siguiente
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.16</version>
</dependency>
Añadir NoTypePermission.NONE
import com.thoughtworks.xstream.security.NoTypePermission; // Add
XStream xstream = new XStream();
xstream.addPermission(NoTypePermission.NONE); // Add
xstream.fromXML(xml);