Cómo un error en el controlador de gráficos en el Samsung Galaxy S6 filtró datos de la pestaña de Google Chrome

click fraud protection

¿Alguna vez se preguntó cómo se encuentran las vulnerabilidades de seguridad? La empresa GraphicsFuzz, con sede en el Reino Unido, explica cómo encontraron un error en el controlador de gráficos en el Samsung Galaxy S6 que pudieron aprovechar para ver datos de pestañas abiertas en Google Chrome.

A finales de marzo, una nueva empresa con sede en el Reino Unido que se especializa en probar la confiabilidad de GPU se acercó a nosotros con una Error de GPU que descubrieron eso causa el Qualcomm Snapdragon 845samsung galaxy s9/S9+ para reiniciar al visitar una página web. La firma, llamada GráficosFuzz, trabajó con nosotros para informar el problema a Qualcomm y Samsung. Algunos de nuestros lectores estaban interesados ​​en saber cómo una empresa como GráficosFuzz es capaz de encontrar estas vulnerabilidades, por lo que colaboramos con la empresa para mostrar cómo descubrieron una vulnerabilidad de GPU más antigua. Esta vulnerabilidad ya parcheada permitió a un atacante "espiar" remotamente el contenido de Google Chrome pestañas del navegador en el samsung galaxy s6.

Este usuario estaba viendo el sitio web de su banco antes de visitar la página web maliciosa. Los contenidos fueron capturados y subidos a un servidor remoto. Fuente: GráficosFuzz.

Cómo GraphicsFuzz encuentra errores en la GPU

Un controlador de gráficos funciona tomando un programa de sombreado y enviándolo a la GPU para que lo ejecute y así renderice la imagen. Antes de enviar el sombreador a la GPU, el controlador de gráficos lo traduce a un formato que la GPU pueda entender; una traducción defectuosa puede provocar fallas en la representación, fallas del programa o dispositivo, imágenes incorrectas e incluso problemas de seguridad. GráficosFuzz tiene un conjunto de pruebas automatizadas que les permite encontrar estos errores basándose en un conjunto de sombreadores de referencia. Cuando un usuario ejecuta su prueba, se supone que todas las imágenes resultantes tendrán el mismo aspecto. Cualquier imagen que se vea diferente significa que hubo un error.

Resultados de varios dispositivos populares que ejecutan el conjunto de pruebas GraphicsFuzz. El Samsung Galaxy S6, Samsung Galaxy S7 y Samsung Galaxy S8 están incluidos en estos gráficos. Fuente: GráficosFuzz.

Para el Samsung Galaxy S6, GráficosFuzz descubrió que las imágenes en una de las filas mostraban imágenes que se suponía que debían estar en otra tabla. Esto significa que imágenes de pruebas anteriores se filtraron a pruebas posteriores. Luego, el equipo volvió a ejecutar el conjunto de pruebas en Google Chrome y descubrió que en la imagen aparecían partes de la página web. Además, descubrieron que abrir otra pestaña hacía que la imagen mostrara partes de otras pestañas. Básicamente, este error permitió que una pestaña de Google Chrome filtrara información sobre otra pestaña de Chrome. El equipo detrás GráficosFuzz No buscaba intencionalmente errores de seguridad, pero terminaron encontrando uno como resultado de sus pruebas. (Cabe señalar que el equipo reprodujo el error en el navegador estándar de Samsung en el Galaxy S6, así como en Mozilla Firefox.)

Cómo funciona el error

Imagen utilizada para activar el error de larga duración en el Samsung Galaxy S6. Fuente: GráficosFuzz.

La página web "maliciosa" creada por GráficosFuzz usa WebGL para intentar dibujar una escena espacial dentro de un lienzo como se muestra arriba. El color de cada píxel está determinado por un sombreador de fragmentos, un programa proporcionado por la página web para ejecutarse en la GPU. El GráficosFuzz framework modificó el sombreador de fragmentos, lo que provocó que se ejecutara durante mucho tiempo. Cuando un sombreador se ejecuta durante demasiado tiempo, el navegador o el sistema operativo normalmente cancela el procesamiento. Sin embargo, aunque la GPU canceló el procesamiento después de dibujar algunos píxeles, el controlador de la GPU no informó esto a Google Chrome. (Si echas un vistazo a la imagen en la parte superior del artículo que muestra la memoria de video basura, en realidad puedes ver partes de la escena espacial en la parte superior). izquierda.) Esto significa que los píxeles que se renderizaron antes de la cancelación no se modifican, lo que significa que la imagen final renderizada es en su mayor parte video basura. memoria. Dado que la memoria de vídeo se utiliza continuamente para representar otras páginas web, los datos "basura" en realidad contienen representaciones anteriores de otras páginas web. De este modo, otras páginas web acaban mostrándose en la página web "maliciosa". Fundamentalmente, WebGL permite que la página web capture el contenido de lo que se esté representando; Esta imagen luego se carga en un servidor remoto.

Diagrama que explica el error de larga duración de la GPU que provoca que los datos de la pestaña de Chrome se "filtren". Fuente: GráficosFuzz.

Google Chrome utiliza múltiples procesos, por lo que a menudo se aíslan diferentes pestañas, lo que hace que este exploit parezca imposible en la superficie. Sin embargo, Chrome interactúa con la GPU mediante un único "proceso de GPU", lo que significa que todas las pestañas comparten la misma memoria de GPU, lo que permite que este exploit funcione. El diagrama de arriba muestra esto con más detalle.

El error se demuestra en este vídeo durante los primeros 22 segundos. También se demuestran otros problemas de seguridad encontrados por GraphicsFuzz.

Lecciones que aprender

Una GPU que se comporta mal puede eludir todas las medidas de seguridad de Google Chrome y Android, ya que WebGL permite que cualquier página web maliciosa envíe código a la GPU para su ejecución. Google no puede corregir errores de GPU ya que la empresa no controla el hardware ni los controladores. En este caso, depende del proveedor de GPU (en este caso, ARM) corregir el error y del OEM cuyos dispositivos se ven afectados (en este caso, Samsung) integrar la solución en una actualización. Agregue operadores a la mezcla y es fácil ver cómo un error como este puede tomar mucho tiempo para solucionarse: tomó al menos 5 meses para que la mayoría de los usuarios de Samsung Galaxy S6 reciban el parche.

GráficosFuzz ayuda a los proveedores de GPU a encontrar errores difíciles de detectar, como errores de compilación incorrecta que provocan que se genere y ejecute código incorrecto en la GPU. Su marco de prueba automatizado les permite encontrar errores como el que se muestra en este artículo. También se ha demostrado que el bucle de larga duración causado por la página web "maliciosa" causa problemas en otros dispositivos, como el HTC One M7 y más recientemente el samsung galaxy s9. GráficosFuzz prueba teléfonos inteligentes emblemáticos y publica un tabla de resultados que clasifica estos dispositivos en función de su rendimiento en un subconjunto de sus pruebas. Cientos de fallos y errores de renderizado Se han encontrado durante sus pruebas, pero la mayoría no se investiga para ver si representan una amenaza a la seguridad. Sin embargo, como lo muestra este exploit, una GPU que se comporta mal es un riesgo para la seguridad y es posible que haya una o más vulnerabilidades de seguridad críticas esperando a ser descubiertas. GráficosFuzz Espera que los proveedores de GPU den prioridad a mejorar la calidad del controlador en el futuro.

Fiabilidad comparativa de los controladores de gráficos, ordenados por el número total de problemas. Fuente: GráficosFuzz.

Cronograma de divulgación

  • En diciembre de 2016, GráficosFuzz reportó el error al Rastreador de errores de Google Chromium porque era elegible para el Programa de recompensas de Chrome. Después de que GraphicsFuzz envió el error al rastreador de errores de Google Chromium, Google aceptó el error y lo envió a ARM y Samsung para su parcheo.
  • Google envió el informe a contactos en ARM y Samsung.
  • Samsung solucionó silenciosamente el error e implementó la solución en la actualización de Android 7.0 Nougat que se lanzó entre marzo y junio de 2017. Aunque no hubo ningún CVE creado por Samsung, Google o ARM y ni Samsung ni ARM publicaron ninguna información sobre el parche, tenga en cuenta que GráficosFuzz no informó el error a través del proceso adecuado.
  • Más tarde, GráficosFuzz pudo confirmar que tanto Samsung como ARM habían visto el informe y que ARM pudo solucionar el problema debido al informe.
  • En agosto de 2017, GráficosFuzz Google le recompensó con 2.000 dólares por el informe de error.
  • En noviembre de 2017, el informe de error se hizo público.