Aviso de Seguridad: XSS Almacenado en Magento

Share this…

Risco de Seguridad: Peligroso
Nivel de Explotación: Fácil/Remoto
DREAD Score: 8/10
Vulnerabilidad: XSS Almacenado
Versión Parcheada:  Magento CE: 1.9,2.3, Magento EE: 1.14.2.3 Durante una audición de rutina para nuestro WAF, descubrimos una vulnerabilidad XSS almacenada que afecta a Magento.

Línea del Tiempo de Divulgación de la Vulnerabilidad:

  • 10 de noviembre de 2015 – descubierta del bug, informe inicial para el equipo de seguridad de Magento
  • 01 de diciembre de 2015 – Ninguna respuesta de Magento. Pedido de confirmación del correo electrónico.
  • 01 de diciembre de 2015 – Magento confirma haber recibido el informe.
  • 07 de enero de 2016 – Pedido de un ETA, después de 2 meses del informe inicial.
  • 11 de enero de 2016 – Magento contesta diciendo que el parche está listo, pero no hay ETA.
  • 20 de enero de – Magento lanza el parche bundle SUPEE-7405, que parchea y resuelve el problema
  • 22 de enero de 2016 – Divulgación Pública de la Vulnerabilidad por Sucuri.

¿Su Sitio Está En Peligro?

Sí, esta vulnerabilidad afecta a casi todas las instalaciones Magento CE <1.9.2.3 y Magento EE <1.14.2.3. El snippet con el bug se encuentra dentro de las bibliotecas del core de Magento, más específicamente, en el backend del administrador. A menos que usted está protegido por un WAF o que ha modificado mucho su panel de administración, usted está en peligro.

Como es una vulnerabilidad XSS Almacenada, este problema podría ser utilizado por los atacantes para dominar por completo su sitio web, crear nuevas cuentas de administrador, robar información de sus clientes, hacer cualquier cosa que un administrador legítimo de la cuenta puede hacer.

Detalles Técnicos

El problema está dentro del: app/design/adminhtml/default/default/template/sales/order/view/info.phtml:

Magento-StoredXSS-1

Como se puede ver en el snippet anterior, el template se acopla con el valor de retorno del método
getCustomerEmail para el panel de administración. Este snippet es semejante al snippet encontrado en un bug muy semejante dentro del plugin Jetpack para WordPress hace algunos meses. Con esto en mente, se investigó el tipo de mecanismos de validación que Magento utiliza para comprobar si una string que se dio fue un correo electrónico o no.

Y es esto lo que encontramos:

Magento-StoredXSS-2

Acepta dos tipos diferentes de mensajes de correo electrónico:

  • Correos electrónicos similares a los encontrados en WordPress (sin comillas dobles, sin señal ‘<‘, etc.)
  • Formato de string con comillas, que acepta prácticamente cualquier carácter imprimible (excepto los caracteres de espacio, que acepta sólo espacios regulares utilizados) sólo si está entre comillas dobles

Esto significa que, en teoría, podría usar un correo electrónico como “><script>alert(1);</script>”@sucuri.net como el correo electrónico de la cuenta de un de nuestros clientes, presentar una solicitud y ver lo que sucede cuando el administrador comprueba su aplicación en el panel de administración.

Magento-StoredXSS-3

¡Estábamos ciertos! Acabamos de poner un XSS en el Core de Magento.

Actualice Pronto

Si está utilizando una versión vulnerable de Magento, ¡actualice/parchee tan pronto como sea posible! Si no puede hacerlo, le recomendamos que utilice un Firewall o otra tecnología equivalente que agrega alguna forma de parche y hardening virtual para ayudarlo a quitar esas amenazas.

Fuente:https://blog.sucuri.net