Icono del sitio Una al Día

Mitos y leyendas: Seguridad en ActiveX II (Protección)

Dados los numerosos problemas que puede presentar una tecnología como ActiveX y los riesgos que conlleva, en Microsoft se han implementado numerosas contramedidas para intentar controlarlos en lo posible. Como suele ocurrir, muchas de estas medidas no se conocen, no se entienden, o son consideradas un estorbo para la usabilidad, con lo que la mayoría quedan ignoradas por los usuarios finales.

En la primera parte de este artículo enumerábamos los riesgos de ActiveX, vamos a ver qué tecnologías se han desarrollado para evitarlos.

* Authenticode: Esta es la tecnología que creó Microsoft para que el navegador reconociera la firma de un archivo. Los ficheros pueden estar firmados digitalmente con la clave privada del fabricante o programador (Microsoft los llama «editores» en Windows). De esta forma, gracias a la criptografía asimétrica, podemos saber que el código viene de quien dice venir, y que no ha sido alterado por nadie sin su permiso. Este tipo de avisos los muestra Internet Explorer antes de ejecutar un ActiveX. Nos advierte básicamente de que el ActiveX está firmado por el fabricante de turno, y pregunta qué queremos hacer. Si no confiamos en el editor, podemos comprobar el certificado. Esto, lamentablemente, sólo nos garantiza la procedencia y la integridad del archivo pero en ningún caso nos protege de sus intenciones.

Aunque un ActiveX creado por una empresa cualquiera esté perfectamente firmado, su finalidad puede ser destruir o instalar cualquier cosa. Tampoco lo libera de que tenga vulnerabilidades. Pero Authenticode nos avisará de qué efectivamente, independientemente de sus intenciones o defectos de programación, está firmado por esa empresa. Un administrador bien informado sólo permitirá la ejecución en un sistema de los ActiveX firmados por los «editores de confianza» que es la terminología de Windows para estos casos. Esto también pasa con los applets, que pueden estar firmados. Internet Explorer bloquea por defecto los ActiveX no firmados.

* Safe-for-Scripting: Los creadores (editores) de ActiveX pueden indicar a su ActiveX si es «seguro para scripting». Al contener potencialmente métodos que pueden causar daño, Microsoft da la posibilidad a los propios programadores de marcarlos como potencialmente peligrosos o no. Si están marcados como tal, no podrán ser invocados de forma automática (a través de scripts) por Internet Explorer de forma predeterminada.

Microsoft aconseja que los ActiveX que (a través de sus métodos) accedan a información local, ejecuten programas, obtengan información… etc, no deben ser marcados con esta característica. Pero los creadores de ActiveX ignoran esto deliberadamente. No quieren que sus programas sean bloqueados de ninguna forma, incluso si potencialmente pueden causar algún daño. O quizás están diseñados específicamente para ser usados a través del navegador y esto se lo impediría. Es una medida que confía en la buena voluntad del propio programador y por tanto, aunque con la mejor intención, no resulta muy efectiva en la práctica.

* Zonas de Internet Explorer: Internet Explorer permite clasificar las páginas (los dominios) en distintas zonas. Las zonas son una clasificación lógica que hace el navegador de las distintas páginas que se visitan, de forma que a cada zona se le permiten ciertas licencias sobre el sistema, o ejecución de cierto tipo de código del lado del cliente según la zona donde quede adjudicado cada dominio. Esto permite clasificar de forma eficiente las zonas confiables o peligrosas y ejercer cierto control sobre el sistema según los escenarios a los que nos enfrentemos.

Las zonas son «Internet», «Internet Local», «Sitios de Confianza» y «Sitios Restringidos». Podemos, por ejemplo, prohibir que todo excepto nuestras páginas habituales ejecuten ActiveX, JavaScript y otras muchas opciones. No es una tecnología muy conocida (aunque está ahí desde la versión 4 del navegador), pero bien utilizada, puede proteger de forma muy efectiva el navegador de Microsoft. Internet Explorer es el único navegador que divide en zonas de seguridad, y de una forma bastante eficaz.

Por ejemplo, la zona de «Internet» representa todo el resto de lugares en los que no encajan las otras zonas y en los que, por tanto, no se debe confiar. Todas las direcciones o dominios que se introduzcan en el navegador y que contienen un punto, por defecto, pertenecen a esta zona a no ser que se especifique lo contrario. Cada zona está caracterizada por un «nivel de seguridad» en el que podemos definir muchas opciones. El problema es que este «nivel de seguridad» para la zona «mayoritaria», que es la llamada «Internet» es muy relajado por defecto. Las posibles combinaciones con las zonas de Internet Explorer y sus niveles de seguridad son muy prácticas y potentes. Por alguna razón, no son muy usadas.

* Kill bit: Esta es una de las funcionalidades más efectivas. Fue introducida por Microsoft para evitar la ejecución de los ActiveX desde Internet Explorer de forma definitiva. Como hemos dicho, los editores pueden activar la opción «safe for scripting» aunque realmente el control no sea seguro para ser llamado por el navegador. Incluso, aunque no estuviese marcado (o sea, el ActiveX se considerase inseguro), Internet Explorer preguntaría al usuario sobre si desea ejecutar ese ActiveX que es potencialmente peligroso. Por tanto cabe la posibilidad de que se ejecute. Así que Microsoft introdujo el kill bit, un bit que una vez activo en el registro, impide completamente que el ActiveX sea invocado a través de Internet Explorer, sin deshabilitarlo por completo.

La mayoría de las contramedidas de seguridad cuando se encuentra una vulnerabilidad en un ActiveX recomienda activar el kill bit del control (caracterizado por un CLSID). Así, al menos hasta que se actualice el control, un atacante no podría llamar a los métodos vulnerables a través del navegador, evitando así la ejecución remota de código. Activar el kill bit es una operación muy sencilla que conlleva una modificación del registro.

* JavaScript: Deshabilitar la ejecución de JavaScript puede impedir la ejecución de buena parte de los ActiveX que son llamados por el navegador de esta manera. Esto también se puede conseguir a través de la zonas del navegador, de forma mucho más granular.

* ActiveX Opt-In deshabilita automáticamente la mayoría de los controles ActiveX. Esta característica fue introducida en Internet Explorer 7. El navegador solicita a los usuarios confirmación (a través de la barra de información) antes de acceder a un control ActiveX instalado previamente pero que todavía no se ha utilizado. Entra dentro de la política de «deshabilitar por defecto» que está adoptando Microsoft lentamente desde hace algunos años.

* Internet Explorer 8: Parece que este navegador introducirá importantes cambios con respecto a la seguridad ActiveX. Al parecer cada control instalado se ejecutará en el ámbito del usuario que lo ha instalado (ya no se necesitarán permisos de administrador para hacerlo) con lo que el impacto de un ActiveX vulnerable será menor. También se va a restringir la llamada a métodos de un ActiveX a dominios concretos. De esta forma se evita que cualquier página pueda llamar a un ActiveX vulnerable y explotarlo, con lo que el riesgo también se limita considerablemente. Este último cambio puede resultar especialmente interesante, puesto que los desarrolladores de un ActiveX limitarían su invocación a través del navegador a los dominios bajo los que tiene sentido ejecutar ese ActiveX y que se suponen de confianza.

Una buena combinación de todos estos métodos a nuestro alcance (los que hay y los que están por venir) junto con los hábitos normales de navegación segura, pueden permitir la perfecta convivencia de los ActiveX en un entorno razonablemente seguro.

Sergio de los Santos
ssantos@hispasec.com

Más información:

IE8 Security Part II: ActiveX Improvements
http://blogs.msdn.com/ie/archive/2008/05/07/ie8-security-part-ii-activex-improvements.aspx

15/05/2008 Mitos y leyendas: Seguridad en ActiveX I (Introducción)
http://www.hispasec.com/unaaldia/3491/mitos-leyendas-seguridad-activex-introduccion

Acerca de Hispasec

Hispasec Ha escrito 7038 publicaciones.

Salir de la versión móvil