Cross-zone scripting

De Wikipedia, la enciclopedia libre

Una secuencia de comandos cruzados o Cross-zone scripting es un exploit del navegador que aprovecha una vulnerabilidad dentro de una solución de seguridad basada en zonas. El ataque permite que el contenido (scripts) en zonas no privilegiadas se ejecute con los permisos de una zona privilegiada, es decir, una escalada de privilegios dentro del cliente (navegador web) que ejecuta el script.

  • Un error del navegador web que bajo algunas condiciones permite que el contenido (scripts) de una zona se ejecute con los permisos de una zona de mayor privilegio.
  • Un error de configuración del navegador; sitios inseguros listados en zonas privilegiadas.
  • Una vulnerabilidad de secuencia de comandos en sitios cruzados dentro de una zona privilegiada.

Un escenario de ataque común implica dos pasos. El primer paso es usar una vulnerabilidad de scripts de zonas cruzadas para conseguir que los scripts se ejecuten dentro de una zona privilegiada. Para completar el ataque, luego se realizan acciones maliciosas en la computadora usando componentes ActiveX inseguros.

Este tipo de vulnerabilidad ha sido explotado para instalar silenciosamente varios programas maliciosos (como spyware, software de control remoto, gusanos y otros) en computadoras que navegan en una página web maliciosa.

Orígenes del concepto de zona[editar]

Hay cuatro zonas bien conocidas en Internet Explorer:

  • Internet. La zona por defecto. Todo lo que no pertenece a otras zonas.
  • Intranet local.
  • Sitios de confianza. Normalmente se utiliza para enumerar los sitios de confianza a los que se permite ejecutar con permisos de seguridad mínimos (por ejemplo, ejecutar objetos ActiveX no seguros y no firmados).
  • Sitios restringidos.

Estas zonas se explican en detalle en "Cómo utilizar las zonas de seguridad en Internet Explorer".[1]

También hay una zona oculta adicional:

  • Ordernador local (o zona de mi ordenador). Esta zona es particularmente interesante porque puede acceder a los archivos del ordenador local. Históricamente esta zona ha sido extremadamente insegura, pero en las versiones recientes de Internet Explorer (para Windows XP) se han tomado medidas para reducir los riesgos asociados a la zona.

La intranet local, los sitios de confianza y el ordenador local suelen estar configurados como zonas privilegiadas. La mayoría de los ataques de scripts de zonas cruzadas están diseñados para saltar de una zona de Internet a una zona privilegiada.

Ejemplos[editar]

En la zona de la computadora local[editar]

Este tipo de exploit intenta ejecutar el código en el contexto de seguridad de la Zona Informática Local.

El siguiente HTML se utiliza para ilustrar un intento de explotación ingenuo (no efectivo):

<!DOCTYPE html>
<html>
<body>
<img src="attack.gif">
<script src="file://C:\Documents and Settings\Administrator\
         Local Settings\Temporary Internet Files\attack.gif">
</body>
</html>

Explicación: el código HTML intenta que attack.gif se cargue en la caché utilizando una referencia IMG SRC. Luego se usa una etiqueta SCRIPT SRC para intentar ejecutar el script desde la Zona de Computación Local dirigiendo el archivo local en el caché.

En la zona de la intranet local[editar]

  • Un atacante podría (de alguna manera) saber de una vulnerabilidad XSS en http://intranet.example.com/xss.php
  • Muchos usuarios de http://intranet.example.com visitan regularmente http://www.example.com/, donde cualquiera puede añadir enlaces interesantes.
  • El atacante añade un enlace a:
http://intranet.example.com/xss.php?<script>alert()</script>

Una computadora que considera intranet.example.com como parte de la zona de Intranet local, ahora será exitosamente escrita en una zona cruzada.

En la zona de sitios de confianza[editar]

Un ejemplo muy conocido es el error %2f de Internet Explorer 6. Se descubrió que la siguiente URL

http://windowsupdate.microsoft.com%2f.example.com/

ejecutado con permiso de "Sitios de confianza" si windowsupdate.microsoft.com estaba listado como un sitio de confianza.

Referencias[editar]

Enlaces externos[editar]