Vulnerabilidad de deserialización Anti-CSRF en Sitecore (CVE-2019-9874)

Sitecore CMS en las versiones de la 7.0 a la 8.2 contiene una vulnerabilidad crítica en el módulo de protección anti-CSRF (falsificación de petición en sitios cruzados). Un atacante puede falsificar el valor de __CSRFTOKEN en una solicitud HTTP POST e incluir una carga útil (payload) maliciosa. Dado que el servidor confía en este token y lo procesa de forma insegura, el atacante puede ejecutar código arbitrario en el servidor de Sitecore sin necesidad de autenticación. En otras palabras, al manipular un token de autenticación, un atacante no autenticado puede obtener el control total de una instancia de Sitecore vulnerable.

ProductoSitecore
Fecha2025-04-28 10:42:58
Información
  • Tendencia
  • Parche disponible

Resumen técnico

  • Módulo vulnerable: La biblioteca Sitecore.Security.AntiCSRF de Sitecore está diseñada para deserializar un token CSRF con el fin de verificar las solicitudes. Sin embargo, deserializa el contenido del token sin validar su origen o seguridad. Esto significa que los datos controlados por un atacante fluyen directamente al deserializador.

  • Vector de ataque: El exploit utiliza el parámetro HTTP POST __CSRFTOKEN. Un atacante puede crear un objeto .NET serializado de forma maliciosa e insertarlo como valor de __CSRFTOKEN. Cuando el código Anti-CSRF de Sitecore deserializa este objeto, cualquier comando o script insertado en su interior se ejecuta en el servidor.

  • Sin validación ⇒ RCE: Dado que no existe una validación adecuada ni una lista blanca sobre el contenido deserializado, cualquier carga útil será aceptada. En la práctica, esto permite la ejecución remota de código (RCE) en el servidor. El código del atacante se ejecuta con los privilegios del proceso de Sitecore, lo que puede conducir al control total del servidor.

  • Ataque no autenticado: Es importante destacar que CVE-2019-9874 no requiere inicio de sesión. Todas las instancias de Sitecore CMS desde la versión 7.0–7.2 y XP 7.5–8.2 (incluida la 6.6.3 según algunos avisos) son vulnerables. Un atacante puede enviar la carga útil a través de Internet a cualquier sitio de Sitecore expuesto públicamente con estas versiones y activar la vulnerabilidad.

  • Prueba de concepto (PoC): Los investigadores han demostrado el exploit utilizando herramientas como ysoserial.net. Por ejemplo, se genera una carga útil maliciosa (usando el gadget TypeConfuseDelegate para ejecutar un comando de PowerShell) y se codifica en base64. Al enviar este valor en __CSRFTOKEN (por ejemplo, mediante un POST a la página de administración de Sitecore en /sitecore/shell/Applications/Security/CreateNewUser.aspx), el servidor deserializa y ejecuta la carga útil. Durante las pruebas, esto permitió abrir una shell o ejecutar comandos arbitrarios en el sistema objetivo, confirmando la RCE.

Recomendaciones

  • Aplicar los parches oficiales: Instale inmediatamente las actualizaciones de seguridad o los hotfixes de Sitecore. (Para versiones antiguas, Sitecore ha lanzado un hotfix para el módulo Anti-CSRF).

  • Actualizar Sitecore: Actualice todas las instancias a una versión corregida. Sitecore XP 9.1.1 Update-1 o superior incluye la corrección para este problema. Mantener Sitecore en la última versión soportada garantiza la resolución de esta y otras vulnerabilidades.

  • Limitar los puntos finales administrativos: Mientras tanto, bloquee o filtre mediante firewall el acceso a las rutas administrativas de Sitecore (ej. el directorio /sitecore/shell y sus aplicaciones relacionadas) desde redes no confiables. Por ejemplo, deniegue las solicitudes externas a /sitecore/shell para que solo se permita el acceso interno o autenticado.

  • Validar entradas y monitorear: Aplique una validación estricta en todas las entradas y tokens en el código personalizado. Incluso después de aplicar los parches, monitoree los registros (logs) de Sitecore y el tráfico web en busca de valores inusuales de __CSRFTOKEN o solicitudes POST repetidas a las páginas de administración de Sitecore, ya que son posibles indicadores de intentos de explotación. Investigue rápidamente cualquier error de deserialización o rastro de ejecución de comandos.

[Callforaction-THREAT-Footer]