José Parada ExEvangelista - ATS Sector Público V 5 Fundamentos de la Compatibilidad de Aplicaciones 3ª Parte
Agenda Ejecución de aplicaciones en Windows Problemas frecuentes- Mejoras de Seguridad Control de Cuentas de Usuario (UAC) Windows Resource Protection Modo Protegido de Internet Explorer SO y Versión de IE Nueva ubicación de Carpetas Aislamiento de la Sesión 0 Problemas no tan frecuentes HerramientasPCAAppHelp
Problemas Frecuentes Control de Cuentas de Usuario (UAC) Windows Resource Protection Modo protegido Internet Explorer Versiones de OS e IE Ubicación nueva de Carpetas Aislamiento de la Sesión 0
Ubicación nueva de Carpetas Se ha cambiado la ubicación de “Mis Documentos” y otras carpetas de usuario para proporcionar una mejor experiencia de usuario Los datos del usuario se almacenan ahora en: ‘\users\%username%\’ estructura de Capetas Imagenes, Musica, Documentos, Escritorio y Favoritos son carpetas nuevas bajo esta estructura El prefijo “Mis” se ha eliminado “Todos los Usuarios” se ha convertido en “Acceso Público” y “\Datos de Programa”
Ubicación nueva de Carpetas Cambios en las Localizaciones Los nombres localizados de las carpetas eran los nombres verdaderos (ejem., “C:\Archivos de Programa”) y no existía el nombre en Ingles En Vista, todas las carpetas tienen nombre en Ingles (ejem., “C:\Program Files”) y un punto de encuentro (ejem., “C:\Archivos de programa”) El Explorador de archivos muestra el nombre localizado para los directorios
Ubicación nueva de Carpetas: Mitigaciones Puntos de Encuentro de Directorios (Junctions Points) Proporcionan compatibilidad hacia atrás para paths codificados. ‘Documents and Settings’ ‘Users’ ‘Mis Documentos’ ‘Documents’ ‘Archivos de Programa ‘Program Files’ Se deniega el acceso de lectura para ‘Todos’ en la unión del directorio Previene Backups múltiples del directorio No muestra nada desde la línea de comando Únicamente se permite el acceso con el path completo ejem., ‘\Documents and Settings\%username%\ My Documents\Test.doc‘
Ubicación nueva de Carpetas: Soluciones Nunca codificar paths absolutos AppVerifier incluye un test Script: variables de entorno Código no manejado (C++/C) Función ShGetFolderPath (CLSID_...) SHGetKnownFolderPath (FOLDERID_...) Vista y posterior Código Manejado (C#, VB.NET) System.Environment.GetFolderPath Enum System.Environment.SpecialFolder Microsoft.VisualBasic.FileIO.SpecialDirectoriesMy.Computer.FileSystem.SpecialDirectories
Ubicación nueva de Carpetas: Donde Diferenciación entre Usuario y Datos de Aplicación El usuario no interacciona directamente con los Datos de la Aplicación Datos Compartidos de Usuario (Documents) C:\Users\Public\Documents CSIDL_COMMON_DOCUMENTSFOLDERID_PublicDocuments
Ubicación nueva de Carpetas: Donde Datos compartidos de Aplicación C:\ProgramData\MyAppName%AllUsersProfile%\MyAppNameCSIDL_COMMON_APPDATAFOLDERID_ProgramDataSpecialFolder.CommonApplicationData Establecer permisos (ACL) para las carpetas que comparten datos de aplicación durante la instalaicón
Ubicación nueva de Carpetas: Donde Datos de Aplicación por usuario (roaming) C:\Users\%username%\AppData\Roaming%APPDATA%CSIDL_APPDATAFOLDERID_RoamingAppDataSpecialFolder.ApplicationData
Ubicación nueva de Carpetas: Donde Datos de aplicación por usuario Local C:\Users\%username%\AppData\Local%LOCALAPPDATA%CSIDL_LOCAL_APPDATAFOLDERID_LocalAppDataSpecialFolder.LocalApplicationData
Ubicación nueva de Carpetas: Donde Datos de Usuario(Documents) C:\Users\%username%\DocumentsCSIDL_MYDOCUMENTSFOLDERID_DocumentsSpecialFolder.MyDocuments
Ubicación nueva de Mis Documentos
Problemas Frecuentes Control de Cuentas de Usuario (UAC) Windows Resource Protection Modo protegido Internet Explorer Versiones de OS e IE Ubicación nueva de Carpetas Aislamiento de la Sesión 0
Sesión 0 Window Station Escritorio Salva Panta Login Sesiones en Windows XP/2003 Servicios Ventana Usuario1 Ventana Usuario1 Ventana Usuario1 Ataque
Aislamiento de la Sesión 0: Porque Ejecutar Servicios y aplicaciones de usuario en la misma sesión en un riesgo de seguridad Explotación potencial enviando mensajes entre las aplicaciones y los servicios Agentes maliciosos que buscan la manera de elevar sus privilegios utilizan los servicios Al ejecutar los servicios y las aplicaciones de usuario en sesiones separadas se evitan estos ataques
Sesiones en Windows Vista Sesión 0 Window Station Escritorio Servicio Sesión 1 Window Station Escritorio Salva Panta Login Ventana Usuario 1 Ventana Usuario 1 Ventana Usuario 1 Seguridad
Sesión 0: Impacto Compatibillidad Drivers en modo usuario y servicios que funcionan con múltiples usuarios en XP (Fast User Switching) funcionan casi siempre Un servicio y una aplicación de usuario que utilice para comunicarse funciones de mensajería de Windows (e.g. SendMessage, PostMessage) fallara silenciosamente Un servicio y una aplicación de usuario que utilice para comunicarse objetos locales Un servicio que utiliza la IU para interactuar con el usuario, mostrara la IU en un escritorio especial que es inaccesible
Sesión 0: Mitigaciones Automáticas Síntomas: El IU que muestra el servicio no es visible: Windows Vista permite que el usuario interaccione con la IU de la sesión 0 en un escritorio especial Detecta el problema de que la IU no se muestra Da la opción al usuario para que elija si mostrar el mensaje ahora y mas tarde Cambia el Display a un escritorio especial donde la IU es visible
Sesión 0: Soluciones Problema: Los servicios y las aplicaciones de usuario se comunican entre si utilizando las funciones de mensajería de Windows o objetos locales Solución: Rediseñar la aplicación y el servicio para que usen mecanismos cliente servidor para comunicarse remote procedure call (RPC) named pipes named pipes
Sesión 0: Soluciones Problema: El Servicio muestra una IU para interactuar con el usuario Solución: Rediseñar el servicion para que no interactue directamente con el usuario Usar la función WTSSendMessage para crear un mensaje simple en el escritorio del usuario (No recomendado)
Problemas No tan Frecuentes Dibujado de la Pantalla Componentes descontinuados Pila IPv6 Cambios Críticos en el Código Código Manejado para.NET 1.x Vista 64-bit
Problemas No tan Frecuentes Dibujado de la Pantalla Componentes descontinuados Pila IPv6 Cambios Críticos en el Código Código Manejado para.NET 1.x Vista 64-bit
Dibujado de la Pantalla Porque: Para mejorar la experiencia de usuario Como: Todas las ventanas de windows se renderizan en un Buffer antes de mostrarse el monitor; Desktop Window Manager combina esas imagenes para pintar el escritorio Impact: Algunas aplicaciones se renderizan incorrectamente Mitigación: Desabilitar la Composición del Escritorio Aplicar el shim “DisableDWM” Propiedades Etiqueta Compatibility Soluciones: Rediseñar la aplicación para que no piense que esta renderizando la pantalla
Deshabilitar la Composición del Escritorio
Problemas No tan Frecuentes Dibujado de la Pantalla Componentes descontinuados Pila IPv6 Cambios Críticos en el Código Código Manejado para.NET 1.x Vista 64-bit
Componentes Discontinuados Soporte a Ficheros de ayuda Win(.HLP) El visor No esta incluido en Windows Vista Descarga disponible para soporte a.HLP bcfad9-d3f cd175d4bb bcfad9-d3f cd175d4bb bcfad9-d3f cd175d4bb Se prefiere CHM Módulos GINA (Graphical Indentification and Network Authentication) Notificaciones de Inicio de Sesión (Logon Notifications)
Componentes Discontinuados Drivers de Impresión en modo Kernel Han de ser en modo Usuario Extensiones de servidor Microsoft® FrontPage® Publicar en la Web desde VS Servicios para Macintosh D3DRM Asistente de Pubicación Web NetDDE (opcional en XP)
Componentes Discontinuados PCA monitoriza la API CoCreateInstance API y el Loader (NTDLL) Detecta fallos de carga en objetos COM y DLL discontinuados Usa el Windows Error Reporting (WER) para obtener: Articulo de la Knowledge Base o Vinculo a la descarga del componente discontinuado
Componentes Discontinuados
Problemas No tan Frecuentes Dibujado de la Pantalla Componentes descontinuados Pila IPv6 Cambios Críticos en el Código Código Manejado para.NET 1.x Vista 64-bit
Why: IPv6 La demanda de IPv6 es debida a: Arquitectura Flexible Seguridad avanzada Redes transparentes Todo sobre IP RFC IPv6 nos provee de: SeguridadMobilidad Plan de transición IPv4 IPv4 con IPv6 nativo Solo IPv6
Como: IPv6 La pila TCP/IP en Windows Vista tiene IPv4 e IPv6 habilitados por defecto Se envía trafico IPv6 por defecto Independientemente de si la red lo soporta o no ejem. Solicitud de ruter, descubrimiento de vecinos,.. Pila y API únicas para IPv4 e IPv6 La API de IPv4 se discontinua, aunque se soporta
Como: IPv6 34 FTPWWWNFS TCPUDP SNMPTelnet IPv4IPv PPPATM802.3
IPv6: Impacto La APIs únicas para IPv4 deben de funcionar Modo de pila Dual (por defecto) Modo único IPv4 APIs solo de IPv4 fallaran cuando se ejecuten en redes IPv6 nativas Actualmente las redes son de pila IPv4 única o de pila doble (IPv4 eIPv6). Se recomienda reescribir las aplicaciones para que con la nueva API independiente de la pila.
IPv6: Impacto APIs independientes de la versión IP La herramienta Checkv4.exe facilita la portabilidad del código us/library/ms aspx us/library/ms aspx Se desaconseja el uso de funciones indocumentadas pues al ser la pila completamente nueva, ya no funcionan Problema para algunos clientes VPN
Problemas No tan Frecuentes Dibujado de la Pantalla Componentes descontinuados Pila IPv6 Secciones Críticas Código Manejado para.NET 1.x Vista 64-bit
Secciones Críticas Porque: Implementación mejorada de las secciones criticas Como : El comportamiento al entrar en una Sección critica siempre ha estado indefinido y continua indefinido en Vista Síntomas: Aplicaciones que no comprueban la entrada en una Sección critica pueden tener un error de Violación de acceso Mitigación: El Shim “EnterUninitializedCriticalSection” soluciona algunos entornos Solución: Modificar el código para: Inicializar la Sección Critica antes de entrar en ella No entrar en una Sección Crítica eliminada
Problemas No tan Frecuentes Dibujado de la Pantalla Componentes descontinuados Pila IPv6 Secciones Críticas Código Manejado para.NET 1.x Vista 64-bit
Codigo Manejado.NET 1.x Síntoma Código Manejado escrito para.NET 1.x falla (mensaje de error o cuelgue) Causa La aplicación depende de alguna funcionalidad exclusiva de.NET 1.x & La aplicación no especificas en el fichero de configuración el o el La aplicación no especificas en el fichero de configuración el o el Nota:.NET 1.0 no soportaba Nota:.NET 1.0 no soportaba Solución Añadir en.exe.config
Problemas No tan Frecuentes Dibujado de la Pantalla Componentes descontinuados Pila IPv6 Secciones Críticas Código Manejado para.NET 1.x Vista 64-bit
64-bit Vista: Supported Ejecuta aplicaciones de 32-bit con la ayuda del emulador WOW64 Pueden existir otros problemas de compatibilidad Algunos drivers de 32-bit en modo usuario Excepciones: Hospedados en procesos de 64-bit ejem.,Spooler (64-bit) y drivers de impresión de 32-bit
Vista 64-bit: No Soporta Aplicaciones e instaladores de 16-bit Drivers en modo Kernel de 32-bit Drivers de impresora de 32-bit en modo usuario Parcheo del Kernel (x64 only) Patchguard previene que las aplicaciones parcheen el kernel. Si lo detecta inicia un apagado del equipo
Vista 64-bit: Drivers en Modo Kernel Drivers de 64-bit en modo kernel necesitan una firma digital en Windows Vista El chequeo de la firma digital se realiza durante la instalación y durante cada carga del driver PCA detecta estos problemas y muestra un mensaje de aviso
Vista 64-bit: Drivers en Modo Kernel PCA monitoriza los cambios en la clave del registro para monitorizar la instalación de nuevos drivers HKLM\System\CurrentControlSet\Services Detecta drivers no firmados en modo kernel Solución Disabilitar el driver Avisar al usuriao
Vista 64-bit: Drivers en Modo Kernel
Detalles del “Program Compatibility Assistan” (PCA) Gestión de PCA Mensajes de Ayuda para Aplicaciones
Detalles del “Program Compatibility Assistan” (PCA) Gestión de PCA Mensajes de Ayuda para Aplicaciones
Gestión de PCA El almacén de los modos de Compatibilidad esta en: ‘HKLM\Software\Microsoft\Windows NT\ CurrentVersion\AppCompatFlags\Layers’ Nombre de la clave= ‘Camino completo del ejecutable’ Valor de cadena = Valor de cadena = Excepción: ElevateCreateProcess se almacena en HKCU (aplica al usuario únicamente)
Gestión de PCA PCA almacena una lista de programas que encuentra ‘HKCU\Software\Microsoft\Windows NT \CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted’ Nombre de la clave= ‘Camino completo del ejecutable’ Valor DWord = Valor DWord = No almacena nada si elegimos “Cancelar”
Gestión de PCA Excluir Aplicaciones de PCA La intención de PCA es detectar problemas con aplicaciones diseñadas ara versiones previas de Windows. Si no lo queremos: Aplicaciones con el manifiesto están excluidas Añadir una lista de.exes con su dirección completo en el registro Clave: HKLM\ Software\Microsoft\Windows NT\ CurrentVersion\AppCompatFlags\Compatibility Assistant Valor con nombre “ExecutablesToExclude” de tipo REG_MULTI_SZ
Gestión de PCA Deshabilitar PCA para todos los programas Políticas de Grupo ‘Desactivar el Asistente para la Compatibilidad de Aplicaciones’ in ‘Plantillas Administrativas Componentes de Windows Compatibilidad de Aplicaciones’ Durante el desarrollo de una aplicación Para evitar errores en lo test de compatibilidad Para evitar la solicitud de elevación cuando todos los Usuarios son estándar
Gestión de PCA Deshabilitar PCA en escenarios específicos Políticas de grupo ‘Plantillas Administrativas Sistema Solución de problemas y Diagnostico Diagnostico de Compatibilidad de Aplicaciones’ Para diagnosticar problemas específicos Log de eventos Cada acción se registra (después de la respuesta del usuario) ‘Registro de Aplicaciones y Servicios Microsoft Windows Program Compatibility Assistant Operational’
Detalles del “Program Compatibility Assistan” (PCA) Gestión de PCA Mensajes de Ayuda para Aplicaciones
Mensajes de Ayuda de la Aplicación El sistema tiene una lista con los programas que sabe que tienen problemas de compatibilidad Los mensajes se conocen como Ayuda de la Aplicación (mensajes ‘apphelp’)
AppHelp: Bloqueo Duro Si se sabe el que la aplicación es incompatible y permiter que se ejecute resultara en un impacto severo para el sistema (for example, a stop error or unable to boot after the install, etc.) se mostrará el siguiente mensaje de bloqueo
AppHelp: Bloqueo Suave Este tipo de mensaje de aviso se muestra cuando se sabe que la aplicación tiene problemas de compatibilidad, pero el impacto no es severo con el sistema
AppHelp: Buscar Soluciones La respuesta suele ser de alguno de estos tres tipos: Redirigir al usuario hacia una actualización de la aplicación publicada por el fabricante de Software Redirigir al usuario hacia la Web del fabricante para obtener mas información Redirigir al usuario hacia un articulo de al Base de conocimiento de Microsoft
59 Conclusiones
© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.