Análisis de vulnerabilidades 0day de Microsoft: podría representar una amenaza significativa para la infraestructura Web3
El mes pasado, el parche de seguridad de Microsoft incluía una vulnerabilidad de elevación de privilegios de win32k que estaba siendo explotada en la naturaleza. Esta vulnerabilidad parece existir solo en sistemas Windows más antiguos y no se puede activar en Windows 11.
La explotación de este tipo de vulnerabilidades existe desde hace mucho tiempo. Este artículo analizará cómo los atacantes pueden seguir aprovechando esta vulnerabilidad en el contexto actual de mejoras continuas en las nuevas medidas de mitigación. Completamos todo el proceso de análisis en un entorno de Windows Server 2016.
Una vulnerabilidad 0day se refiere a una vulnerabilidad que no ha sido divulgada ni reparada, y que puede ser explotada maliciosamente sin ser detectada, lo que la hace extremadamente destructiva. La vulnerabilidad 0day descubierta esta vez se encuentra a nivel del sistema operativo Windows, y los hackers pueden obtener el control total de Windows a través de esta vulnerabilidad.
El control del sistema por hackers puede resultar en la filtración de información personal, fallos del sistema, pérdida de datos, pérdidas financieras e inserción de malware. Para los usuarios de Web3, las claves privadas pueden ser robadas y los activos digitales pueden ser transferidos. Desde una perspectiva más amplia, esta vulnerabilidad podría incluso afectar a todo el ecosistema Web3 que opera sobre la infraestructura de Web2.
Análisis de parches
Después de analizar el parche, parece que el problema es simplemente que el conteo de referencias de un objeto ha sido procesado una vez más. Debido a que el código de win32k es bastante antiguo, podemos encontrar algunos comentarios de código fuente anteriores que indican que el código anterior solo bloqueaba el objeto de la ventana y no bloqueaba el objeto de menú dentro del objeto de la ventana, donde el objeto de menú podría haber sido referenciado incorrectamente.
Prueba de concepto de explotación de vulnerabilidades(PoC)
Hemos descubierto que el menú pasado a xxxEnableMenuItem() generalmente ya está bloqueado en la función superior. Un análisis adicional revela que la función MenuItemState en xxxEnableMenuItem devuelve dos posibles menús: el menú principal de la ventana, o un submenú dentro del menú (, o incluso un sub-submenú ).
En PoC, hemos construido una estructura de menú especial de cuatro capas y hemos establecido atributos específicos para cada nivel del menú, a través de las comprobaciones y juicios en la función xxxEnableMenuItem. Los pasos clave incluyen eliminar ciertas relaciones de referencia de menú y liberar objetos de menú específicos al regresar a la capa de usuario en xxxRedrawTitle.
Explotación de vulnerabilidades ( Exp ) implementación
Enfoque general
Principalmente consideramos dos direcciones de explotación: ejecutar código shellcode y utilizar primitivas de lectura y escritura para modificar la dirección del token. Teniendo en cuenta varios factores, elegimos la segunda.
Todo el uso de exp se puede descomponer en dos problemas clave: cómo aprovechar la vulnerabilidad UAF para controlar el valor de cbwndextra, y cómo implementar operaciones de lectura y escritura estables una vez que se controla el valor de cbwndextra.
realizar la primera escritura de datos
Utilizamos el objeto de nombre de ventana en la clase de ventana WNDClass para ocupar y liberar el objeto de menú. La clave es encontrar una ubicación en la estructura de direcciones que podamos construir y que pueda ser escrita arbitrariamente.
Finalmente decidimos implementar la escritura a través de un bit de bandera en la función xxxRedrawWindow utilizando la operación AND 2. Escribimos en el cb-extra de HWNDClass en lugar del cb-extra del objeto de ventana para tener un mejor control sobre el diseño de memoria.
diseño de memoria estable
Hemos diseñado una disposición de memoria de al menos tres objetos HWND de 0x250 bytes en continuo, liberando el del medio, que es ocupado por un objeto HWNDClass de 0x250 bytes. Los objetos HWND anteriores y posteriores se utilizan respectivamente para verificar parámetros y como medio para operaciones de lectura y escritura.
Utilizamos la dirección del manejador del núcleo filtrado en la memoria del montón para determinar con precisión si el objeto de ventana solicitado está dispuesto como se esperaba.
Modificación de la lectura y escritura de primitivas
Utilizamos GetMenuBarInfo() para implementar lectura arbitraria y SetClassLongPtr() para implementar escritura arbitraria. A excepción de la operación de escritura que reemplaza TOKEN, todas las otras escrituras se completan utilizando el objeto de clase del primer objeto de ventana con un desplazamiento.
Resumen
La vulnerabilidad win32k ha existido durante mucho tiempo, pero Microsoft está intentando reestructurar el código del núcleo relacionado utilizando Rust, y en futuros sistemas, este tipo de vulnerabilidades podrían ser eliminadas.
El proceso de explotación de esta vulnerabilidad es relativamente simple, siendo el principal desafío cómo controlar la primera escritura. La vulnerabilidad todavía depende en gran medida de la filtración de la dirección del manejador de pila de escritorio, lo que sigue siendo un riesgo de seguridad para los sistemas antiguos.
El descubrimiento de esta vulnerabilidad puede deberse a una mejor detección de la cobertura del código.
En la detección de explotación de vulnerabilidades, además de prestar atención a los puntos clave de la función que activa la vulnerabilidad, también se debe realizar una detección específica de la disposición anómala de la memoria y las operaciones de lectura y escritura de datos de la ventana.
Ver originales
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.
13 me gusta
Recompensa
13
7
Compartir
Comentar
0/400
CryptoPhoenix
· hace18h
¡Es otra oportunidad para reconstruir la fe! Hacer una buena copia de seguridad de la Cartera fría, salir del rango inferior es crucial para la supervivencia.
Ver originalesResponder0
SignatureVerifier
· hace22h
*suspiro* otra validación técnicamente insuficiente... ¿cuándo aprenderán a contar correctamente?
Ver originalesResponder0
FlatTax
· hace22h
Actualiza el sistema antes de hablar, ten cuidado de no perder la cuenta.
Ver originalesResponder0
MysteriousZhang
· hace22h
Otra vez win, ¿en qué año estamos todavía corriendo nodos en win?
Ver originalesResponder0
TooScaredToSell
· hace22h
Deja de jugar con la billetera de la vieja computadora y transfiera rápido.
Ver originalesResponder0
LootboxPhobia
· hace22h
Asustado Llave privada Cartera fría sensación de seguridad++
Ver originalesResponder0
CryptoCross-TalkClub
· hace22h
Mercado bajista canta un monólogo, bull run comercia moneda, y de verdad me ha hecho un tonto cuchillo rápido Microsoft.
La amenaza de vulnerabilidades 0day en el sistema Win podría comprometer la seguridad de la infraestructura Web3.
Análisis de vulnerabilidades 0day de Microsoft: podría representar una amenaza significativa para la infraestructura Web3
El mes pasado, el parche de seguridad de Microsoft incluía una vulnerabilidad de elevación de privilegios de win32k que estaba siendo explotada en la naturaleza. Esta vulnerabilidad parece existir solo en sistemas Windows más antiguos y no se puede activar en Windows 11.
La explotación de este tipo de vulnerabilidades existe desde hace mucho tiempo. Este artículo analizará cómo los atacantes pueden seguir aprovechando esta vulnerabilidad en el contexto actual de mejoras continuas en las nuevas medidas de mitigación. Completamos todo el proceso de análisis en un entorno de Windows Server 2016.
Una vulnerabilidad 0day se refiere a una vulnerabilidad que no ha sido divulgada ni reparada, y que puede ser explotada maliciosamente sin ser detectada, lo que la hace extremadamente destructiva. La vulnerabilidad 0day descubierta esta vez se encuentra a nivel del sistema operativo Windows, y los hackers pueden obtener el control total de Windows a través de esta vulnerabilidad.
El control del sistema por hackers puede resultar en la filtración de información personal, fallos del sistema, pérdida de datos, pérdidas financieras e inserción de malware. Para los usuarios de Web3, las claves privadas pueden ser robadas y los activos digitales pueden ser transferidos. Desde una perspectiva más amplia, esta vulnerabilidad podría incluso afectar a todo el ecosistema Web3 que opera sobre la infraestructura de Web2.
Análisis de parches
Después de analizar el parche, parece que el problema es simplemente que el conteo de referencias de un objeto ha sido procesado una vez más. Debido a que el código de win32k es bastante antiguo, podemos encontrar algunos comentarios de código fuente anteriores que indican que el código anterior solo bloqueaba el objeto de la ventana y no bloqueaba el objeto de menú dentro del objeto de la ventana, donde el objeto de menú podría haber sido referenciado incorrectamente.
Prueba de concepto de explotación de vulnerabilidades(PoC)
Hemos descubierto que el menú pasado a xxxEnableMenuItem() generalmente ya está bloqueado en la función superior. Un análisis adicional revela que la función MenuItemState en xxxEnableMenuItem devuelve dos posibles menús: el menú principal de la ventana, o un submenú dentro del menú (, o incluso un sub-submenú ).
En PoC, hemos construido una estructura de menú especial de cuatro capas y hemos establecido atributos específicos para cada nivel del menú, a través de las comprobaciones y juicios en la función xxxEnableMenuItem. Los pasos clave incluyen eliminar ciertas relaciones de referencia de menú y liberar objetos de menú específicos al regresar a la capa de usuario en xxxRedrawTitle.
Explotación de vulnerabilidades ( Exp ) implementación
Enfoque general
Principalmente consideramos dos direcciones de explotación: ejecutar código shellcode y utilizar primitivas de lectura y escritura para modificar la dirección del token. Teniendo en cuenta varios factores, elegimos la segunda.
Todo el uso de exp se puede descomponer en dos problemas clave: cómo aprovechar la vulnerabilidad UAF para controlar el valor de cbwndextra, y cómo implementar operaciones de lectura y escritura estables una vez que se controla el valor de cbwndextra.
realizar la primera escritura de datos
Utilizamos el objeto de nombre de ventana en la clase de ventana WNDClass para ocupar y liberar el objeto de menú. La clave es encontrar una ubicación en la estructura de direcciones que podamos construir y que pueda ser escrita arbitrariamente.
Finalmente decidimos implementar la escritura a través de un bit de bandera en la función xxxRedrawWindow utilizando la operación AND 2. Escribimos en el cb-extra de HWNDClass en lugar del cb-extra del objeto de ventana para tener un mejor control sobre el diseño de memoria.
diseño de memoria estable
Hemos diseñado una disposición de memoria de al menos tres objetos HWND de 0x250 bytes en continuo, liberando el del medio, que es ocupado por un objeto HWNDClass de 0x250 bytes. Los objetos HWND anteriores y posteriores se utilizan respectivamente para verificar parámetros y como medio para operaciones de lectura y escritura.
Utilizamos la dirección del manejador del núcleo filtrado en la memoria del montón para determinar con precisión si el objeto de ventana solicitado está dispuesto como se esperaba.
Modificación de la lectura y escritura de primitivas
Utilizamos GetMenuBarInfo() para implementar lectura arbitraria y SetClassLongPtr() para implementar escritura arbitraria. A excepción de la operación de escritura que reemplaza TOKEN, todas las otras escrituras se completan utilizando el objeto de clase del primer objeto de ventana con un desplazamiento.
Resumen
La vulnerabilidad win32k ha existido durante mucho tiempo, pero Microsoft está intentando reestructurar el código del núcleo relacionado utilizando Rust, y en futuros sistemas, este tipo de vulnerabilidades podrían ser eliminadas.
El proceso de explotación de esta vulnerabilidad es relativamente simple, siendo el principal desafío cómo controlar la primera escritura. La vulnerabilidad todavía depende en gran medida de la filtración de la dirección del manejador de pila de escritorio, lo que sigue siendo un riesgo de seguridad para los sistemas antiguos.
El descubrimiento de esta vulnerabilidad puede deberse a una mejor detección de la cobertura del código.
En la detección de explotación de vulnerabilidades, además de prestar atención a los puntos clave de la función que activa la vulnerabilidad, también se debe realizar una detección específica de la disposición anómala de la memoria y las operaciones de lectura y escritura de datos de la ventana.