23 abril 2012


En el post Seguridad en componentes cliente de aplicaciones web basadas en DNIe: Parte 1/3 hicimos un repaso a los tipos más importantes de componentes para el navegador, ActiveX y Applets Java, así como diferentes herramientas que podríamos utilizar para su análisis exhaustivo. Pero, ¿qué tipo de vulnerabilidades nos podríamos encontrar en estas piezas de software que se ejecutan sobre el navegador del usuario?



Vulnerabilidades en componentes

A lo largo de los años, se han visto diferentes vulnerabilidades que pueden afectar a componentes ActiveX. Los tipos de vulnerabilidades son los que podrían afectar a cualquier otro tipo de software:
  • Ejecución de comandos y código
  • Desbordamientos de búfer, desbordamientos de pila, de heap...
  • Lectura, escritura, sobrescritura y eliminación de ficheros
  • Denegación de servicio
  • Evasión de restricciones
  • Acceso a información sensible
  • ...
Tomando como fuente la lista de la Common Vulnerabilities and Exposed (identificadores CVE) de la entidad Mitre, en la que se recopilan la amplia mayoría de las vulnerabilidades existentes, realizamos la búsqueda de vulnerabilidades que afectan a componentes ActiveX:

Búsqueda de vulnerabilidades de ActiveX con código CVE asignado
Se obtienen unas 854 entradas CVE, casi un 2% del total de vulnerabilidades registradas desde 1999. Cogemos el total, y vamos a clasificarlas según la vulnerabilidad que suponen, obteniendo los siguientes datos:

  • Buffer Overflows - 46.02%
  • Gestión de ficheros - 17.45%
  • Ejecución de código - 15.22%
  • Denegación de servicio - 9.84%
  • Ejecución de comandos - 5.74%
  • Descarga remota - 2.34%
  • Acceso a información sensible - 0.94%
  • Evasión de restricciones - 0.94%
  • Acceso a registro - 0.70%
  • Instalación arbitraria - 0.23%
  • Vulnerabilidad desconocida - 1.17%




Tras estas estadísticas, vamos a centrarnos en las vulnerabilidades del segundo puesto del ranking: las referentes a gestión de ficheros. Dentro de este grupo nos encontramos vulnerabilidades en componentes ActiveX las cuales al ser explotadas, permiten la lectura, sobrescritura, creación y eliminación de ficheros. 

Para el caso de la lectura, escritura y eliminación, como es obvio, es necesario conocer la ruta exacta del fichero en el equipo local del usuario en cuyo navegador se ejecuta el componente, pero como todos sabemos, existen multitud de ficheros en Windows de los que conocemos su ruta completa. Además, recordemos que estos componentes suelen requerir privilegios elevados para ser ejecutados, por lo que si no se establecen unos limites acotados, podremos acceder y modificar cualquier fichero del sistema:

  • %WINDIR%\System32\drivers\etc\hosts -> Fichero hosts de Windows
  • %USERPROFILE%\ntuser.dat -> Con información del usuario
  • %WINDIR%\system32\config\AppEvent.Evt -> registro de eventos de Aplicación
  • %WINDIR%\system32\config\SecEvent.Evt -> registro de eventos de Seguridad
  • %WINDIR%\repair\sam -> Almacena hashes de contraseñas de usuarios
  • %SYSTEMDRIVE%\boot.ini -> información del proceso de inicio de Windows
  • ...

Veamos algunos ejemplos de vulnerabilidades en componentes, que permitan aprovechar alguna funcionalidad para la gestión posterior de ficheros en un equipo víctima dónde se esté ejecutando:

ADOBE CVE-2005-0035


Vulnerabilidad del componente web de Adobe Acrobat que permitía determinar la existencia de ficheros en el sistema aprovechando una de las funciones, únicamente conociendo su ruta exacta.

ORACLE CVE-2010-3595




Vulnerabilidad del componente Oracle Document Capture de Oracle que permitía leer ficheros sabiendo su ruta completa.

IBM CVE-2004-2663




Vulnerabilidad del control ActiveX Access Support eGatherer de IBM con la que era posible la creación de ficheros con contenido arbitrario.

ChillKat CVE-2008-5002



Método inseguro en el control ChillKatCrypt2 del ActiveX Chillkat Crypt que permite la creación y sobrescritura de ficheros.

SonicWall CVE-2007-5815


En el componente WebCacheCleaner de la VPN-SSL de SonicWall existía una función que permitía la eliminación de ficheros conociendo su ruta completa.

En la siguiente y última parte de este post, entraremos de lleno en el análisis de los componentes utilizados por aplicaciones web basadas en DNIe y certificados digitales, una vez ya tenemos las herramientas suficientes para su revisión y conocemos otros tipos de vulnerabilidades que pueden darse en controles ActiveX, además de echar un vistazo a problemas similares pero para Applets Java.