Compatibilidad de aplicaciones con Windows Vista (Conceptos generales)

La inspiración viene cuando menos te lo esperas, y a veces hace falta ir a un seminario impartido por algún figura de Microsoft para que se encienda una lucecilla en la cabeza que se aferra a ella susurrando «este es un buen tema para el Blog», asi que aquí estamos, escribiendo el primer articulillo sobre compatibilidad de aplicaciones con Windows Vista, como prometí la semana pasada.


Siendo este mi primer artículo sobre el tema, es necesario hacer una pequeña reflexión… ¿Cuáles son las principales quejas relativas a Windows Vista?.


Está claro que depende de a quien se lo preguntes, los usuarios suelen decir que no encuentran las cosas, y se suelen dejar llevar por opiniones ajenas del producto ¿quién no tiene un amigo informático aunque sea de titulillo del INEM?.


Si la pregunta se la realizas a un técnico probablemente te dirá algo como lo siguiente (según experiencia propia):




  1. Consume mucha RAM (mi Ubuntu no consume tanto.. xDD)


  2. El UAC es un coñazo


  3. Las aplicaciones no funcionan bien (ni algunos servicios y scripts)


  4. La configuración de red es mucho más complicada (¡¡¡no soy capaz de hacer «ping»!!!)


  5. Faltan drivers


  6. Complicado de «Piratear» (¿¿??) –> La gente no se corta un pelo 😉

Del mundo antisistema (Anti-Microsoft, se entiende) se oyen otras voces como que «Windows Vista recorta libertades» y  comentarios por el estilo que más tienen que ver con colores políticos e ideológicos que por ser prácticos y técnicos.


Luego cuando uno se mueve al mundo de la seguridad informática se escuchan otras voces reconociendo la seguridad de Windows Vista, y se oyen incluso elogios de aquellos que han visto en Windows Vista un nuevo reto donde creackear las cosas se ha vuelto mucho más difícil.


Tras casi tres años de experiencia en el producto (en Informática64 empezamos a dar formación desde las Betas y ya estamos planificando las de Windows 7) amenudo nos toca acometer las quejas anteriormente comentadas que se hacen muchos técnicos y empresas sobre el producto (¡Viva la consultoría informática!), algo a lo que hay que añadir Windows Server 2008, sistema curiosamente muy respetado y valorado, aunque comparte el mismo Kernel que Windows Vista.


A modo de FAQ, voy a dar un pequeño repaso a las quejas antes citadas:


Q: Windows Vista Consume mucha RAM (mi Ubuntu no consume tanto.. xDD)


A: Windows Vista usa un gestor de memoria llamado Superfetch que carga páginas de aplicaciones en la RAM antes de que estas sean utilizadas con el fin de acelerar su ejecución. Básicamente el planteamiento es ¿Si tienes 4GB de RAM por qué solo vas a aprovechar 512MB?


 


Q: El UAC es un coñazo


A: Es cierto que el UAC (Control de Cuentas de Usuario) es un poco lata (aunque se mejoró con el SP1 de Windows Vista), pero la pregunta es más bien ¿prefieres que todo lo que ejecutan tus usuarios administradores se haga con plenos privilegios administrativos?, la experiencia ha demostrado que esto es un peligro casi mayor que el propio malware, aparte de que el UAC hace muuucho más que controlar privilegios ¿has oido hablar de MIC?¿de UIPI?¿la integridad de aplicaciones?¿la virtualización?


UAC es uno de los pilares de seguridad de Windows Vista (y Windows server 2008), entro otras muchas tecnologías.


 


Q: Las aplicaciones no funcionan bien (ni algunos servicios y scripts)


A: Esto es un tema más complicado, y es lo que ha motivado esta nueva serie de post, de momento valdrá con mencionar que si hay aplicaciones con problemas en Windows Vista es debido a la gran cantidad de sistemas de seguridad que incluye este sistema operativo, de manera que va a ser necesario empaparse bien de estás tecnologías de seguridad.


 


Q: La configuración de red es mucho más complicada (¡¡¡no soy capaz de hacer «ping»!!!)


A: Ojala las cosas fueran más sencillas, pero por suerte o por desgracia al informático le toca actualizarse, y es que los aspectos de red de Windows Vista han sido completamente rediseñados. Para empezar tenemos una capa dual IPv4/IPv6, compatibilidad con Network Access Protecction (NAP) de Windows Server 2008, un nuevo sistema IPSEC (AuthIP), una pila TCP/IP completamente nueva, nuevos protocolos como SMB2.0 y LLTD, mejoras de rendimiento para redes inalámbricas y sobre todo un firewall de Windows completamente nuevo con reglas de entrada y de salida, control de servicios, IPSEC incorporado y gestión mediante perfiles (para protegernos cuando estamos en una WIFI de cafetería o de aeropuerto).


Puede gustarte más o menos, pero en esta profesión hay que actualizarse más que los propios médicos… (lo peor sería ser médico e informático xDD)


 


Q: Faltan drivers


A: Esto es cierto (aunque con el SP1 se ha mejorado mucho el tema), es un problema que ya tuvo XP en su momento, y lo único que se puede hacer es solititar a los fabricantes que diseñen drivers para Windows Vista, o bien adquirir nuevo hadrware que sí sea compatible.


Reflexionando un poco no tardamos en darnos cuenta que tambien fastidia tener que volver a compilar un módulo para un dispositivo concreto dentro de un nuevo Kernel de Linux…


 


Q: Complicado de «Piratear» (¿¿??) –> La gente no se corta un pelo 😉


A: También lo es puentear un coche o ….. ¿no?


 


Tiempo de tomar un café…


¿Que tal el carajillo?¿te ha sentado bien? que envidia, yo estoy en el curro y me tengo que conformar con ese café de máquina que como mínimo debe ser cancerijeno 😛


Tras este punto y aparte, reflexión espiritual, o posesión por espíritus e»SPECTRA»les, empezamos con el tema que ha motivado este post: La compatibilidad de aplicaciones…


Lo primero es tener claro el concepto: La mayoría de los errores de aplicaciones en Windows Vista son debidas a las nuevas opciones de seguridad que este incorpora, en particular las siguientes tecnologías:


Control de Cuentas de Usuario (UAC)


A lo largo de la vida de este blog ya se ha hablado mucho de UAC y de su importancia:


http://geeks.ms/blogs/vista-tecnica/archive/tags/Control+de+Cuentas+de+Usuario/default.aspx


Y aun así, no hemos llegado a tratar el tema al 100%


Básicamente el UAC es un sistema añadido a Windows Vista para el cumplimiento del principio del «menor número de privilegios posibles», algo así como el SUDO de Linux, pero con un enfoque completamente diferente.


Tradicionalmente en los S.O. de escritorio de Microsoft siempre se ha trabajado de manera predeterminada como «Administrador», una práctica nada recomendable y en cierta manera inducida por el hecho de que Windows 2000 y XP por defecto creaban usuarios administradores desde la propia instalación. Ni que decir tiene que cualquier malware ejecutado como administrador tiene terribles consecuencias, algo que ha hecho a la plataforma Microsoft, y particularmente a Windows XP por su extendido uso, un claro candidato para la gran mayoría del malware actual (esto ha llegado hasta el punto de que los creadores de malware han realizado campañas constatadas incitando a la gente a que se quede en Windows XP y no migre a Windows Vista).


Con Windows Vista, aunque nuestros usuarios pertenezcan al grupo «Administradores» reciben un token de usuario corriente (sin privilegios) y otro de administrador (con sus privilegios administrativos), cualquier aplicación que ejecuten los usuarios se hará con el token de usuario limitado, que además tiene un nivel de integridad inferior (sistema de seguridad MIC) al token de administrador. Las aplicaciones solo se ejecutarán con plenos privilegios si se acepta una «solicitud de elevación» que se lanza si la aplicación lo solicita o si se usa la opción del menú contextual «Ejecutar como Administrador».


Aunque lo anterior era la definición básica la cosa no acaba aquí, el UAC es capaz de comprobar si la aplicación se encuentra firmada digitalmente por un proveedor de confianza y advertirnos si no es así o si la integridad de la aplicación firmada ha cambiado (incluyendo las propios componentes del Sistema, lo que puede ayudarnos a identificar la presencia de malware). UAC también comprueba si un ejecutable es un fichero de instalación, solicitando elevación si es así (se acabó la posibilidad de que un usuario corriente instale una aplicación personal sin nuestro consentimiento). Aparte es el responsable de virtualizar aplicaciones provenientes de Windows XP o sistemas anteriores, algo que permite que una mayor cantidad de aplicaciones se ejecuten con bajos privilegios (sin requerir ser administradores).


Problemas con el UAC:


Las aplicaciones corporativas que requieran ejecutarse con plenos privilegios para funcionar no arrancarán con un simple doble click, sino que deberá seleccionarse la opción «Ejecutar como administrador», no obstante hay alternativas (algo que dejo para post posteriores).


Las páginas web, complementos ActiveX y Applets también pueden presentar problemas dado que Internet Explorer se ejecuta con privilegios de usuario corriente.


Otro problema que presenta el UAC de cara a las aplicaciones es el de la virtualización. Las aplicaciones no pensadas nativamente para Windows Vista pueden presentar problemas cuando intentan escribir en ubicaciones donde un usuario corriente no tiene privilegios (como la carpeta «Windows», PogramFiles o «HKEY_LOCAL_MACHINE»). Podeis comprobar más sobre la virtualización de aplicaciones en los siguientes posts:

http://geeks.ms/blogs/vista-tecnica/archive/tags/Virtualizaci_26002300_243_3B00_n/default.aspx

Básicamente los errores que presentan las aplicaciones con la virtualización es que al redirecionarse «Windows», PogramFiles y «HKEY_LOCAL_MACHINE al perfil del usuario las aplicaciones que necesiten una configuración común entre varios usuarios, se encontrarán con que cada usuario tiene una configuración diferente (la de su respectivo perfil).


ID de sesión 0


Otro de los grandes culpables de que las aplicaciones no funcionen bien es el aislamiento que Windows Vista impone a los servicios. Este tema ya lo tratamos este tema en el articulo siguiente:


http://geeks.ms/blogs/vista-tecnica/archive/2007/12/24/sistemas-de-integridad-en-windows-vista-i-windows-service-hardening-primera-parte.aspx


Básicamente los servicios se ejecutan en un contexto diferente al del usuario (el ID 0), aislando a los usuarios de los servicios e impidiendo la posibilidad de realizar una interacción directa, esto mejora la seguridad, reduciendo el riesgo del equipo ante un atacante que puediera valerse de una vulnerabilidad de un servicio para obtener acceso al sistema.


Problema de ID de sesión 0:


El problema básico es que caulquier aplicación que necesite ejecutarse bajo el usuario SYSTEM (como los scripts de inicio de sesión de los equipos), no mostrarán advertencias interactivas al usuario de manera directa y como consecuencia no tendrán el comportamiento esperado.


 


MIC y el modo protegido:


Windows Vista incluye otra tecnología de seguridad conocida como Mandatory Integrity Control (MIC) que hace un uso exhaustivo de los conocidos anillos de seguridad de la arquitectura x86 para mejorar la seguridad del sistema con creces mediante la aplicación de 4 niveles de seguridad («sistema» para servicios, Alto para Administradores, Medio para Usuarios y Bajo para aplicaciones específicas como Internet Explorer 7)


Internet Explorer hace uso de MIC en Windows Vista mediante el «Modo protegido» mediante el cual consigue que cualquier elemento que intente acceder al disco duro deba ser advertido al usuario el 100% de las veces (incluso si dicho intento de escritura es por culpa de una vulnerabilidad), dado que Internet Explorer se ejecutará con un nivel de integridad inferior al del propio usuario.


Problema con el Modo protegido:


Ciertas páginas web que requieran realizar cambios de manera frecuente en el usuario, mostrarán continuas advertencias y podrían alertar al usuario.


Los elementos indicados arriba reúnen la inmensa mayoría de los problemas de compatibilidad conocidos, pero existen otros, como las APIs descontinuadas, comprobaciones de versiones, entornos gráficos, incompatibilidades con IPv6 y un largo etc. que aunque son responsables de un menor número de incidencias también son aspectos a tener en cuenta.


Hay que entender las tecnologías de seguridad de Windows Vista para acometer los diferentes escenarios de compatibilidad de aplicaciones, algo que dejo para más adelante, dado que esto ya me queda demasiado largo….


En resumen, Windows Vista incluye un gran número de elementos de seguridad que pueden afectar a la ejecución esperada de las aplicaciones, sinembargo, también es cierto que la seguridad tiene un coste, y Windows Vista es sin duda a día de hoy el sistema operativo de escritorio más seguro del mercado (aquí dejo mi «Flame» particular :P).