Seguridad de Windows 10: cómo la pila de sombra ayudará a mantener a raya a los piratas informáticos


Cómo Windows usará la tecnología de regulate de flujo de command de Intel para bloquear clases enteras de ataques comunes, ahora finalmente está llegando al mercado.

Es importante corregir los errores individuales detrás de las vulnerabilidades que los hackers usan para atacar los sistemas, pero es mucho más efectivo bloquear las técnicas que usan los atacantes para explotar esas vulnerabilidades y eliminar una clase completa de vulnerabilidades, o al menos hacerlas más caras y más rápidas. consumiendo para crear.

Programación orientada al retorno (ROP) ha sido un técnica muy común eso es particularmente difícil de bloquear, porque en lugar de intentar inyectar su propio código en los procesos en ejecución (algo contra lo que los sistemas operativos y los navegadores han estado agregando defensas), los atacantes buscan pequeños fragmentos del código legítimo que ya está en la memoria que contiene &#39retornos&#39 – – donde el código salta a una nueva rutina o vuelve al hilo principal.

«Con ROP, no puedo crear un nuevo código solo puedo saltar a diferentes piezas de código y tratar de encadenarlo en una carga útil», dijo a TechRepublic Dave Weston, director de seguridad del sistema operativo en Microsoft. Si el código legítimo tiene un error de seguridad de la memoria como un desbordamiento del búfer, corromper esos punteros en la memoria significa que el sistema comienza a ejecutar el propio código del atacante en lugar de volver a la dirección en la pila de llamadas del programa.

Microsoft ha estado trabajando en formas de detener a los atacantes que secuestran el flujo de control en programas como este desde alrededor de 2012. Windows ha agregado múltiples niveles de protección, comenzando con la firma de código importante (Guardia de integridad de código, o CIG) y bloqueando la generación de código de tiempo de ejecución primero en el navegador y luego en las máquinas virtuales y el núcleo (Guardia de código arbitrarioo ACG).

«El objetivo es evitar que el atacante cargue un archivo binario que Microsoft o uno de nuestros terceros no firmó incluso si pueden explotar el proceso y obtener daños en la memoria en el proceso, no pueden inyectar shellcode o otras construcciones «, explicó Weston.

Esa defensa fue lo suficientemente efectiva como para presionar a los atacantes a usar ROP, por lo que el siguiente paso fue tratar de proteger el flujo de control dentro del programa. La integridad del flujo de manage llegó a Home windows 8.1 como Control de flujo de guardia (CFG) Esto bloquea los ataques de flujo de regulate hacia adelante (donde el código salta o hace una llamada y los atacantes intentan enviarlo al lugar equivocado).

«En el momento de la compilación, tomamos un registro de todas las transferencias indirectas o saltos o llamadas que el desarrollador de application pretende que haga el código, y ese mapa se pasa al kernel cuando carga el binario y se aplica cuando se ejecuta el código». Dijo Weston. Si un atacante logra enviar el código a una dirección que no está en el mapa, el proceso finaliza: una aplicación infectada se bloqueará, pero no ejecutará el código malicioso.

CFG es la razón por la que varios ataques clave de día cero en Home windows 7 no afectaron a Home windows 10. Pero, como señaló Weston, 2015 es hace mucho tiempo en términos de seguridad, y CFG solo aborda parte del problema. «Los atacantes han comenzado a corromper la pila, inyectando sus marcos ROP o sus conjuntos de instrucciones maliciosas». Al interferir con el flujo de ejecución cuando regresa al subproceso principal, en lugar de cuando salta hacia adelante, pueden omitir CFG y ejecutar su propio código cuando el subproceso debe regresar.

Llama y regresa

No es que Microsoft no supiera que eso podría suceder es más difícil de proteger y la mejor opción es hacerlo en components, con un registro especial en la CPU que guarda una copia de la dirección de retorno donde no se puede alterar. Cuando se ejecuta el fragmento de código con la instrucción de retorno, puede comparar la dirección en la pila de llamadas en la memoria con la dirección en la pila &#39oculta&#39 almacenada en el procesador para verificar que no haya sido manipulada.

El diseño de nuevas instrucciones de CPU lleva tiempo, e incluso una vez que se envían, lleva un tiempo antes de que las personas compren nuevo components, por lo que Microsoft intentó crear una pila de sombra en el software package. (Esto estuvo lejos del primer intento de crear una pila de sombra hay una implementada en SONIDO METÁLICO que Chrome usó por un tiempo.) Inusualmente, el enfoque que se habría convertido en Return Flow Guard fue diseñado no por los ingenieros de program habituales sino por el equipo rojo de Windows, el grupo que ataca las compilaciones internas y internas de Home windows para buscar vulnerabilidades. Pero cuando el mismo equipo observó cómo podían atacar su propio diseño, encontraron un condición de carrera eso significaba que algunas aplicaciones no estaban protegidas y decidieron no enviarlas en absoluto.

«El desafío de hacer una pila de sombra en el software program es que tienes dos opciones: puedes tratar de ocultarlo, o puedes tratar de ponerlo en un lugar donde el atacante no pueda escribir, y en última instancia, todo se lower a si puede modificar la tabla de páginas o si puede ubicarla en la memoria si las cosas salen mal «, explicó Weston. «Intentamos ocultarlo en algún lugar de la memoria de 64 bits envolviéndolo en páginas de protección, por lo que si a alguien le gustara una búsqueda iterativa a través de la memoria, primero golpearía un espacio de protección y bloquearía el proceso antes de encontrar la pila de sombras». Pero en aplicaciones de subprocesos múltiples de alto rendimiento, los atacantes a veces pueden hacer que el kernel omita la comprobación para ver si la dirección de retorno coincide con la dirección en la pila de sombra.

«Cuando tenemos que hacerlo en software program, tenemos que introducir &#39no ops&#39 cuando ingresa y sale de la función, los rellenamos con espacios en blanco para que la gente pueda masajear la memoria, la gente pueda masajear el condiciones de carrera del sistema y omitir las comprobaciones por completo «, explicó Hari Pulapaka, gerente principal del programa grupal del equipo del kernel de Windows. No hay condición de carrera cuando la pila de sombras se almacena en el components, por lo que las comprobaciones no se saltan.

CET (Control-flow Enforcement Technology) completa el conjunto de cuatro protecciones contra ROP (Programación orientada al retorno) en el que Microsoft ha estado trabajando durante muchos años.

«data-credit =» Imagen: Microsoft «rel =» noopener noreferrer nofollow «>ms-shadow-stack-4-code-execute-mitigations.jpg

CET (Control-flow Enforcement Know-how) completa el conjunto de cuatro protecciones contra ROP (Programación orientada al retorno) en el que Microsoft ha estado trabajando durante muchos años.

Imagen: Microsoft

Microsoft e Intel trabajaron juntos en un diseño llamado Tecnología de handle de management de flujo (CET) hace varios años, que agrega el nuevo registro Shadow Stack Pointer (SSP) y modifica la llamada estándar de la CPU y las instrucciones de devolución para almacenar una copia de la dirección de retorno y compararla con la que está en la memoria, por lo que la mayoría de los programas ganaron &#39 No necesita ningún cambio por compatibilidad. Si las dos direcciones no coinciden, lo que significa que la pila ha sido interferida, el código dejará de ejecutarse.

«La tabla de páginas de sombra se asigna en un lugar al que la mayoría de los procesos o incluso el núcleo no pueden acceder, y esto está respaldado por un nuevo atributo de tabla de páginas que ni siquiera está expuesto en este momento y la gente tampoco puede consultarlo», dijo Pulapaka. «La plan es que no podrá ver que existe, y no podrá tocarlo, y si intenta tocarlo, el núcleo no le permite permitir que ningún proceso arbitrario lo toque». «.

VER: 20 consejos profesionales para hacer que Home windows 10 funcione de la manera que desee (PDF gratuito) (TechRepublic)

CET también incluye alguna protección de llamada directa: el seguimiento indirecto de sucursales realiza una verificación similar a CFG pero en el components. La especificación CET se lanzó por primera vez en 2016 y, por compatibilidad, el silicio lanzado desde entonces ha tenido una versión no funcional de la instrucción que marca las direcciones indirectas como seguras.

Intel nos confirmó que CET se incluirá en Lago tigre CPUs este año y en la próxima generación de Xeon para servidores. AMD no dio una fecha, pero nos dijo que pronto tendrá el equivalente de CET. Arm está adoptando un enfoque diferente, utilizando punteros firmados.

Suitable y seguro

Microsoft ya ha comenzado a crear soporte en Home windows 10, comenzando con 1903 y completándolo en la próxima versión 2004, por lo que ha estado apareciendo en compilaciones rápidas de información privilegiada. No está habilitado porque el hardware aún no está ampliamente disponible, pero está ahí para probar la compatibilidad, explicó Pulapaka. «Cuando una compilación interna tiene todas estas comprobaciones dentro del núcleo, nos da la confianza de que no hemos roto nada y no hemos causado ningún error».

Para evitar problemas de compatibilidad con el computer software de terceros, la protección de la pila CET se habilitará inicialmente en Home windows. Los desarrolladores lo hacen estableciendo un atributo en una aplicación o una DLL con un bandera de enlace para marcarlo como suitable con CET. Esto se ha hecho para todos los códigos y bibliotecas de Windows y, explicó Pulapaka, «si alguien intenta atacar el código de Windows y desconectamos el cable CET, haremos que el proceso se detenga».

Si no establecen ese little bit, CET no se activará, e incluso si los desarrolladores establecen el little bit para su propio código, si llaman a un marco o biblioteca de terceros que no tiene el indicador CET establecido y se bloquea porque falla la verificación de la dirección CET, Home windows no detendrá la aplicación original.

«Estamos siendo un poco conservadores para evitar romper las aplicaciones», dijo Pulapaka. Pero Windows también podría ejecutarse en un modo estricto. «Si una aplicación dice que es appropriate con CET, incluso si la DLL de terceros que carga no es suitable con CET, en ese modo todavía haríamos todas las comprobaciones en esa DLL y bloquearíamos el proceso si alguien intenta atacar ese proceso».

Microsoft aún no ha decidido cómo se aplicaría ese modo porque el components no está disponible para que los desarrolladores y las empresas prueben las aplicaciones. «Queremos brindar flexibilidad a todos, por lo que queremos que la aplicación sea la dueña de la decisión de la política, que la empresa sea la dueña de la decisión de la política y que Microsoft también sea la dueña de la decisión de la política», dijo Pulapaka. «Creo que es demasiado pronto para que podamos decir qué encenderíamos o apagaríamos o forzaríamos de manera predeterminada, porque todavía no tenemos el components».

Pulapaka espera que los problemas de compatibilidad con CET sean raros, pero dado el tamaño del ecosistema de Home windows, algunas aplicaciones pueden tener problemas. Es muy probable que sean herramientas sofisticadas como depuradores, herramientas de generación de código JIT, DRM, ofuscadores de código o motores anti-trampas para juegos, que se basan en código de ensamblaje de bajo nivel.

«Si tienen algún código extraño que intente meterse con los punteros de la pila, podrían tropezarse. Es por eso que queremos comenzar con este enfoque más conservador y ver cómo funciona el noventa y nueve por ciento del mundo del software package probablemente no deben preocuparse si sus aplicaciones necesitan algunas pruebas especiales adicionales con CET «.

Cuando los desarrolladores y las empresas tienen el components adecuado para probar y desean adoptar CET, pueden configurar el archivo enlazador en Visual Studio y usar la misma herramienta de análisis binario que Microsoft united states of america para escanear cada compilación de Windows para asegurarse de que el indicador CET esté establecido en todo el código.

Proteger el flujo de código en el hardware es la mejor opción para la seguridad, y debería ser mejor para el rendimiento que agregar controles en Home windows. Hasta que Tiger Lake esté disponible, es imposible dar cifras reales, pero «sin duda será mucho mejor que hacerlo en computer software porque, por definición, hacerlo en hardware es mucho más rápido», dijo Pulapaka a TechRepublic.

Eso es importante porque la pila de sombra es una protección importante que hemos estado esperando durante varios años para completar la lista de las cuatro protecciones de código de Microsoft.

«Estas cosas solo son verdaderamente efectivas cuando se combinan», señaló Weston, «pero cuando se combinan esas protecciones, atenuamos la mayoría de las técnicas en la naturaleza que vemos hoy. Cuando se trata del paisaje x86, nosotros creo que CET es posiblemente la mitigación más importante que se ha puesto en línea para la corrupción de memoria y las vulnerabilidades de día cero, en los últimos años «.

Como siempre, mejorar la protección en un área empuja a los atacantes a cambiar de técnica, pero este sigue siendo un gran paso adelante.

«La corrupción de datos está emergiendo como el camino futuro para los atacantes: sabemos internamente que se puede escribir un exploit que pase por alto a estos cuatro guardias con corrupción de datos pura», dijo Weston. «Eso no significa que el CET no sea increíblemente valioso, porque es un poco como una cirugía a corazón abierto y va a ser realmente perjudicial para los atacantes, pero ya nos estamos moviendo hacia un mundo posterior a cuatro guardias en el que hemos comenzado a pensar en el próximo conjunto de desafíos en torno a la corrupción de datos «.

Recursos adicionales



Enlace a la noticia unique