sábado, septiembre 27, 2008

Google Chrome: Seguridad

Leyendo un artículo sobre ingeniería inversa y Google, Chrome antics: did Google reverse-engineer Windows?, donde se describe cual es la arquitectura de ejecución de Google Chrome, el navegador que ha publicado la empresa americana.

Los navegadores actuales, suelen tener una arquitectura monoproceso, dentro del cual se controla la interfaz gráfica, las conexiones a Internet, el renderizado HTML o la ejecución de plugins. Google lo que ha hecho ha sido separar cada una de las tareas, encapsulándolas en un proceso propio (aunque el primer navegador que ha implementado esta arquitectura es la beta del Internet Explorer 8 y la Data Execution Prevention, es decir, la posibilidad de los procesadores Intel actuales de permitir memoria de lectura y no de ejecución.

Esta separación de procesos afecta a la interfaz gráfica, cada una de las pestañas o ventanas de navegación que se tengan y a la ejecución de plugins. Si se observa los procesos en ejecución con un programa como Proccess Explorer. Si nos vamos a la documentación de la versión de fuentes abiertas en las que está basado el navegador, Design Documents, podemos ver en la sección arquitectura el modelo de procesos y comunicación entre procesos que utiliza.

El navegador tiene dos tipos de procesos totalmente diferenciados: un tipo encargado de interaccionar con el sistema operativo y otros que son los encargados de renderizar las páginas, de tal manera que se ejecutan en un entorno de ejecución restringido, lo que Google denomina sandbox. Los componentes que se ejecutan dentro de los procesos de renderizado son el análisis e interpretación de HTML, el javascript y el DOM. mientras que la parte que interacciona con el sistema operativo se encarga de comunicaciones, cookies y el manejo de datos sensible.

El problema que se encuentra Google a la hora de intentar aislar los plugins que ejecutan, es que están pensados para una arquitectura de navegador tradicional, es decir, esperan que sólo exista ejecutándose una instancia del mismo para todo el proceso del navegador. Aunque Chrome ejecuta el mismo bajo un proceso independiente, éste tiene todos los privilegios del usuario y no existen restricciones sobre los mismos, para poder mantener la compatibilidad.

Un detalle importante es que toda esta arquitectura de seguridad, a día de hoy, está basada en mecanismos del sistema operativo Windows. Más concretamente, los procesos de renderizado, que se ejecutan con permisos restringidos, utilizan los tokens restringidos, los objetos jobs de Windows, el objeto desktop de WIndows y en el caso de Windows Vista, los niveles de integridad.

Por cierto, este tipo de arquitectura no es nueva. Se ha usado antes por ejemplo en qmail.

Referencias

No hay comentarios: