miércoles, 21 de febrero de 2007

¿Se puede confiar en el UAC de Windows Vista?

Ollie Whitehouse de Symantec ha descubierto una forma de burlar el código de colores que utiliza UAC (User Account Control) de Windows Vista. Esta nueva funcionalidad en Vista, destinada a reforzar el control de los privilegios de los usuarios y por tanto las aplicaciones que ejecutan, ha sido duramente criticada en las últimas semanas.

El sistema de ventanas de aviso que utiliza UAC está basado en la toma de decisiones según la firma del ejecutable, reforzada con un código de colores. Si Vista pide permiso para ejecutar en modo privilegiado una aplicación cuyo firmante está bloqueado, aparecerá un aviso en color rojo alertando sobre la potencial peligrosidad de la ejecución. Si la aplicación está firmada por Microsoft, el aviso aparece en un tono verde. Si es de terceros en un tono gris neutro y si la aplicación no está firmada por nadie aparece en un amarillo chillón. Esto, visualmente, ayuda al usuario a identificar de forma rápida la firma de una aplicación que pretende elevar privilegios y supone una cierta garantía de que la aplicación ha pasado unos mínimos controles (la firma no indica nada sobre su actividad pero sí sobre su integridad y autoría). En definitiva, el usuario podrá decidir mejor quién quiere elevar privilegios en Vista.

Lo que ha descubierto Ollie Whitehouse es que ayudándose del ejecutable RunLegacyCPLElevated.exe (y posiblemente otros en Windows Vista) se podría hacer aparecer una alerta "verde" ante cualquier programa, lo que indicaría visualmente (y de forma errónea) al usuario que lo que pretende elevar privilegios está firmado por Microsoft.

RunLegacyCPLElevated.exe tiene la función de proporcionar compatibilidad hacia atrás para los antiguos plug-in de Windows Control Panel (archivos CPL) para que funcionen con privilegios de administrador. Este programa admite una librería (DLL) arbitraria como parámetro. Según Whitehouse, el siguiente escenario es posible:

* Un usuario sin privilegios se infecta por código dañino que es ejecutado también sin privilegios.

* Este código descarga un fichero CPL especialmente manipulado en cualquier parte del disco donde este usuario pueda escribir.

* El código llama a RunLegacyCPLElevated.exe con el archivo CPL especialmente manipulado como parámetro.

* Se le presenta al usuario la advertencia (verde) de que intenta ejecutar código firmado por Microsoft. Lo admite y el código dañino obtiene privilegios de administrador.

La confusión se basa en que mientras que RunLegacyCPLElevated.exe sí que es una aplicación firmada por Microsoft, la librería que carga y ejecuta por parámetros puede no estar firmada e incluso localizarse en un lugar no confiable del sistema operativo. Con esta "técnica" también se puede burlar la directiva "User Account Control: Sólo elevar privilegios de ejecutables que estén firmados y validados".

La respuesta a esto por parte de Microsoft ha sido que según sus "Security Best Practice Guidance for Consumers", es necesario recordar que los cuadros de diálogo UAC no suponen una frontera de seguridad, no ofrecen seguridad directa, sino que dan la oportunidad de verificar una acción en el sistema antes de que ocurra.

Whitehouse advierte que si la información presentada por la UAC no es de fiar, se presenta un verdadero dilema. Según él, Microsoft habla de UAC y "confianza" y también de tomar decisiones por parte del usuario antes de que sea tarde, lo que se convierte en el problema del huevo y la gallina. Confiar en la información de la UAC para tomar una decisión o tomar una decisión basada en una falsa sensación de "confianza" ante una advertencia de UAC.

Aunque para Microsoft no suponga una "vulnerabilidad" en sí misma, esta técnica descrita por Whitehouse será quizás una de las primeras "fórmulas" que aparecerán para burlar los nuevos sistemas de seguridad y prevención introducidos en Windows Vista, que si bien mejoran la seguridad, suponen quizás un todavía tímido acercamiento a un serio problema.

Windows es víctima una vez más de su antigua filosofía. Hasta 2001 con XP no implementó un sistema multiusuario real en su sistema operativo de sobremesa. Aun así, esta propiedad fue tristemente desaprovechada, incentivando siempre para las tareas cotidianas "la cultura del administrador por defecto" (por parte de los programadores y del propio sistema al incluir la cuenta inicial en el grupo de administradores). Esta "cultura" que no se preocupa por los permisos en la máquina ha calado demasiado hondo en usuarios Windows, y superar ahora ese "obstáculo" no va a ser fácil ni para sus clientes ni para la propia Microsoft. Mucho menos con tácticas que inducen a confusión de por medio.


Sergio de los Santos
ssantos@hispasec.com


Más información:

An Example of Why UAC Prompts in Vista Can’t Always Be Trusted
http://www.symantec.com/enterprise/security_response/weblog/2007/02/an_example_of_why_uac_prompts.html

Understanding and Configuring User Account Control in Windows Vista
http://technet2.microsoft.com/WindowsVista/en/library/00d04415-2b2f-422c-b70e-b18ff918c2811033.mspx