stringtranslate.com

Ataque destrozado

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 procesos de una sesión . Un ataque Shatter aprovecha un fallo 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 que se esté ejecutando en la misma sesión y que haga uso de un bucle de mensajes . Esto podría dar lugar a una explotación de escalada de privilegios . [1]

Descripción general

Los ataques Shatter 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 "Exploiting design flaws in the Win32 API for privilege escalation" (Cómo aprovechar los fallos de diseño de la API de Win32 para la escalada de privilegios). [2] El artículo, que acuñó el término "ataque Shatter", explicaba el proceso por el cual una aplicación podía ejecutar código arbitrario en otra aplicación. Esto podía ocurrir porque Windows permite que las aplicaciones sin privilegios envíen mensajes a bucles de mensajes de aplicaciones con mayores privilegios, y algunos mensajes pueden tener como parámetro la dirección de una función de devolución de llamada en el espacio de direcciones de la aplicación. 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 artículo, Microsoft respondió señalando que: "El artículo tiene razón en que esta situación existe y describe correctamente sus efectos... El error del artículo es que afirma que se trata de un fallo de Windows. En realidad, el fallo se encuentra en el servicio específico, altamente privilegiado. Por diseño, todos los servicios dentro del escritorio interactivo son pares y pueden realizar solicitudes entre sí. Como resultado, todos los servicios en el escritorio interactivo tienen efectivamente privilegios proporcionales a los del servicio más privilegiado". [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 corrección se limitó a los servicios incluidos con Windows que podrían explotarse utilizando esta técnica; el defecto de diseño subyacente todavía existía y aún podía usarse para atacar otras aplicaciones o servicios de terceros. [5] Con Windows Vista , Microsoft apuntó a 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 conectado de los servicios del sistema con altos privilegios, que se cargan en la Sesión 0. En segundo lugar, se introdujo una nueva característica llamada Aislamiento de privilegios de 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 el grado en que sus componentes de representación interactúan con el resto del sistema.

La forma en que se crean las sesiones fue rediseñada en Windows Vista y Windows Server 2008 para brindar protección adicional contra ataques de tipo Shatter. Los inicios de sesión de los usuarios locales se trasladaron 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]

El servicio de detección de servicios interactivos en Windows Server 2008 .

Sin embargo, esto genera problemas de compatibilidad con versiones anteriores , ya que algunos programas se diseñaron con la suposición de que el servicio se ejecuta en la misma sesión que el usuario conectado. Para respaldar esta visión, 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 la Actualización de creadores de Windows 10. [10]

Véase también

Referencias

  1. ^ "Cómo explotar los fallos de diseño de la API Win32 para la escalada de privilegios. O... Ataques Shatter: cómo vulnerar Windows" . Consultado el 29 de diciembre de 2011 .
  2. ^ Chris Paget (agosto de 2002). "Explotación de fallas de diseño en la API Win32 para la escalada de privilegios". Archivado desde el original el 4 de septiembre de 2006.
  3. ^ "Información sobre un error arquitectónico detectado en Windows". TechNet . Microsoft. Septiembre de 2002.
  4. ^ "Boletín de seguridad de Microsoft MS02-071: un error 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 .
  5. ^ "Ventanas a prueba de roturas" (PDF) . Consultado el 29 de diciembre de 2011 .
  6. ^ ab "PsExec, control de cuentas de usuario y límites de seguridad". Archivado desde el original el 15 de abril de 2010. Consultado el 8 de octubre de 2007 .
  7. ^ "WebLog de Larry Osterman: interacción con los servicios". Larry Osterman. 14 de septiembre de 2005. Consultado el 3 de abril de 2007 .
  8. ^ "¿Por qué Vista? Cambios en los servicios, parte 2 (Seguridad, estabilidad, integridad del sistema)". Ken Schaefer. 5 de agosto de 2006.
  9. ^ 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 .
  10. ^ "Características que se eliminaron o quedaron obsoletas en Windows 10 Creators Update". Microsoft. 11 de marzo de 2024.