Совместимость приложений

44
Совместимость приложений Баркан Георгий [email protected]

Upload: ifama

Post on 27-Jan-2016

59 views

Category:

Documents


3 download

DESCRIPTION

Совместимость приложений. Баркан Георгий [email protected]. Ключевые проблемы. Windows Vista, Windows Server 2008 и Windows 7. Версия операционной системы. Внутренний номер версии в Windows Vista/Server 2008/ Windows 7 (функция GetVersion ) = 6 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Совместимость приложений

Совместимость приложений

Баркан Георгий[email protected]

Page 2: Совместимость приложений

User Account Control (UAC)

Windows Resource Protection

(WRP)

Mandatory Integrity Control (MIC)

Версия операционной системы

Изоляция сессии 0

Windows Vista, Windows Server 2008 и Windows 7

Ключевые проблемы

Page 3: Совместимость приложений

Версия операционной системы

• Внутренний номер версии в Windows Vista/Server 2008/Windows 7 (функция GetVersion) = 6

• Версия Internet Explorer - 7.0/8.0– Версия включена в строку User Agent– Строка User Agent включается в заголовок

каждого HTTP запроса• Измените код – нужна проверка типа >= 6• GetVersionEx()

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

Page 4: Совместимость приложений

Версия операционной системы

54% всех ошибок,

связанных с совместимостью

Page 5: Совместимость приложений

User Account Control

• Операционная система подвергается существенным рискам когда пользователь работает под учетной записью Administrator– Более простая установка вредоносного

кода– Возможность повышения привилегий– Открытость для вредоносного кода

• Случайные повреждения, вносимые пользователем

Page 6: Совместимость приложений

User Account Control

• User Account Control• Manifest• Standard User vs. Administrator• Virtualization

Page 7: Совместимость приложений

User Account Control

Page 8: Совместимость приложений

Windows Resource Protection

• Ключевые файлы операционной системы и ключи реестра могут быть заменены на предыдущие версии или вредоносный код – ущерб стабильности и безопасности системы

• Задача Windows Resource Protection – защита ключевых компонентов операционной системы, увеличение стабильности, предсказуемости и надежности системы

Page 9: Совместимость приложений

Windows Resource Protection

• Запрещены обновления защищенных ресурсов– Только программы установки, известные ОС

(Windows Update)– ACL для ресурсов

• Распространяется на файлы, папки и ключи реестра– Большинство ключевых модулей ОС (EXE и

DLL) – Большинство ключей реестра (HKCR) – Папки, используемые ресурсами ОС

• Проверка– SfcIsFileProtected() - файлы– SfcIsKeyProtected() – ключи реестра

Page 10: Совместимость приложений

Mandatory Integrity Control (MIC)

• Реализовано в Windows Vista, Windows Server 2008 и Windows 7

• Процессы выполняются на одном из четырех уровней целостности (Integrity Levels):– Системные процессы - System IL– Приложения с привилегиями администратора - High

IL– Стандартные приложения - Medium IL– Приложения с ограничениями - Low IL

• Защищаемые объекты (файлы, процессы, очереди сообщений и т.п.) задают минимальный уровенб процесса для доступа к ним– Уровень для объектов по умолчанию: Medium

Page 11: Совместимость приложений

Изоляция привилегий интерфейса

• UI Privilege Isolation (UIPI)• Использует MIC для запрета посылки

сообщений между окнами– Приложения не могут посылать сообщения

приложениям, выполняющися с более высоким IL

– Приложения с более высоким IL могут разрешить прием сообщений

– SendMessage() не возвращает ошибок

• Исправление: функция ChangeWindowsMessageFilter()

Page 12: Совместимость приложений

Изоляция сессии 0Session 0

Windows StationDesktop

Screen Saver

Login

Services

1st User’sWindow

1st User’sWindow

1st User’sWindow

Возможность атаки

Сессии в Windows XP/2000/2003

Page 13: Совместимость приложений

Изоляция сессии 0

• Выполнение системных сервисов и пользовательских приложений в сессии 0 может привести к нарушению безопасности– Потенциальная возможность обмена

между сервисами и приложениями– Потенциальная возможность повышения

привилегий

• Выполнение сервисов и приложений в различных сессиях существенно снижает возможность атак, повышает стабильность, надежность и защищенность системы

Page 14: Совместимость приложений

Изоляция сессии 0Session 0

Windows StationDesktop

Service

Service

Session 1

Windows StationDesktop

Screen Saver

Login

1st User’sWindow

1st User’sWindow

1st User’sWindow

SecureСессии в

Windows Vista и Windows 7

Page 15: Совместимость приложений

Совместимость

• Если приложение работает под Windows Vista, оно будет работать и под Windows 7, но есть нюансы...

Page 16: Совместимость приложений

«Новое» в Windows 7

• Версия операционной системы• Версия Internet Explorer• Библиотеки (File Libraries)• Windows Mail• Новые компоненты системного

уровня• IE DEP• Windows Server 64 Bit• WOW64 on Windows Core

Page 17: Совместимость приложений

Версия операционной системы

• Windows 7 == Windows 6.1?– dwMajorVersion = остается прежней– dwMinorVersion = изменена

• Исправления– Проверяйте не версию, а

возможности системы– Используйте операцию >=– Используйте Version lies

Page 18: Совместимость приложений

Version Lies

• Win95VersionLie• WinNT4SP5VersionLie• Win98VersionLie• Win2000VersionLie• Win2000SP1VersionLie• Win2000SP2VersionLie

• Win2000SP3VersionLie• WinXPVersionLie• WinXPSP1VersionLie• WinXPSP2VersionLie• Win2K3RTMVersionLie• Win2K3SP1VersionLie• VistaRTMVersionLie

Page 19: Совместимость приложений

Version Lie Layers

• Win95• NT4SP5• Win98• Win2000• Win2000SP2• Win2000SP3

• WinXP• WinXPSP1• WinXPSP2• WinXPSP2VersionLi

e• WinSrv03• WinSrv03SP1• VistaRTM

Page 20: Совместимость приложений

Layers vs. Version LiesVistaRTM :

– DelayAppDllMain– ElevateCreateProcess– FailObsoleteShellAPIs– FaultTolerantHeap– GlobalMemoryStatus

2GB– HandleBadPtr

– NoGhost– RedirectMP3Code

c– VirtualRegistry– VistaRTMVersionL

ie– WRPDllRegister– WRPMitigation

Page 21: Совместимость приложений

Версия 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)

Page 22: Совместимость приложений

Библиотеки (File Libraries)

• По умолчанию для общих диалоговых панелей: Documents Library

• Библиотеки – это файлы (а не папки)• IFileDialog->GetFolder() +

IFileDialog->GetFilename() не корректно работают с библиотеками– GetFolder() возвращает файл

• Исправление– Используйте IFileDialog->GetResult()

Page 23: Совместимость приложений

Windows Mail

• Отсутствующий компонент – заменен на Windows Live Mail или почтовый клиент по выбору

• Все API работают, за исключением API, отображающих интерфейсы

• Обработчики протоколов и файлов не зарегистрированы

• Исправления– Не использовать вызовы устаревших API– Установить почтовый клиент

Page 24: Совместимость приложений

CoStartOutlookExpress

msoert2.dll Section .text (0x43D01000)CALL DWORD PTR [KERNEL32.DLL!GetModuleFileNameW]TEST EAX,EAXJZ 0x43D0A613LEA EAX,[EBP-0x20C]PUSH EAXCALL DWORD PTR [SHLWAPI.DLL!PathFindFileNameW]TEST EAX,EAXJZ 0x43D0A60CPUSH 'WinMail.exe'PUSH EAXCALL DWORD PTR [MSVCRT.DLL!_wcsicmp]

Page 25: Совместимость приложений

Новые компоненты системного уровня

• Реорганизация компонентов системы– Пример: функциональность из

kernel32.dll и advapi32.dll перенесена в kernelbase.dll

• Экпортированные функции перенаправляются в соответствующие библиотеки

• Приложения, использующие внутренние функции и структуры могут не работать

Page 26: Совместимость приложений

IE DEP

• Data Execution Prevention (NX) – опция включена по умолчанию

• Плагины, которые не совместимы с DEP, могут привести к краху браузера

• Исправления:– Используйте DEP-совместимые

библиотеки (ATL)– Используйте опцию компоновщика

/NXCOMPAT

Page 27: Совместимость приложений

Windows Server 64 Bit

• Драйвера– Перенос и подписание 64-битных драйверов

• 32-битный код– Должен работать под WOW64– IsWow64Process

• 32-битные плагины– Перенос на 64-бита для 64-битных

процессов типа Explorer

• 16-битный код– Перенос на 32- или 64-бита

Page 28: Совместимость приложений

WOW64 on Windows Core

• По умолчанию 32-битный код работать не будет– Active Directory– Active Directory Lightweight Directory

Services– Web server– Сторонние приложения

• Исправления:– Перенос на 64-бита– Установка компонента WOW64

Page 29: Совместимость приложений

Switchback

• Секция CompatibilityInfo в манифесте приложения – указание на ОС, для которой создано приложение– Windows SxS

• Нет секции CompatibilityInfo == совместимость с Vista

• Поддержка компонентов в Windows 7:– APIs: GetOverlappedResult, ReadFileEx– RPC exception handling, thread pool mgmt.– DWM fail/lock bit blitting

Page 30: Совместимость приложений

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-8e2d-a2440225f93a}"/> </application> </compatibility></assembly>

Page 31: Совместимость приложений

Полезные утилиты

Page 32: Совместимость приложений

Полезные утилиты

• Системные утилиты– MSConfig– Новая информация о системе

• SysInternals– Process Explorer– Process Monitor

• Средства отладки– Standard User Analyzer– Application Verifier– Debugging Tools for Windows

Page 33: Совместимость приложений

Системные утилиты

• MSConfig– Start | Run | MSConfig

• System Information– Start | Run | MSInfo32.exe

• Event Viewer – Start | Run | EventVwr.exe

Page 34: Совместимость приложений

Process Explorer

• Полезные возможности– Определение сервисов– Отображение загруженных модулей– Отображение используемых ссылок– Поиск модулей/ссылок

• ProcExp.exe

Page 35: Совместимость приложений

Process Monitor

• Новая версия, совместимая с Vista/WS08 • Объединяет RegMon и FileMon• Новая возможность – создание образов

• ProcMon.exe

Page 36: Совместимость приложений

SysInternals

• http://www.microsoft.com/technet/

sysinternals/

Page 37: Совместимость приложений

Standard User Analyzer• Часть Application Compatibility Toolkit (ACT)• Использует AppVerifier APIs• Более «удобная» версия тестов LuaPriv

Page 38: Совместимость приложений

Application Verifier• Назначение– Application Verifier – средство проверки

неуправляемого кода– Помогает обнаружить ошибки,

пропущенные при обычном тестировании приложений

• Использование– Графический интерфейс (GUI)– Интерфейс командной строки (CUI)– COM-интерфейсы для скриптинга

• AppVerif.exe

Page 39: Совместимость приложений

Application Verifier - GUI• Включить/Отключить проверки для

конкретного приложения• Настройка свойств для каждой

проверки• Просмотр протокола проверки• И т.д.

68% падений приложений можно было бы

идентифицировать с помощью App Verifier

Page 40: Совместимость приложений

Отладка

• Расширения отладчика– Команды Windbg, специфичные для AppVerifier

• Тесты– LUAPriv– Basic

ExceptionsHandles HeapsLocksMemoryTLS

– Low Resource Simulation

Page 41: Совместимость приложений

Новое в Windows 7

• Problem Step Recorder–%windir%\system32\psr.exe– Позволяет выполнить пошаговую

запись возникновения проблемы– Создает zip-файл с mht-файлом– Интеграция с Watson

Page 42: Совместимость приложений

Новое в Windows 7

• Windows Troubleshooting– Встроенные средства решения

проблем– Доступ через Action Center• Control Panel | All Items | Action Center |

Troubleshooting

– Расширяемость• Windows SDK: TSPBuilder.exe• Скрипт на PowerShell

Page 43: Совместимость приложений

ACF – решение проблем совместимости приложений

• Application Compatibility Factory является лабораторией решения проблем совместимости приложений с клиентскими операционными системами Майкрософт нового поколения – Windows Vista, Windows 7, организованной на базе КОМПАНИИ-ПАРТНЕРА

Page 44: Совместимость приложений

Ищем партнера в России

• Цель сотрудничества между Майкрософт и компанией-партнером Application Compatibility Factory – организация профессиональной базы решения проблем совместимости приложений для предприятий, планирующих миграцию на Windows Vista или Windows 7.

• Если Ваша компания заинтересована в сотрудничестве – просьба отправить короткий e-mail на [email protected] с темой ACF.