Las vulnerabilidades del sistema Windows amenazan la seguridad del ecosistema Web3, análisis profundo por expertos sobre los mecanismos de explotación.
Análisis de vulnerabilidades graves en el sistema Windows de Microsoft: puede poner en peligro la seguridad del ecosistema Web3
El mes pasado, un parche de seguridad publicado por Microsoft corrigió una vulnerabilidad de escalada de privilegios en Windows que estaba siendo explotada por hackers. Esta vulnerabilidad afecta principalmente a las versiones anteriores del sistema Windows, y parece que Windows 11 no se ve afectado.
Este artículo analizará cómo los atacantes continúan aprovechando este tipo de vulnerabilidades en el contexto actual de un fortalecimiento continuo de las medidas de seguridad. Nuestro análisis se basa en Windows Server 2016.
Contexto de la vulnerabilidad
Esta es una vulnerabilidad de 0day, es decir, una vulnerabilidad que no ha sido divulgada ni reparada. Los hackers pueden explotarla para atacar sin que el usuario lo sepa, lo que puede ser muy destructivo.
A través de esta vulnerabilidad a nivel del sistema Windows, los hackers pueden obtener el control total del sistema. Esto podría llevar a la filtración de información personal, colapsos del sistema, pérdida de datos, pérdidas financieras y otras consecuencias graves. Para los usuarios de Web3, las claves privadas y los activos digitales podrían ser robados. Desde una perspectiva más amplia, esta vulnerabilidad podría incluso afectar todo el ecosistema Web3 basado en la infraestructura de Web2.
Análisis de parches
Analizando el código del parche, el problema parece estar en que el conteo de referencias de un objeto se ha manejado incorrectamente una vez más. Al revisar los comentarios del código anterior, descubrimos que el código anterior solo bloqueaba el objeto de la ventana, sin bloquear el objeto del menú dentro de la ventana, lo que podría llevar a una referencia incorrecta del objeto del menú.
Reproducción de Vulnerabilidades
Al analizar el contexto de la función de vulnerabilidad, descubrimos que el menú que se pasa a xxxEnableMenuItem() generalmente ya está bloqueado en la función superior, dejando la duda sobre cuál objeto de menú se debe proteger.
Un análisis más detallado revela que en xxxEnableMenuItem, la función MenuItemState devuelve dos posibles menús: el menú principal de la ventana o un submenú (, e incluso un sub-submenú ).
Hemos construido una estructura de menú especial de cuatro capas para activar vulnerabilidades; estos menús deben cumplir ciertas condiciones específicas para pasar las verificaciones en la función. La clave está en que, cuando xxxRedrawTitle retorna a la capa de usuario, se eliminan ciertas relaciones de referencia entre menús, liberando objetos de menú específicos. De esta manera, en el punto de retorno de la función xxxEnableMenuItem, el objeto de menú referenciado ya es inválido.
Explotación de vulnerabilidades
Al desarrollar el exploit (exp), consideramos principalmente dos opciones:
Ejecutar código shellcode: referencia a vulnerabilidades similares anteriores, pero puede haber algunos obstáculos en las nuevas versiones de Windows.
Modificar la dirección del token utilizando primitivas de lectura y escritura: este método todavía tiene ejemplos públicos recientes a los que se puede hacer referencia y tiene buena versatilidad en la disposición de la memoria del montón de escritorio y en las primitivas de lectura y escritura.
Elegimos la segunda opción, dividiendo todo el proceso de utilización en dos pasos: cómo aprovechar la vulnerabilidad UAF para controlar el valor de cbwndextra, y cómo implementar de manera estable las primitivas de lectura y escritura.
La clave es encontrar una ubicación en la estructura de dirección que podamos construir donde se pueda escribir cualquier dato. Finalmente, elegimos implementar esto a través de una operación AND en un indicador en la función xxxRedrawWindow.
Para lograr un diseño de memoria estable, hemos diseñado al menos tres objetos HWND de 0x250 bytes consecutivos, liberando los objetos intermedios y ocupando con objetos HWNDClass. Los objetos HWND al principio y al final se utilizan respectivamente para verificar a través de funciones y para implementar las primitivas de lectura y escritura finales.
También determinamos con precisión si los objetos están organizados como se esperaba a través de la dirección del manejador de núcleo filtrada. En términos de primitivos de lectura y escritura, utilizamos GetMenuBarInfo() para realizar lecturas arbitrarias y SetClassLongPtr() para realizar escrituras arbitrarias.
Conclusión
Microsoft está intentando reestructurar el código relacionado con win32k utilizando Rust, en el futuro, este tipo de vulnerabilidades podrían ser eliminadas en el nuevo sistema.
El proceso de explotación de este tipo de vulnerabilidades es relativamente simple, y depende principalmente de la filtración de la dirección del manejador de la pila de escritorio. Si no se resuelve este problema de manera exhaustiva, los sistemas antiguos seguirán enfrentando riesgos de seguridad.
El descubrimiento de esta vulnerabilidad puede deberse a técnicas de detección de cobertura de código más completas.
Para la detección de explotación de vulnerabilidades, además de monitorear funciones clave, también se debe prestar atención a la disposición anómala de la memoria y al comportamiento de lectura y escritura de datos.
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
11 me gusta
Recompensa
11
7
Republicar
Compartir
Comentar
0/400
SelfSovereignSteve
· 08-14 15:57
Usa Linux, ¿qué hay para dudar?
Ver originalesResponder0
rug_connoisseur
· 08-13 09:13
¡Otra vulnerabilidad de Windows, ya estoy acostumbrado!
Ver originalesResponder0
rekt_but_not_broke
· 08-12 05:14
¡No hay tiempo que perder para ganar dinero! ¡Primero hay que proteger la Billetera!
Ver originalesResponder0
MetaLord420
· 08-12 05:02
¿Los que usan Windows se atreven a tocar Web3?!
Ver originalesResponder0
SighingCashier
· 08-12 05:00
Este problema del viejo sistema ya debería haberse cambiado.
Ver originalesResponder0
ForkMaster
· 08-12 04:59
¿No puedes tomar a la gente por tonta? ¿Estás corriendo un exploit para minería?
Las vulnerabilidades del sistema Windows amenazan la seguridad del ecosistema Web3, análisis profundo por expertos sobre los mecanismos de explotación.
Análisis de vulnerabilidades graves en el sistema Windows de Microsoft: puede poner en peligro la seguridad del ecosistema Web3
El mes pasado, un parche de seguridad publicado por Microsoft corrigió una vulnerabilidad de escalada de privilegios en Windows que estaba siendo explotada por hackers. Esta vulnerabilidad afecta principalmente a las versiones anteriores del sistema Windows, y parece que Windows 11 no se ve afectado.
Este artículo analizará cómo los atacantes continúan aprovechando este tipo de vulnerabilidades en el contexto actual de un fortalecimiento continuo de las medidas de seguridad. Nuestro análisis se basa en Windows Server 2016.
Contexto de la vulnerabilidad
Esta es una vulnerabilidad de 0day, es decir, una vulnerabilidad que no ha sido divulgada ni reparada. Los hackers pueden explotarla para atacar sin que el usuario lo sepa, lo que puede ser muy destructivo.
A través de esta vulnerabilidad a nivel del sistema Windows, los hackers pueden obtener el control total del sistema. Esto podría llevar a la filtración de información personal, colapsos del sistema, pérdida de datos, pérdidas financieras y otras consecuencias graves. Para los usuarios de Web3, las claves privadas y los activos digitales podrían ser robados. Desde una perspectiva más amplia, esta vulnerabilidad podría incluso afectar todo el ecosistema Web3 basado en la infraestructura de Web2.
Análisis de parches
Analizando el código del parche, el problema parece estar en que el conteo de referencias de un objeto se ha manejado incorrectamente una vez más. Al revisar los comentarios del código anterior, descubrimos que el código anterior solo bloqueaba el objeto de la ventana, sin bloquear el objeto del menú dentro de la ventana, lo que podría llevar a una referencia incorrecta del objeto del menú.
Reproducción de Vulnerabilidades
Al analizar el contexto de la función de vulnerabilidad, descubrimos que el menú que se pasa a xxxEnableMenuItem() generalmente ya está bloqueado en la función superior, dejando la duda sobre cuál objeto de menú se debe proteger.
Un análisis más detallado revela que en xxxEnableMenuItem, la función MenuItemState devuelve dos posibles menús: el menú principal de la ventana o un submenú (, e incluso un sub-submenú ).
Hemos construido una estructura de menú especial de cuatro capas para activar vulnerabilidades; estos menús deben cumplir ciertas condiciones específicas para pasar las verificaciones en la función. La clave está en que, cuando xxxRedrawTitle retorna a la capa de usuario, se eliminan ciertas relaciones de referencia entre menús, liberando objetos de menú específicos. De esta manera, en el punto de retorno de la función xxxEnableMenuItem, el objeto de menú referenciado ya es inválido.
Explotación de vulnerabilidades
Al desarrollar el exploit (exp), consideramos principalmente dos opciones:
Ejecutar código shellcode: referencia a vulnerabilidades similares anteriores, pero puede haber algunos obstáculos en las nuevas versiones de Windows.
Modificar la dirección del token utilizando primitivas de lectura y escritura: este método todavía tiene ejemplos públicos recientes a los que se puede hacer referencia y tiene buena versatilidad en la disposición de la memoria del montón de escritorio y en las primitivas de lectura y escritura.
Elegimos la segunda opción, dividiendo todo el proceso de utilización en dos pasos: cómo aprovechar la vulnerabilidad UAF para controlar el valor de cbwndextra, y cómo implementar de manera estable las primitivas de lectura y escritura.
La clave es encontrar una ubicación en la estructura de dirección que podamos construir donde se pueda escribir cualquier dato. Finalmente, elegimos implementar esto a través de una operación AND en un indicador en la función xxxRedrawWindow.
Para lograr un diseño de memoria estable, hemos diseñado al menos tres objetos HWND de 0x250 bytes consecutivos, liberando los objetos intermedios y ocupando con objetos HWNDClass. Los objetos HWND al principio y al final se utilizan respectivamente para verificar a través de funciones y para implementar las primitivas de lectura y escritura finales.
También determinamos con precisión si los objetos están organizados como se esperaba a través de la dirección del manejador de núcleo filtrada. En términos de primitivos de lectura y escritura, utilizamos GetMenuBarInfo() para realizar lecturas arbitrarias y SetClassLongPtr() para realizar escrituras arbitrarias.
Conclusión
Microsoft está intentando reestructurar el código relacionado con win32k utilizando Rust, en el futuro, este tipo de vulnerabilidades podrían ser eliminadas en el nuevo sistema.
El proceso de explotación de este tipo de vulnerabilidades es relativamente simple, y depende principalmente de la filtración de la dirección del manejador de la pila de escritorio. Si no se resuelve este problema de manera exhaustiva, los sistemas antiguos seguirán enfrentando riesgos de seguridad.
El descubrimiento de esta vulnerabilidad puede deberse a técnicas de detección de cobertura de código más completas.
Para la detección de explotación de vulnerabilidades, además de monitorear funciones clave, también se debe prestar atención a la disposición anómala de la memoria y al comportamiento de lectura y escritura de datos.