Presagio: ¿un presagio de problemas?


El año 2018 actual es interesante porque casi todos los meses hay información sobre nuevas vulnerabilidades de hardware: Spectre y Meltdown .


Más recientemente, ¡hace un par de semanas! - Se publicaron noticias de alto perfil sobre las vulnerabilidades Foreshadow y L1Terminal Fault , que, según se informa, omiten incluso el mecanismo SGX (Sofware Guard Extensions) , que anteriormente se consideraba casi irrompible.


¿Qué tan peligrosas son estas vulnerabilidades? ¿Es posible defenderse de ellos y, de ser así, cómo? Hablaremos de todo esto a continuación.


Referencia rápida


Foreshadow, o L1TF, es un grupo completo de vulnerabilidades que incluye:


  • CVE-2018-3615 - para evitar SGX;
  • CVE-2018-3620 - para atacar el kernel del sistema operativo, así como SMM (Modo de administración del sistema);
  • CVE-2018-3646: para atacar máquinas virtuales.

Los autores de muchas publicaciones están particularmente preocupados por la posibilidad de eludir la protección SGX: Specter y Metldown no sabían cómo hacer esto, y esto hace que cualquier información confidencial quede indefensa. Para comprender cómo se justifica esta alarma, analicemos los principios de funcionamiento del mecanismo SGX.


¿Qué es SGX y cómo puedo evitarlo?


La abreviatura SGX significa Software Guard Extensions. Este es el nombre del conjunto de instrucciones para los procesadores Intel utilizados para resaltar áreas privadas de código y datos. En 2015, uno de los creadores de SGX, Matthew Hoykstra (Matthew Hoeskstra) publicó un artículo (ver también traducción al ruso ), en el que identificó los siguientes objetivos para crear esta tecnología:


  • brinde a los desarrolladores de aplicaciones la capacidad de proteger datos críticos contra el acceso no autorizado o los cambios mediante software malicioso que se ejecuta con mayores privilegios;
  • permitir que las aplicaciones aseguren la integridad y confidencialidad de los datos y códigos confidenciales sin interferir con el funcionamiento del sistema de privilegios y sin interferir con su planificación y control de los recursos de la plataforma;
  • hacer que la plataforma mida el código confiable y use la aplicación para producir un certificado firmado y otros certificados que confirmen que el código se inicializó correctamente en un entorno confiable;
  • dar a los usuarios la capacidad de controlar aplicaciones, sin limitar la libertad de instalar y eliminar aplicaciones y servicios;
  • Permita que los desarrolladores creen aplicaciones confiables utilizando herramientas y procesos conocidos por ellos.
  • Proporcionar mayor productividad para aplicaciones confiables
  • permita que las aplicaciones determinen áreas confiables de código y datos incluso en el caso de que un atacante controle físicamente la plataforma y pueda llevar a cabo ataques directos en la memoria (consulte un ejemplo aquí ).

El artículo citado tiene mucho más marketing que detalles técnicos. Esboza en general QUÉ le permite hacer la tecnología SGX, pero no se sabe cómo se hace. Describiremos esto en detalle a continuación. En nuestra presentación, nos basaremos principalmente en un artículo detallado publicado por la Asociación Internacional para la Investigación de Criptología (IACR, Asociación Internacional para la Investigación Criptológica).


SGX crea en la memoria una región protegida: PRM (memoria reservada del procesador) , que también se denomina enclave. El procesador protege el enclave de cualquier intento de acceso, incluidos los del kernel, el hipervisor y SMM (Modo de administración del sistema), así como de los intentos de acceso desde dispositivos periféricos.


PRM tiene un caché especial, el llamado EPC (Enclave Page Cache) , que consta de cuatro páginas de kilobytes que almacenan el código del enclave y los datos. Cuando se llama a una función confiable, la aplicación "ve" solo los datos del enclave; Cualquier acceso externo, incluso desde el sistema operativo, está prohibido.


Con cualquier intento de acceder al enclave, se produce el llamado procedimiento de certificación. El enclave solicita un informe firmado por hardware, que incluye información sobre su valor. Este informe se envía al servidor de certificación. La parte pública de la clave de la aplicación se envía al enclave; entonces se genera una clave privada, dependiendo del enclave y la plataforma. La clave se cifra con una clave de firma y se almacena para uso futuro.


Como se señaló en las publicaciones oficiales de Intel, SGX puede proteger contra todo tipo de ataques a datos y código: tanto desde el sistema y el software del usuario, como desde el gestor de arranque. Pero SGX no puede proteger contra los llamados ataques de canal lateral. SGX no puede sortear el notorio Spectre y Meltdown.


Sin embargo, recientemente ha habido ataques (de hecho, incluso antes de Foreshadow, vea, por ejemplo, aquí ) que le permiten evitar la protección SGX. Además, Foreshadow es el más ruidoso y sensacional de ellos.


La documentación de SGX señaló que "es imposible leer en enclaves y no se puede escribir nada en ellos, independientemente de la existencia de privilegios de cualquier nivel". Sin embargo, en realidad, esto está lejos de ser el caso.


En la primavera de este año, apareció información sobre un ataque llamado SGX Spectre, con el que puede extraer datos de enclaves. Como los investigadores de la Universidad Estatal de Ohio han demostrado (ver, por ejemplo, aquí ), esto es posible gracias a los "agujeros" en el SDK, con los cuales los desarrolladores pueden integrar el soporte SGX en sus aplicaciones. Entre los SDK afectados se encontraban Intel SGX SDK, Rust-SGX y Graphene-SGX. Un análisis detallado de este ataque se puede encontrar en este artículo ; También se publicó un video en Youtube con un buen ejemplo.



El video, por supuesto, no es convincente: el simple hecho de ingresar al enclave no significa que se puedan robar datos importantes. Sin embargo, debe tenerse en cuenta: se viola la integridad y confidencialidad del mecanismo SGX.


Prefiguración rompe el aislamiento mediante el uso de un llamado ataque de canal lateral.


Como en el famoso Specter and Meltdown, la vulnerabilidad utiliza el mecanismo de ejecución especulativa de comandos. Se basa en el siguiente punto: al acceder a la memoria en una dirección virtual que conduce a un fallo de página de terminal debido a la falta del indicador Presente en la tabla PTE (Entradas de tabla de página), los procesadores Intel calculan especulativamente la dirección física y cargan los datos si Disponible en caché L1. Los cálculos especulativos se llevan a cabo antes de verificar la disponibilidad de datos en la memoria física y antes de verificar la disponibilidad de estos datos para la lectura. Si no hay una bandera Presente en el PTE, la operación se descarta; pero los datos se "depositan" en el caché y se pueden extraer de él. Los datos se pueden extraer a absolutamente cualquier dirección física; Esto abre grandes oportunidades para los atacantes y permite, por ejemplo, extraer datos en el host de la máquina invitada. Ya han aparecido videos de demostración:



Sin embargo, el video no parece, francamente, muy convincente y se asemeja a las numerosas demostraciones de las vulnerabilidades Spectre y Meltdown que navegaron por Internet a principios de este año: parece que logramos superar la protección, pero ¿qué sigue? Por supuesto, el bypass SGX claramente no es un buen caso de uso.


¿Por qué tener miedo?


A diferencia del aclamado Spectre y Meltdown, Foreshadow solo amenaza a los procesadores Intel. En las descripciones, se observa que con la ayuda de este ataque es posible extraer no solo datos confidenciales del enclave, sino también una clave de certificación privada, que socava la confianza en todo el ecosistema SGX.


Varias variaciones de Foreshadow amenazan el llamado Modo de administración del sistema (SMM), el núcleo del sistema operativo del hipervisor. Algunos expertos señalan que con Foreshadow puede robar datos de máquinas virtuales en una nube de terceros. Hay publicaciones en las que se observa que el nuevo ataque incluso le permite omitir los parches calculados anteriormente para proteger contra los ataques de Spectre y Meltdown.


Sin embargo, al igual que con Spectre y Meltdown, todas las declaraciones de alto perfil deben tratarse con extrema precaución. Aún no se han registrado casos de robo de datos significativos y confidenciales mediante ataques sensacionales. Los prototipos publicados de exploits (como advierten sus propios autores) no son más que muestras experimentales, extraídas de la práctica real, y no siempre funcionarán para todos, especialmente cuando se trata de máquinas virtuales. Por lo tanto, es demasiado pronto para entrar en pánico: no solo para penetrar en el enclave, sino para extraer información realmente importante de él, debes intentarlo realmente.


Hasta la fecha, no ha habido ataques verdaderamente serios.


Parches y rendimiento


El tema de los parches que protegen contra vulnerabilidades de hardware (y si no protegen, nivelan sus consecuencias) también es muy relevante. Recordemos la historia reciente con Specter and Meltdown: se tomaron muchas medidas en orden de incendio, lo que no tuvo las mejores consecuencias: reinicios repentinos del sistema, una fuerte caída en el rendimiento, etc. Microsoft incluso tuvo que lanzar actualizaciones que deshabilitan los parches de Intel. En los primeros tres meses de este año, solo se presentaron 32 demandas contra Intel.


Las grandes empresas respondieron rápidamente a la publicación de información sobre la vulnerabilidad de Foreshadow: Intel , Red Hat , SUSE , VMware , Oracle hicieron declaraciones relevantes. No menos rápido se lanzaron actualizaciones para los productos de Cisco y para el kernel de Linux.


No sin incidentes: Intel lanzó rápidamente actualizaciones de microcódigo, pero sin incidentes extraños: de repente se anunció una prohibición de la publicación de los resultados de las pruebas de rendimiento antes y después de la actualización (sin embargo, la prohibición se levantó ). Lo que fue difícil de decir. Y el tema del efecto de los parches en el rendimiento, sin duda, merece un estudio separado y un artículo separado. Y es posible que publiquemos dicho artículo en un futuro próximo.


Conclusión


En este artículo, proporcionamos una breve descripción de las vulnerabilidades de la clase Foreshadow. Naturalmente, es imposible hablar sobre todos los aspectos de las vulnerabilidades del grupo Foreshadow dentro de un artículo. Por lo tanto, ofrecemos una selección de enlaces útiles para aquellos que deseen obtener más información:



Si tiene experiencia en el análisis de vulnerabilidades de hardware y sus consecuencias, bienvenido a comentar.

Source: https://habr.com/ru/post/es422137/


All Articles