En informática, un ataque shatter es una técnica de programación empleada por piratas informáticos en los sistemas operativos Microsoft Windows para eludir las restricciones de seguridad entre los procesos de una sesión . Un ataque shatter se aprovecha de una falla de diseño en el sistema de paso de mensajes de Windows por el cual se podría inyectar código arbitrario en cualquier otra aplicación o servicio en ejecución en la misma sesión, que hace uso de un bucle de mensajes . Esto podría resultar en una vulnerabilidad de escalada de privilegios . [1]
Descripción general
Los ataques rotos se convirtieron en un tema de intensa conversación en la comunidad de seguridad en agosto de 2002 después de la publicación del artículo de Chris Paget titulado "Explotación de fallas de diseño en la API de Win32 para la escalada de privilegios". [2] El documento, que acuñó el término "ataque shatter", explicaba el proceso mediante el cual una aplicación podía ejecutar código arbitrario en otra aplicación. Esto podría ocurrir porque Windows permite que las aplicaciones sin privilegios envíen mensajes a los bucles de mensajes de la aplicación con más privilegios, y algunos mensajes pueden tener la dirección de una función de devolución de llamada en el espacio de direcciones de la aplicación como parámetro. Si un atacante logra poner su propia cadena en la memoria de la aplicación con mayores privilegios (por ejemplo, pegando el código shell en un cuadro de edición) en una ubicación conocida, podría enviar mensajes WM_TIMER con parámetros de función de devolución de llamada configurados para apuntar a la cadena del atacante. .
Unas semanas después de la publicación de este documento, Microsoft respondió, señalando que: "El documento tiene razón en que esta situación existe, y describe correctamente su efecto ... Donde el documento yerra es al afirmar que se trata de una falla en Windows. En realidad, la falla radica en el servicio específico, altamente privilegiado. Por diseño, todos los servicios dentro del escritorio interactivo son iguales y pueden imponer solicitudes entre sí. Como resultado, todos los servicios en el escritorio interactivo efectivamente tienen privilegios acordes con el servicio más privilegiado que existe ". [3]
Soluciones
En diciembre de 2002, Microsoft publicó un parche para Windows NT 4.0 , Windows 2000 y Windows XP que cerró algunas vías de explotación. [4] Sin embargo, esta fue solo una solución parcial, ya que la solución se limitó a los servicios incluidos con Windows que podrían explotarse con esta técnica; la falla de diseño subyacente aún existía y aún podría usarse para apuntar a otras aplicaciones o servicios de terceros. [5] Con Windows Vista , Microsoft tenía como objetivo resolver el problema de dos maneras: primero, los usuarios locales ya no inician sesión en la Sesión 0, separando así el bucle de mensajes de la sesión de un usuario que ha iniciado sesión de los servicios del sistema de alto privilegio, que se cargan en la Sesión 0. En segundo lugar, se introdujo una nueva función denominada Aislamiento de privilegios de la interfaz de usuario (UIPI), mediante la cual los procesos pueden protegerse aún más contra ataques shatter asignando un nivel de integridad a cada proceso. [6] Los intentos de enviar mensajes a un proceso con un nivel de integridad más alto fallarán, incluso si ambos procesos son propiedad del mismo usuario. Sin embargo, UIPI no evita todas las interacciones entre procesos en diferentes niveles de integridad. [6] Internet Explorer 7 , por ejemplo, utiliza la función UIPI para limitar la medida en que sus componentes de renderizado interactúan con el resto del sistema.
La forma en que se crean instancias de sesiones se rediseñó en Windows Vista y Windows Server 2008 para proporcionar protección adicional contra ataques shatter. Los inicios de sesión de los usuarios locales se movieron de la Sesión 0 a la Sesión 1, separando así los procesos del usuario de los servicios del sistema que podrían ser vulnerables. [7] [8]
Sin embargo, esto crea problemas de compatibilidad con versiones anteriores , ya que algunos programas se diseñaron asumiendo que el servicio se ejecuta en la misma sesión que el usuario que inició sesión. Para admitir esta vista, Windows Vista y Windows Server 2008 introdujeron un servicio de Windows llamado " Detección de servicios interactivos " que permite el acceso a los cuadros de diálogo creados por los servicios interactivos cuando aparecen. Al usuario interactivo se le muestra un cuadro de diálogo y se le ofrece la posibilidad de cambiar a la Sesión 0 para acceder al cuadro de diálogo. [9] Esta capacidad se eliminó en Windows 10 Creators Update . [10]
Ver también
Referencias
- ^ "Explotación de fallas de diseño en la API de Win32 para la escalada de privilegios. O ... Shatter Attacks - Cómo romper Windows" . Consultado el 29 de diciembre de 2011 .
- ^ Chris Paget (agosto de 2002). "Explotación de fallas de diseño en la API de Win32 para la escalada de privilegios" . Archivado desde el original el 4 de septiembre de 2006.
- ^ "Información sobre falla arquitectónica reportada en Windows" . TechNet . Microsoft. Septiembre de 2002.
- ^ "Boletín de seguridad de Microsoft MS02-071: una falla en el manejo de mensajes WM_TIMER de Windows podría habilitar la elevación de privilegios (328310)" . Microsoft. 11 de diciembre de 2002 . Consultado el 18 de julio de 2006 .
- ^ "Windows a prueba de roturas" (PDF) . Consultado el 29 de diciembre de 2011 .
- ^ a b "PsExec, Control de cuentas de usuario y límites de seguridad" . Consultado el 8 de octubre de 2007 .
- ^ "WebLog de Larry Osterman: interacción con los servicios" . Larry Osterman. 14 de septiembre de 2005 . Consultado el 3 de abril de 2007 .
- ^ "¿Por qué Vista? Cambios en la parte de servicios 2 (seguridad, estabilidad, integridad del sistema)" . Ken Schaefer. 5 de agosto de 2006.
- ^ Cyril Voisin (23 de febrero de 2007). "Aislamiento de servicios en la Sesión 0 de Windows Vista y Longhorn Server" . Cyril Voisin (también conocido como Voy) sobre seguridad . Blogs de MSDN . Consultado el 23 de abril de 2008 .
- ^ "Funciones que se eliminaron o dejaron de estar disponibles en Windows 10 Creators Update" . Microsoft.