в Windows 7

advertisement
Совместимость приложений
Баркан Георгий
gbarkan@microsoft.com
Ключевые проблемы
Windows Vista, Windows Server 2008 и
Windows 7
User Account
Control (UAC)
Windows
Resource
Protection
(WRP)
Версия
операционной
системы
Mandatory
Integrity
Control (MIC)
Изоляция
сессии 0
Версия операционной системы
• Внутренний номер версии в Windows Vista/Server
2008/Windows 7 (функция GetVersion) = 6
Версия
Windows
2000
Windows
XP
Windows
Server
2003
Windows
Vista
Windows
Server
2008
Windows
7
5.0
5.1
5.2
6.0
6.0
6.1
Версия Internet Explorer - 7.0/8.0
– Версия включена в строку User Agent
– Строка User Agent включается в заголовок
каждого HTTP запроса
• Измените код – нужна проверка типа >= 6
• GetVersionEx()
•
Версия операционной системы
54% всех ошибок,
связанных с
совместимостью
User Account Control
• Операционная система подвергается
существенным рискам когда пользователь
работает под учетной записью
Administrator
– Более простая установка вредоносного кода
– Возможность повышения привилегий
– Открытость для вредоносного кода
• Случайные повреждения, вносимые
пользователем
User Account Control
•
•
•
•
User Account Control
Manifest
Standard User vs. Administrator
Virtualization
User Account Control
Windows Resource Protection
• Ключевые файлы операционной системы и
ключи реестра могут быть заменены на
предыдущие версии или вредоносный код –
ущерб стабильности и безопасности системы
• Задача Windows Resource Protection – защита
ключевых компонентов операционной
системы, увеличение стабильности,
предсказуемости и надежности системы
Windows Resource Protection
• Запрещены обновления защищенных ресурсов
– Только программы установки, известные ОС
(Windows Update)
– ACL для ресурсов
• Распространяется на файлы, папки и ключи реестра
– Большинство ключевых модулей ОС (EXE и DLL)
– Большинство ключей реестра (HKCR)
– Папки, используемые ресурсами ОС
• Проверка
– SfcIsFileProtected() - файлы
– SfcIsKeyProtected() – ключи реестра
Mandatory Integrity Control (MIC)
• Реализовано в Windows Vista, Windows Server
2008 и Windows 7
•
Процессы выполняются на одном из четырех
уровней целостности (Integrity Levels):
–
–
–
–
Системные процессы - System IL
Приложения с привилегиями администратора - High IL
Стандартные приложения - Medium IL
Приложения с ограничениями - Low IL
• Защищаемые объекты (файлы, процессы, очереди
сообщений и т.п.) задают минимальный уровенб
процесса для доступа к ним
–
Уровень для объектов по умолчанию: Medium
Изоляция привилегий интерфейса
• UI Privilege Isolation (UIPI)
• Использует MIC для запрета посылки
сообщений между окнами
– Приложения не могут посылать сообщения
приложениям, выполняющися с более высоким IL
– Приложения с более высоким IL могут разрешить
прием сообщений
– SendMessage() не возвращает ошибок
• Исправление: функция
ChangeWindowsMessageFilter()
Изоляция сессии 0
Session 0
Windows Station
Desktop
Services
1st User’s
Window
1st User’s
Window
1st User’s
Window
Screen Saver
Login
Сессии в Windows
XP/2000/2003
Возможность атаки
Изоляция сессии 0
• Выполнение системных сервисов и
пользовательских приложений в сессии 0
может привести к нарушению безопасности
– Потенциальная возможность обмена между
сервисами и приложениями
– Потенциальная возможность повышения
привилегий
• Выполнение сервисов и приложений в
различных сессиях существенно снижает
возможность атак, повышает стабильность,
надежность и защищенность системы
Изоляция сессии 0
Session 0
Session 1
Windows Station
Desktop
Windows Station
Desktop
Service
1st User’s
Window
Service
1st User’s
Window
1st User’s
Window
Screen Saver
Login
Сессии в
Windows Vista и
Windows 7
Secure
Совместимость
• Если приложение работает под Windows
Vista, оно будет работать и под Windows
7, но есть нюансы...
«Новое» в Windows 7
•
•
•
•
•
•
•
•
Версия операционной системы
Версия Internet Explorer
Библиотеки (File Libraries)
Windows Mail
Новые компоненты системного уровня
IE DEP
Windows Server 64 Bit
WOW64 on Windows Core
Версия операционной системы
• Windows 7 == Windows 6.1?
– dwMajorVersion = остается прежней
– dwMinorVersion = изменена
• Исправления
– Проверяйте не версию, а возможности
системы
– Используйте операцию >=
– Используйте Version lies
Version Lies
•
•
•
•
•
•
Win95VersionLie
WinNT4SP5VersionLie
Win98VersionLie
Win2000VersionLie
Win2000SP1VersionLie
Win2000SP2VersionLie
•
•
•
•
•
•
•
Win2000SP3VersionLie
WinXPVersionLie
WinXPSP1VersionLie
WinXPSP2VersionLie
Win2K3RTMVersionLie
Win2K3SP1VersionLie
VistaRTMVersionLie
Version Lie Layers
•
•
•
•
•
•
Win95
NT4SP5
Win98
Win2000
Win2000SP2
Win2000SP3
•
•
•
•
•
•
•
WinXP
WinXPSP1
WinXPSP2
WinXPSP2VersionLie
WinSrv03
WinSrv03SP1
VistaRTM
Layers vs. Version Lies
VistaRTM :
– DelayAppDllMain
– ElevateCreateProcess
– FailObsoleteShellAPIs
– FaultTolerantHeap
– GlobalMemoryStatus2GB
– HandleBadPtr
–
–
–
–
–
–
NoGhost
RedirectMP3Codec
VirtualRegistry
VistaRTMVersionLie
WRPDllRegister
WRPMitigation
Версия Internet Explorer
• Без режима совместимости:
– Mozilla/4.0 (compatible; MSIE 8.0; Windows
NT 6.1; WOW64; Trident/4.0; SLCC2; .NET
CLR 2.0.50727; .NET CLR 3.5.30729; .NET
CLR 3.0.30729; Media Center PC 6.0)
• С режимом совместимости:
– Mozilla/4.0 (compatible; MSIE 7.0; Windows
NT 6.1; WOW64; Trident/4.0; SLCC2; .NET
CLR 2.0.50727; .NET CLR 3.5.30729; .NET
CLR 3.0.30729; Media Center PC 6.0)
Библиотеки (File Libraries)
• По умолчанию для общих диалоговых
панелей: Documents Library
• Библиотеки – это файлы (а не папки)
• IFileDialog->GetFolder() +
IFileDialog->GetFilename() не корректно
работают с библиотеками
– GetFolder() возвращает файл
• Исправление
– Используйте IFileDialog->GetResult()
Windows Mail
• Отсутствующий компонент – заменен на
Windows Live Mail или почтовый клиент по
выбору
• Все API работают, за исключением API,
отображающих интерфейсы
• Обработчики протоколов и файлов не
зарегистрированы
• Исправления
– Не использовать вызовы устаревших API
– Установить почтовый клиент
CoStartOutlookExpress
msoert2.dll
CALL
TEST
JZ
LEA
PUSH
CALL
TEST
JZ
PUSH
PUSH
CALL
Section .text (0x43D01000)
DWORD PTR [KERNEL32.DLL!GetModuleFileNameW]
EAX,EAX
0x43D0A613
EAX,[EBP-0x20C]
EAX
DWORD PTR [SHLWAPI.DLL!PathFindFileNameW]
EAX,EAX
0x43D0A60C
'WinMail.exe'
EAX
DWORD PTR [MSVCRT.DLL!_wcsicmp]
Новые компоненты системного
уровня
• Реорганизация компонентов системы
– Пример: функциональность из kernel32.dll
и advapi32.dll перенесена в kernelbase.dll
• Экпортированные функции
перенаправляются в соответствующие
библиотеки
• Приложения, использующие внутренние
функции и структуры могут не работать
IE DEP
• Data Execution Prevention (NX) – опция
включена по умолчанию
• Плагины, которые не совместимы с DEP,
могут привести к краху браузера
• Исправления:
– Используйте DEP-совместимые библиотеки
(ATL)
– Используйте опцию компоновщика
/NXCOMPAT
Windows Server 64 Bit
• Драйвера
– Перенос и подписание 64-битных драйверов
• 32-битный код
– Должен работать под WOW64
– IsWow64Process
• 32-битные плагины
– Перенос на 64-бита для 64-битных процессов
типа Explorer
• 16-битный код
– Перенос на 32- или 64-бита
WOW64 on Windows Core
• По умолчанию 32-битный код работать не
будет
–
–
–
–
Active Directory
Active Directory Lightweight Directory Services
Web server
Сторонние приложения
• Исправления:
– Перенос на 64-бита
– Установка компонента WOW64
Switchback
• Секция CompatibilityInfo в манифесте
приложения – указание на ОС, для которой
создано приложение
– Windows SxS
• Нет секции CompatibilityInfo ==
совместимость с Vista
• Поддержка компонентов в Windows 7:
– APIs: GetOverlappedResult, ReadFileEx
– RPC exception handling, thread pool mgmt.
– DWM fail/lock bit blitting
Switchback Manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<compatibility
xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 7 supported -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2da2440225f93a}"/>
</application>
</compatibility>
</assembly>
Полезные утилиты
Полезные утилиты
• Системные утилиты
– MSConfig
– Новая информация о системе
• SysInternals
– Process Explorer
– Process Monitor
• Средства отладки
– Standard User Analyzer
– Application Verifier
– Debugging Tools for Windows
Системные утилиты
• MSConfig
– Start | Run | MSConfig
• System Information
– Start | Run | MSInfo32.exe
• Event Viewer
– Start | Run | EventVwr.exe
Process Explorer
• Полезные возможности
–
–
–
–
Определение сервисов
Отображение загруженных модулей
Отображение используемых ссылок
Поиск модулей/ссылок
• ProcExp.exe
Process Monitor
• Новая версия, совместимая с Vista/WS08
• Объединяет RegMon и FileMon
• Новая возможность – создание образов
• ProcMon.exe
SysInternals
• http://www.microsoft.com/technet/
sysinternals/
Standard User Analyzer
• Часть Application Compatibility Toolkit (ACT)
• Использует AppVerifier APIs
• Более «удобная» версия тестов LuaPriv
Application Verifier
• Назначение
– Application Verifier – средство проверки
неуправляемого кода
– Помогает обнаружить ошибки, пропущенные
при обычном тестировании приложений
• Использование
– Графический интерфейс (GUI)
– Интерфейс командной строки (CUI)
– COM-интерфейсы для скриптинга
• AppVerif.exe
Application Verifier - GUI
• Включить/Отключить проверки для
конкретного приложения
• Настройка свойств для каждой проверки
• Просмотр протокола проверки
• И т.д.
68% падений приложений
можно было бы
идентифицировать с помощью
App Verifier
Отладка
• Расширения отладчика
– Команды Windbg, специфичные для AppVerifier
• Тесты
– LUAPriv
– Basic
Exceptions
Handles
Heaps
Locks
Memory
TLS
– Low Resource Simulation
Новое в Windows 7
• Problem Step Recorder
– %windir%\system32\psr.exe
– Позволяет выполнить пошаговую запись
возникновения проблемы
– Создает zip-файл с mht-файлом
– Интеграция с Watson
Новое в Windows 7
• Windows Troubleshooting
– Встроенные средства решения проблем
– Доступ через Action Center
• Control Panel | All Items | Action Center |
Troubleshooting
– Расширяемость
• Windows SDK: TSPBuilder.exe
• Скрипт на PowerShell
ACF – решение проблем
совместимости приложений
• Application Compatibility Factory
является лабораторией решения
проблем совместимости приложений с
клиентскими операционными
системами Майкрософт нового
поколения – Windows Vista, Windows 7,
организованной на базе КОМПАНИИПАРТНЕРА
Ищем партнера в России
• Цель сотрудничества между Майкрософт и
компанией-партнером Application
Compatibility Factory – организация
профессиональной базы решения проблем
совместимости приложений для
предприятий, планирующих миграцию на
Windows Vista или Windows 7.
• Если Ваша компания заинтересована в
сотрудничестве – просьба отправить
короткий e-mail на oswru@microsoft.com с
темой ACF.
Download