WebGL trae grandes vulnerabilidades de regalo

WebGL trae grandes vulnerabilidades de regalo

por

Puede ejecutar lo que quiera en el GPU

La firma de seguridad Context publicó un paper mostrando una prueba de concepto mediante la cual pudieron aprovechar ciertas vulnerabilidades en la definición de WebGL, el API mediante el cual se puede usar HTML5 -concretamente el objeto canvas- para renderizar gráficos 3D dentro del navegador.

Este API es soportado por defecto En Firefox 4 y Chrome 9. Safari 5 y Opera 11 lo soportan pero hay que activarlo a mano y finalmente Internet Explorer despliega un cartel que dice “siga participando”. En este caso, gracias a estar algo atrasado respecto de sus pares, podría decirse que Explorer es el browser más seguro. Por si acaso, no basta con tener uno de estos browsers andando sino que hace falta tener una VGA compatible con OpenGL ES 2.0.

¿En qué consiste la vulnerabilidad? Básicamente, al renderizar gráficos mediante WebGL, el browser accesa directamente el GPU de la tarjeta de video. Estos gráficos no vienen en lenguaje máquina propiamente tal, sino que son precompilados por el controlador de la tarjeta de video. Ahora bien: antes de compilar, es imposible saber en qué consiste la secuencia de instrucciones. Después de compilar, no hay una instancia de verificación que compruebe código malicioso, sino que se manda al GPU lo que se ha compilado para que éste lo ejecute. Por su construcción misma no existe tal cosa como un antivirus que compruebe si lo que sale del driver es código malicioso antes de ejecutarlo en el GPU de la tarjeta de video.

En la prueba de concepto, Context logró colgar equipos corriendo diversos browsers y sistemas operativos. En algunos casos, como Windows 7, cuesta un poco más porque el controlador de la tarjeta de video se reinicia al colgarse. Sin embargo al insistir con el ataque se logra una Blue Screen of Death en el equipo. El salto no es muy grande entre colgar el equipo por saturación de la tarjeta de video, y la ejecución de código que permita apropiarse de información privada, y plantea a los creadores de código malicioso el desafío adicional de programar para GPU.

Como nota al margen, me costó mucho entender el paper porque la dichosa firma de seguridad se llama Context, pero el objeto canvas también tiene una propiedad context (la más típica es el contexto “2d”) por lo que hasta el final no sabía si hablaban de uno u otro.

Link:
WebGL as a security problem (h-online)
WebGL – A New Dimension for Browser Exploitation (Context)