Иван Рузанов Microsoft Corporation. Windows Serviceability Проблемы сопровождения ПО Сопровождение Windows Практика сопровождения Заключение.

Презентация:



Advertisements
Похожие презентации
Microsoft TechDays Людмила Шайкина Quarta Consulting
Advertisements

Новые продукты Microsoft для повышения качества и эффективности образования Амит Миталь Старший вице-президент Microsoft по развитию социальных проектов.
Microsoft TechDays Павел Дугаев Руководитель проектов Вебзавод
Microsoft TechDays Евгений Марченков Эксперт по технологиям разработки ПО Microsoft.
Microsoft TechDays Богомолов Алексей MCP
Microsoft TechDays Заграничнов Александр Microsoft.
Microsoft TechDays Павел Маслов MVP, Directory Services.
Microsoft TechDays Константин Трещев MCITP: Enterprise Administrator
DevCon12 // msdevcon.ru #msdevcon мая, 2012 г. Microsoft.
Microsoft TechDays Николай Миляев консультант Microsoft.
Microsoft TechDays Марат Бакиров Эксперт по разработке ПО Microsoft
Microsoft TechDayshttp:// Коршиков Андрей Фёдорович ведущий инженер-программист ЗАО «НИПИ «ИнжГео» MCT, MCITP, MCPD.
Вычислительные ресурсы и приложения доступные через Интернет в виде сервисов Облачные вычисления.
Будущее режима /hosting в Exchange Иван Макаров Менеджер по маркетингу Exchange Microsoft Россия.
Microsoft TechDays Ксения Хмелёва Специалист по технологиям Microsoft.
Microsoft TechDays Золотовицкий Аркадий Директор по производству «Интеллектуальные системы»
Msdevcon.ru#msdevcon. ПРОФИЛИРОВАНИЕ WINDOWS STORE ПРИЛОЖЕНИЙ Филипп Панфилов Mail.Ru Group.
На примере одного дня из жизни руководителя. Поездка в Милан.
Microsoft TechDays Леонид Шапиро MCT ЦКО «Специалист»
Microsoft TechDays Виталий Дильмухаметов
Транксрипт:

Иван Рузанов Microsoft Corporation

Windows Serviceability Проблемы сопровождения ПО Сопровождение Windows Практика сопровождения Заключение

РазработкаТестированиеПроектирование ?

600 миллионов пользователей 140 миллионов строк кода 36 языков 5 поддерживаемых версий 19 лет разработки

Чем занимается Windows Serviceability Обновления безопасности Регулярные исправления обнаруженных проблем безопасности Исправления Исправления наиболее важных ошибок (OCA, крупные заказчики, партнеры и OEM) Пакеты исправлений Повышение надежности, производительности и снижение стоимости владения Средства диагностики

Core Operating Systems Windows Client Windows Server Windows NT, 2000, XP, Server 2003, Vista Сопровождение Windows: Исправления, Обновления, Пакеты исправлений Передача технологий Совместная работа WinSE

Ограниченное тестирование Ненужные исправления Риск ошибок Vista RTM ntoskrnl.exe Memory Manager Update I/O Manager Update Cache Manager Update !!!

Лучшее – враг хорошего! 8 RTM GDR RTM LDR ntoskrnl.exe Memory Manager Update I/O Manager Update Cache Manager Update !!! GDR – General Distribution Release LDR – Limited Distribution Release

Две ветки: RTM GDR RTM LDR Driver Update Security Update Performance Update Networking Update SP1 SP1 GDR SP1 LDR Storage Update GDR – General Distribution Release LDR – Limited Distribution Release Windows RTM LDR update (a.k.a.Hotfix/QFE) GDR update Dual-Mode LDR update

Множество платформ NT4, W2K, XP, Server 2003, Vista - & SPs Поддержка ОС – не менее 10 лет 3 аппаратных платформы (x86, x64, IA64) Обратная совместимость Унаследованное программное и аппаратное обеспечение Множество приоритетов Обновления безопасности, обычные исправления и пакеты исправлений

11 user32.dll 1.0 gdi32.dll 1.0 user32.dll 1.1 gdi32.dll 1.1 user32.dll 1.3 user32.dll 1.4 user32.dll 1.5 gdi32.dll 1.1 gdi32.dll 1.1 gdi32.dll 1.1 user32.dll 1.2 gdi32.dll 1.1 user32.dll 1.0 gdi32.dll 1.0 user32.dll 1.4 gdi32.dll 1.1 Оригинальные компоненты (RTM) Исправленные, зависимые компоненты Позже, исправление только в user32.dll… …но все равно приходится добавлять gdi32.dll Каждое исправление user32.dll в будущем… …принесет с собой gdi32.dll Если ставить не все исправления... …и мы бы установили только user32.dll …плохо Зависимые компоненты Всегда поставляются вместе ! Зависимости

basesrv.dll cmd.exe gdi32.dll hfsecper.inf hfsecupd.inf kernel32.dll mf3216.dll mountmgr.sys mountmgrverchk.dll mpr.dll msgina.dll mup.sys ntdll.dll ntkrnlmp.exe ntkrnlpa.exe ntkrpamp.exe ntoskrnl.exe rdpwd.sys sp3res.dll user32.dll userenv.dll win32k.sys winlogon.exe winsrv.dll Зависимости ntoskrnl.exe в Windows 2000

Мораторий: перед выпуском обновлений безопасности, пакетов исправлений и новых версий Мораторий на выпуск исправлений RTM LDR SP1 PRE-RTM Исправления (SP) Исправления (LDR ) Обновления безопасности (GDR) RTM GDR GDR – General Distribution Release LDR – Limited Distribution Release

Приоритеты: 1) Качество 2) Качество 3) Качество 4) Качество 5) Качество 6) Качество 7) Качество...

Приоритеты бизнеса Ресурсы Производительность Качество Исправления Пакеты исправлений Обновления безопасности Риск Пользователи Направления деятельности Баланс между запросами пользователей и риском

Создание обновления безопасности Уязвимость обнаружена Поиск вариантов Разработка исправления Проверка Тестирование Внутреннее развертывание Развертывание среди партнеров Сертификация качества Обновление доступно Сборка обновлений Время на разработку, тестирование и выпуск обновления безопасности

Создание обновления безопасности Обнаружение уязвимости Воспроизведение на всех поддерживаемых ОС, пакетах обновлений и аппаратных платформах Разработка исправления Исправление разрабатывается для всех платформ Поиск вариантов Осуществляется масштабный поиск похожих вариантов уязвимости на всех платформах Автоматическое тестирование искажений форматов файлов, сетевых пакетов и т.п.

Создание обновления безопасности Проверки Стандартная проверка (ревю) самого исправления – разработчики исправления, разработчики соответствующих компонент Windows Архитектурная проверка исправления – разработчики исправления и архитекторы Windows Инженерная проверка исправления и всехпопутных исправлений (для ветки LDR) – разработчики исправлений, ведущие разработчики Windows Serviceability, ведущие разработчики Windows, специалисты по безопасности

Создание обновления безопасности Сборка Код исправления переносится во все необходимые ветки исходного кода Windows Компиляция кода и создание пакетов исправлений Тестирование Ручное и автоматическое тестирование компонент Автоматическое тестирование искажений форматов файлов, сетевых пакетов и т.п. Тестирование системы в целом, включая тестирование обратной совместимости

Создание обновления безопасности Развертывание Обновления безопасности устанавливаются во внутренней сети Microsoft Партеры по безопасности устанавливают обновления в своих системах Выпуск Только если обновление удовлетворяет всем критериям качества оно будет допущено к выпуску Завершенные обновления доступны через Windows Update и Download Center

Обратная совместимость Симптомы: В процессе тестирования Windows 2000 SP популярное приложение перестало работать при установке очередной сборки Приложение успешно работает на всех версиях Windows 2000, Windows XP, но не работает начиная с конкретной сборки Конкретная причина – вызов функции по неопределенному адресу

Проблемы: Приложение работает на всех сборках до N-1 включительно Приложение НЕ работает начиная со сборки N Нет исходных текстов или отладочной информации Проблема проявляется не всегда

Решение Проблема была вызвана ошибкой в приложении: int CompactDatabase(DataBase *DB) { VARIANGARG v1, v2, v3; VariantInit(&v1); VariantInit(&v2); … DB->Compact(&a, &b); … VariantClear(&v3); VariantClear(&v2); VariantClear(&v1); }

STDAPI VariantClear(VARIANTARG FAR* pvarg) { VARTYPE vt; … vt = V_VT(pvarg); … switch(vt){ case VT_BSTR: SysFreeString(V_BSTR(pvarg)); break; case VT_UNKNOWN: case VT_INTERFACE: if(V_UNKNOWN(pvarg) != NULL) V_UNKNOWN(pvarg)->Release(); break; …

Решение: Приложение вызывало VariantClear(&v3) для неинициализированной переменной, тип которой определялся мусором на стеке Конкретное значение мусора поменялось, превратив v3 в COM-интерфейс! Несмотря на то, что эта ошибка всегда была ошибкой самого приложения, нам пришлось исправить операционную систему

Бюллетень по безопасности MS Симптомы: Уязвимость Windows Shell Вектор атаки: при посещении контролируемого хакером узла Интернет Вектор атаки: специально созданный, полностью корректный, ссылочный файл Shell в письме электронной почты Конкретная причина – вызов функции по неопределенному адресу

Проблемы: Это не ошибка, это такая реализация! Механизм подключения расширений Shell позволяет хакеру просить Shell создать объект произвольного COM-класса, установленного в системе и запросить один из интерфейсов Shell ( IShellFolder ) Реальная проблема в ошибочных реализациях IUnknown COM-классов сторонних производителей

Проблемы: Некорректные реализации QueryInterface: HRESULT MyClass::QueryInterface(LPUNKNOWN ps, const IID &riid, void **ppvObj) { … if (IsEqualGUID(iid, IID_IMySpecialInterface)) { *ppvObject = new MySpecialInterfaceClass(); … } else { *ppvObject = this; AddRef(); return S_OK; }

Проблемы: Некорректные реализации QueryInterface фактически возвращают указатель на IUnknown, вне зависимости от того реализуют ли они запрашиваемый интерфейс! Необходимо отделить реальные расширения Shell от мнимых Изменение архитектуры Shell приведет к потере обратной совместимости

Решение: Отдельный процесс ( verclsid.exe ), неподконтрольный хакеру, который проверяет реализует ли конкретный класс запрошенный интерфейс Результаты проверок кэшируются Сторожевой поток, убивающий процесс если он завис Белый и черный списки, позволяющие системным администраторам управлять расширениями Shell

Некорректные реализации DllMain В DllMain запрещено вызывать функции не из kernel32.dll Некорректные расширения Shell вызывают функции COM из DllMain приводя к взаимной блокировке при исполнении ExitProcess ExitProcess убивает все потоки, включаясторожевой, приводя таким образом кзависанию Explorer.exe

Сопровождение крупных программных систем неизбежная необходимость Проблемы сопровождения заставляют искать правильный баланс между потребностями пользователей и риском Поддержание обратной совместимости и одновременное развитие многократно усложняют проблемы сопровождения

Knowledge Base Бюллетень по безопасности MS Knowledge Base Article Verclsid.exe в блоге Раймонда Чена

Иван Рузанов Microsoft Corporation

© 2007 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.