2. Разработка безопасного ПО
Статистика уязвимостей в ИТ индустрии
Методы работы Microsoft c
уязвимостями
Реагирование на инциденты
Тестирование и выпуск обновлений
3. Как MS обрабатывает уязвимости?
Почему MS выпускает так много
обновлений?
Почему выпуск обновления занимает
столько времени?
Как MS тестирует обновления перед
выпуском?
Как MS может помочь партнерам и
сообществу?
4. TwC – Trustworthy Computing
MSRC - Microsoft Security Response Center
MMPC – Microsoft Malware Protection Center
MSEC – Microsoft Security Engineering Center
SSIRP – Software Security Incident Response
Process
MAPP – Microsoft Active Protections Program
MSVR – Microsoft Vulnerability Research
SDL – Security Development Lifecycle
Security update = “патч”
5. Уязвимость – дефект в ПО позволяющий
атакующему скомпрометировать
целостность, доступность или
конфиденциальность ПО или
обрабатываемых данных
Самыми тяжелыми считаются уязвимости
позволяющие атакующему запускать свой
код
Раскрытие уязвимости – обнародование ее
публично в открытых источниках
6. Ручная проверка кода и автоматические
инструменты такие как фаззинг, статический
анализ весьма полезны, но они не могут
выявить всех уязвимостей в крупном
программном проекте.
Факторы увеличения количества уязвимостей:
Сложность кода
Бесконечность путей которыми креативный
разработчик может создать уязвимость
>8 миллионов разработчиков ПО для Windows
Исследователи будут продолжать обнаруживать
уязвимости несмотря на использование нами лучших
практик в разработке
7.
8. Иллюстрация того насколько малозаметными
могут быть уязвимости. Этот маленький кусок кода
содержит уязвимость трудно обнаруживаемую
стандартными инструментами и ручными
проверками кода
bool fAllowAccess = true;
If (AccessCheck(…) == 0 && GetLastError()
==ERROR_ACCESS_DENIED)
fAllowAccess = false;
9. Иллюстрация того насколько малозаметными
могут быть уязвимости. Этот маленький кусок кода
содержит уязвимость трудно обнаруживаемую
стандартными инструментами и ручными
проверками кода
bool fAllowAccess = false;
If (AccessCheck(…) != 0 && GetLastError()
==ERROR_ACCESS_DENIED)
fAllowAccess = true;
Нарушение принципа “fail closed”
12. Миф о безопасности ПО с открытым кодом?
http://www.h-online.com/security/news/item/Vulnerabilities-in-Microsoft-Office-and-OpenOffice-
compared-1230956.html
13. Sun Solaris 10 1191
Red Hat Enterprise Linux Server v.5 1580
FreeBSD 6.x 86
Microsoft Windows Server 2008 302
Apple Mac OS X – 1555
Red Hat Enterprise Linux Client v.5 1709
Ubuntu Linux 8.04 (выпуск 2008 год) 1397
Windows XP (выпуск 2001 год) 498
Windows 7 170
Oracle Database 11.x 315
IBM DB2 9.x 98
MySQL 5.x 66
Microsoft SQL Server 2008 1
Mozilla Firefox 4.0 (04.2011) 14 Firefox 3.5.x (2009) 161
Opera 11 (10.2010) 10 Opera 9.x (2008) 56
Google Chrome 11 (04.2011) 30 Chrome 5.x (5.2010) 56
Microsoft Internet Explorer 9 (03.2011) 18 Explorer 8.x (3.2009) 104
Cisco ASA 7.x 71
Microsoft ISA Server 2006 7
Microsoft Forefront TMG 2
В ядре Linux 2.6 — 596 уязвимостей . Почти в 3 раза больше уязвимостей чем в Windows 7
14. Обслуживание более чем миллиарда систем вокруг света
Раздаем 1-1,5 петабайта обновлений ежемесячно
15. Цели
Уменьшить влияние на разнородную
экосистему более чем миллиарда
систем на планете
Снижать стоимость применения
обновлений для клиентов
Защищать от криминальной
активности
17. MSRC получает более 150.000 сообщений в
год по адресу secure@microsoft.com или
анонимные сообщения на вебсайте TechNet
Security
MSRC расследует: существует ли уязвимость,
какие компоненты и продукты затронуты
В течении года получается:
~1000 подтвержденных проблем
~100 обновлений суммарно для всех продуктов
Microsoft
Стандартный цикл поддержки продукта 10 лет.
Это очень долго!
18. Не традиционные отчеты
Subject: “yo ~new vuln ”
2005 – MSRC 5879 – MS05-039 - Zotob
Исследователь прислал proof-of-concept
В формате Tarball
Для запуска требовался CYGWIN
Первоначальный ответ “No repro”
19. Все еще не традиционные отчеты
Subject: 你会来参加我的马来西亚朋友的聚会吧?
Критерии открытия кейса
Репутация исследователя (Пример: Yamata Li, ZDI, iDefense
и.т.д)
Не покрывается 10 законами безопасности (потенциал стать
уязвимостью)
Не дублирует уже известный публично случай
Не дублирует известный случай “Won’t fix”
21. Почему может потребоваться много времени?
Три фактора могу повлиять на
скорость выпуска обновлений
Минимизация количества обновлений
Одновременность выпуска
Тестирование совместимости с
приложениями
22. Избегаем повторного выпуска
обновлений или выпуска нескольких
обновлений для одного и того же
компонента
“Поиск вариаций”
Помним о цикле поддержки в 10 лет
Учимся на ошибках – MS03-026 (Blaster)
MS03-045 выпускался 4 раза
http://www.microsoft.com/technet/security/bulletin/ms03-
026.mspx
23. Часто уязвимость влияет на несколько продуктов или
компонентов. Необходим одновременный выпуск во
избежание 0-day.
Учимся на ошибках:
MS04-028 (14 сентября 2004) закрыл уязвимость в
GDI+ влиявшую на 53 отдельных продукта
Не тривиально с точки зрения инженера
Продукты и компоненты меняются от релиза к релизу
Часто уязвимость нового продукта существует и в
старом продукте
Вариации требуют разных исправлений и разного
тестирования
24. “Интернет сломан” – уязвимость в дизайне
протокола DNS найдена в 2008
Повлияло на множество производителей ПО.
Угадайте о ком кричала пресса?
Microsoft возглавил комитет производителей
ПО и помог решить проблему совместными
усилиями
Выпущен бюллетень MS08-037
25. Минимизация проблем с совместимостью приложений требует
тестирования огромного количества приложений. Матрица
тестирования разрастается очень быстро.
Обновления безопасности Windows тестируются на:
Всех версиях подверженных уязвимости ОС
Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7 и
Windows Server 2008 R2
Разных SKU Windows
Home Basic, Home Premium, Business, Ultimate, и.тд.
Разных сервис паках Windows и уровнях (QFEs)
Разных языковых локализациях Windows
Разных процессорных архитектурах
x86, x64 и Itanium
И более того тестируются ~3000
распространенных семейств приложений…
26. Группы приложений X версии ОС X SKU
160 16 bit Applications
140 Business & Home Office
120 Client Applications
100 Communication & Internet
80 Development Tools
60 Enterprise Applications
40 Games
20 Graphics & Design
0 Graphics & Printing
Home & Education
International Language
Applications
Kids' & Educational
Line of Business
Media Applications
Music & MP3 , Photo &
Video
Networking
Other Category Apps
Photo & Video Category
Security
Server Apps
Shimmed Applications
Tax & Finance
27. Security Update Validation Program (SUVP)
запущена в 2005 году
Перед выпуском обновления даются группе
клиентов под соглашение о неразглашении
(NDA)
Позволяет протестировать на широком наборе
сред и конфигураций
Участники сообщают о найденных проблемах
Данные об исправляемых уязвимостях и
способах эксплуатации не раскрываются
http://blogs.technet.com/b/msrc/archive/2005/03/15/403612.
aspx
28. Мы прилагаем много усилий для
тестирования сторонних приложений
для того чтобы не беспокоить конечного
клиента.
Тестирования на совместимость со
зловредами установленными у
конечного клиента не происходит.
29. MS10-015 локальное повышение
привилегий в ядре Windows
Обновление внесло изменения в
регистры ядра используемые руткитом
Alureon для сокрытия себя в системе
Изменения привели к возникновению
BSOD на зараженных системах
30. До Windows 98 обновления безопасности Microsoft
публиковались на вебсайте Microsoft Download Center
Полезный урок:
Уязвимость в Microsoft SQL Server 2000 закрыта в MS02-039
выпущенном 24 июля 2002
Процесс установки был сложен и трудоемок. Утилит поиска уязвимых
систем не было.
Через 6 месяцев червь SQL Slammer начал распространяться
Между июнем и августом 1998 Microsoft провела 12 “Patch
Tuesdays”
WU/MU и “Patch Tuesday” помогли формализовать процесс
31. Время непрерывной работы критично
Перезапуск выполняется только если нужные
файлы заняты самой ОС
Мы ищем пути дальнейшего уменьшения
количества рестартов
Один бюллетень часто закрывает несколько
уязвимостей из базы (CVE)
32. Соотношение бюллетеней Microsoft и уязвимостей из CVE за период 1П06–1П10
120 114
104
98 97
100
85
78
80
Security
Bulletins
57 58
60 51
46 47
42 41
40 35 34 36
32
27
20
0
1H06 2H06 1H07 2H07 1H08 2H08 1H09 2H09 1H10
Источник: Microsoft Security Intelligence Report Volume 9
33. Соотношение бюллетеней Microsoft и уязвимостей из CVE за период 1П06–1П10
3,5 3,1
3,0 2,8
2,5 2,2 2,3 2,2
2,1
2,0 1,8
1,5 1,6
1,5
1,0
0,5
0,0
1H06 2H06 1H07 2H07 1H08 2H08 1H09 2H09 1H10
Источник: Microsoft Security Intelligence Report Volume 9
34. Безопасность является проблемой всей ИТ
индустрии
Ежегодно обнаруживаются тысячи
уязвимостей
Большинство из них в сторонних приложениях и
чаще всего критические
MSRC делится информацией собранной в
процессе исследования уязвимостей с
партнерами и сообществом
35. Мы считаем что идеальным вариантом
раскрытия является приватное уведомление
создателя ПО дающее ему достаточно
возможностей для выпуска обновления до
того как уязвимость станет публично
известной.
В идеале выпуск обновления предшествует
или совпадает с публичным оглашением
уязвимости
http://blogs.technet.com/b/ecostrat/archive/2010/07/22/coordinated-
vulnerability-disclosure-bringing-balance-to-the-force.aspx
36. График раскрытия уязвимостей в ПО Microsoft период 1П05–1П10
100%
90%
80%
Full
70% Disclosure
60%
Vulnerability
50%
Broker Cases
40%
30% Other
Coordinated
20% Disclosure
10%
0%
1H06 2H06 1H07 2H07 1H08 2H08 1H09 2H09 1H10
Full Disclosure 100 169 164 82 110 128 80 101 86
Vulnerability Broker Cases 25 24 17 30 71 43 41 45 30
Other Coordinated Disclosure 208 241 217 247 323 264 270 377 295
Источник: Microsoft Security Intelligence Report Volume 9
37. Обновление и бюллетеней выпущено за период 1П05 и 2П10
Период Бюллетеней Внеочередных бюллетеней
безопасности безопасности
1П05 33 0
2П05 21 0
1П06 32 1
2П06 46 1
1П07 35 1
2П07 34 0
1П08 36 0
2П08 42 2
1П09 27 0
2П09 47 2
1П10 30 2
2П10 65 2
Всего 448 11
Источник: Microsoft Security Intelligence Report – www.microsoft.com/sir
38.
39. Sourcefire считает что до введения MAPP требовалось ~8 часов для реверс
инжиниринга обновления, поиска уязвимости и разработки эксплоита. Затем
нужно было потратить время на пути детектирования эксплоита.
8 часов достаточно профессиональному атакующему для разработки своего
эксплоита после публичного раскрытия уязвимости
MAPP дал возможность сократить процесс до 2 часов. Теперь нужно
разрабатывать только детектирование эксплоита. В результате защита
обновляется раньше на много часов чем появится первый публичный эксплоит.
40. Microsoft уведомляет приватно
производителей стороннего ПО об
уязвимостях последние несколько
лет
Microsoft Vulnerability Research
(MSVR) позволяет построить
устойчивые связи между
производителями ПО и защищаться
сообща
41. GIAIS – содружество провайдеров
Интернет
OTIS – данные о текущих угрозах
VIA – обмен данными о вирусах, троянах и
прочих зловредах
MVI – форму для обмена данными о
борьбе с вирусными эпидемиями
MSRA – Microsoft Security Response
Alliance
MAPP – Microsoft Active Protections
Program
MSVR – Microsoft Vulnerability Research
SUVP - Security Update Validation Program
42. Управление уязвимостями в Microsoft
SDL - разработка безопасного ПО
Security Intelligence Report
Microsoft Security Update Guide
Microsoft Security Response Center
Microsoft Malware Protection Center
Trustworthy Computing blogs
43.
44. Данные о количестве атак и заражений были собраны с
600 миллионов компьютеров обслуживаемых
средствами безопасности Microsoft такими как:
• Malicious Software Removal Tool
• Microsoft Security Essentials
• Windows Defender
• Microsoft Forefront Client Security
• Windows Live OneCare
• Windows Live OneCare safety scanner
• Bing
http://www.microsoft.com/security/sir/
47. SEHOP SEHOP
Включено по Heap Heap Критические уязвимости через
Win7
умолчанию
Выключено по
terminate terminate
год после выпуска
DEP DEP
умолчанию 70
ASLR ASLR
SEHOP SEHOP SEHOP 60
Vista Heap Heap Heap 50
SP1, terminate terminate terminate
SP2 DEP DEP DEP 40
ASLR ASLR ASLR 30
SEHOP SEHOP
Heap Heap 20
Vista
terminate terminate 10
RTM
DEP DEP
ASLR ASLR 0
SEHOP SEHOP SEHOP Windows XP Windows Vista Windows 7
Heap Heap Heap
XP
terminate terminate terminate
SP3
DEP DEP DEP
ASLR ASLR ASLR
SEHOP SEHOP SEHOP
Heap Heap Heap
XP
terminate terminate terminate
SP2
DEP DEP DEP
ASLR ASLR ASLR
IE 6 IE 7 IE 8 IE 9