Descripción de las nuevas funciones de seguridad de Windows Vista para desarrolladores
La cuestión de la ubicación de la conectividad de red es fuente de pesadillas en términos de seguridad informática. Además de las mejoras en la seguridad del sistema operativo, Microsoft Windows Vista, antes conocido por su código "Longhorn", ofrece avances que permiten a los desarrolladores crear aplicaciones más confiables y facilitar la administración del sistema, lo cual beneficia a la seguridad de los usuarios finales.
Específicamente, Windows Vista enfrenta el problema de los privilegios. En general, el software malicioso, o malware, corre en el mismo nivel privilegiado del usuario de la computadora afectada, y la mayoría de los usuarios tienen asignados por defecto privilegios elevados. Si sumamos todo esto, los malware suelen correr con privilegios de Administrador. Por eso, uno de los primeros objetivos de Windows Vista apunta a que todas las operaciones se realicen con la menor cantidad posible de privilegios. Además, Windows Vista proporciona herramientas que detectan y reportan vulnerabilidades en aplicaciones y mecanismos, y que integran completamente las herramientas de firewall y anti-malware con el sistema operativo y el Centro de Seguridad.
Windows Vista cambia el modelo tradicional de privilegios de Windows para evitar la ejecución de programas encargados de realizar operaciones que el usuario nunca eligió ni autorizó. Para ello, la Protección de la Cuenta de Usuario -antes denominada Cuenta de Usuario Menos Privilegiada o, en inglés, Least-privileged User Account (LUA)- permite que los usuarios trabajen con privilegios mínimos en la mayoría de los casos, siempre teniendo la posibilidad, cuando fuera necesario, de ejecutar aplicaciones que requieren más privilegios. Cuando se construyen aplicaciones basadas en la Protección de la Cuenta de Usuario (PCU), existen dos cuestiones clave a tener en cuenta: el modelo de especificación de privilegios y el modelo de ejecución de PCU estándar.
Modelo de Especificación de Privilegios
La PCU extiende el símbolo de acceso ya utilizado para administrar los logons de Windows con un nuevo mecanismo de símbolos que proporciona cada logon de administrador con dos símbolos de seguridad, un símbolo PCU y un símbolo admin completo.
Los símbolos de acceso contienen información sobre la seguridad de la sesión iniciada, e identifican al usuario y a su grupo de privilegios. El sistema operativo utiliza dicho símbolo para controlar el acceso a objetos y controles seguros, y supervisa que el usuario pueda ejecutar operaciones de sistema en la computadora local. Los símbolos de la PCU son un tipo de símbolo de acceso que define la cantidad mínima de privilegios necesaria para ejecutar el logon de un usuario de Windows Vista en un sistema con soporte para una PCU. El segundo símbolo (de admin completo) posee la cantidad máxima de privilegios autorizados para la cuenta de administrador.
Modelo de Ejecución de la PCU
Más allá de los símbolos, el modelo básico de ejecución para hacer correr aplicaciones bajo la PCU utiliza funciones de creación de procesos ya existentes (ShellExecute que llama a CreateProcess), aumentadas por la PCU. El modelo de ejecución de la PCU está compuesto por cuatro partes:
1
El Servicio de Información sobre Aplicaciones -o Aplication Information Service (AIS)- es un servicio del sistema, responsable de iniciar aplicaciones que exigen privilegios elevados con el consentimiento previo del usuario (a través de la Interfaz del Usuario para el Consentimiento, o Consent User Interface), que sirve para aumentar el número de privilegios y crear un nuevo proceso de la aplicación con el símbolo de admin completo.
2
La Interfaz del Usuario para el Consentimiento se ejecuta a través del AIS con un privilegio de sistema que busca obtener el consentimiento o las credenciales del usuario, con el fin de iniciar la aplicación con un símbolo de admin completo.
3
El Nivel de Ejecución Exigido -o Requested Execution Level- es una característica de aplicación que indica qué símbolo (PCU o full) utilizar. El sistema determina el Nivel de Ejecución Exigido de una aplicación después de leer requestedExecutionLevel desde el manifiesto de la aplicación, de realizar el querie de la entrada de la base de datos AppCompat de Windows Vista, o de utilizar la tecnología de detección de instaladores de Windows Vista.
4
Provista por Windows Vista, la base de datos AppCompat contiene información sobre las aplicaciones heredadas más comunes, que exigen una elevación de privilegios.
A continuación, un ejemplo del flujo de control de la ejecución de una aplicación bajo la PCU:
Cuando el usuario intenta iniciar una aplicación, Windows recurre a ShellExecute para llamar a CreateProcess.
CreateProcess determina si la aplicación necesita un privilegio elevado haciendo un querie del manifiesto de la aplicación, de la base de datos AppCompat de Windows Vista, y de la tecnología de detección de instaladores del sistema en ese orden.
Si la aplicación no necesita privilegios elevados, el proceso se crea a través de NtCreateProcess.
Si la aplicación necesita privilegios elevados, CreateProcess, a partir de un llamado a NtCreateProcess, devuelve un error específico a ShellExecute.
En respuesta al error, ShellExecute llama a través del Aplicación Information Service (AIS) para concretar la elevación de privilegios.
AIS solicita entonces el consentimiento al usuario a través de la Interfaz del Usuario para el Consentimiento, o Consent User Interface.
A continuación, ShellExecute retoma CreateProcess para el usuario con el símbolo de admin completo, para iniciar la aplicación en el escritorio del cliente (PCU).
NtCreateProcess ejecuta la aplicación con el símbolo de admin completo especificado.
NtCreateProcess solicita el consentimiento al usuario a través de la Interfaz del Usuario para el Consentimiento, o Consent User Interface.
NtCreateProcess retoma CreateProcess con el símbolo de admin completo para ejecutar la aplicación en el escritorio del cliente (PCU).
NtCreateProcess ejecuta la aplicación con el símbolo de admin completo especificado.
Cómo Construir Aplicaciones PCU
Los desarrolladores que trabajan con Visual Studio pueden analizar su código para la conformidad de la PCU si utilizan la herramienta AppVerifier. Tanto ClickOnce como la versión de Windows Vista de la tecnología MSI (Windows Installer) satisfacen completamente la PCU, y todo desarrollador de aplicaciones debería tratar de utilizar estas tecnologías cuando trabaja con instaladores.
Recuerde que la conformidad con la PCU está directamente relacionada con el criterio de menor privilegio. Si su aplicación se ejecuta correctamente bajo una cuenta no administradora de Windows XP o Windows Server 2003, Windows Vista no le causará ningún problema.
Para asegurarse de que su aplicación se ejecutará correctamente en Windows Vista, pruébela como USUARIO.
Identifique y repare fallas para que su IU se ejecute como USUARIO.
Si su IU no necesita privilegios de administrador para funcionar, valide haciendo un test de su IU como USUARIO y verifique que todas las operaciones funcionen adecuadamente.
Si su IU sólo funciona con privilegios de administrador, valide haciendo un test de su IU como USUARIO y verifique que la IU solicite elevación antes de ejecutarse.
Para una aplicación con distintas funciones que dependen de si el usuario es Administrador o USUARIO, habrá una manera de permitir un acceso variable a las funciones de administrador de la aplicación.
Windows Vista permite que los desarrolladores creen extensiones basadas en roles para el Asistente para la Configuración de Seguridad (ACS), y encarguen una extensión para este mismo asistente con su software de servidor. De esta manera, los clientes pueden proteger sus servidores mientras el software de terceras partes sigue funcionando sin problemas. Gracias a esto, los desarrolladores pueden crear nuevas extensiones basadas en roles para el ACS como, por ejemplo, que las políticas de seguridad auto-generadas puedan cerrar funciones del sistema basadas en roles de servidor (servicios, puertos, funciones).
Para fijar la seguridad de una red, especialmente de aquélla que admite el roaming informático y el funcionamiento de dispositivos portátiles, Windows Vista proporciona el framework para la Protección de Acceso a la Red -o Network Access Protection (NAP)-. La NAP permite que los administradores de sistemas definan y fortalezcan las políticas destinadas a exigirles a los clientes que establezcan sus normas de verificación y compatibilidad con la red antes de solicitar algún acceso específico. Los sistemas de clientes obtienen acceso full o un lugar limitado en una subsección de la red, con acceso limitado.
Los desarrolladores deberían utilizar el nivel de acceso de API a la NAP y la Windows Filtering Platform (WFP) para reducir el flujo de trabajo seguro del usuario y del administrador, de las siguientes maneras:
Proporcionando una configuración específica de seguridad para la aplicación, que admita Firewall y NAT transversal.
Permitiendo una visibilidad más detallada (nivel down-to-packet) de la transmisión de datos.
Aislando y validando nuevas herramientas y su configuración antes de realizar la instalación completa correspondiente y de integrarlas en un sistema en ejecución.
El software cliente de acceso a la red y los servidores de acceso a la red, que participan en la NAP, se aseguran de que sólo los sistemas sanos se adjunten a la red. Los sistemas afectados por virus o fallas son puestos en VLAN restringido hasta la resolución de los problemas correspondientes para que luego sí puedan sumarse a la red.
Además de las mejoras de seguridad realizadas en el centro del sistema operativo, Windows Vista brinda funciones relevantes con las que los desarrolladores pueden mejorar la seguridad de las aplicaciones que programan. Entre ellas, figuran la Protección de la Cuenta de Usuario (PCU), el Asistente para la Configuración de Seguridad, y el Framework para la Protección de Acceso a la Red. Los desarrolladores que hayan preparado sus aplicaciones para el lanzamiento de Windows Vista podrán aprovechar estas funciones para que sus clientes se mantenga seguros y para que sus aplicaciones sigan ejecutándose sin problemas.