andrey beshkov - behind the window update scenes. from vulnerability to patсh
Post on 05-Dec-2014
875 Views
Preview:
DESCRIPTION
TRANSCRIPT
Бешков Андрей Руководитель программы информационной безопасности Microsoft Россия
http://beshkov.ru
@abeshkov
abeshkov@microsoft.com
Разработка безопасного ПО
Статистика уязвимостей в ИТ индустрии
Методы работы Microsoft c уязвимостями
Реагирование на инциденты
Тестирование и выпуск обновлений
Как MS обрабатывает уязвимости?
Почему MS выпускает так много обновлений?
Почему выпуск обновления занимает столько времени?
Как MS тестирует обновления перед выпуском?
Как MS может помочь партнерам и сообществу?
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 = “патч”
Уязвимость – дефект в ПО позволяющий атакующему скомпрометировать целостность, доступность или конфиденциальность ПО или обрабатываемых данных
Самыми тяжелыми считаются уязвимости позволяющие атакующему запускать свой код
Раскрытие уязвимости – обнародование ее публично в открытых источниках
Ручная проверка кода и автоматические инструменты такие как фаззинг, статический анализ весьма полезны, но они не могут выявить всех уязвимостей в крупном программном проекте.
Факторы увеличения количества уязвимостей:
Сложность кода
Бесконечность путей которыми креативный разработчик может создать уязвимость
>8 миллионов разработчиков ПО для Windows
Исследователи будут продолжать обнаруживать уязвимости несмотря на использование нами лучших практик в разработке
bool fAllowAccess = true;
If (AccessCheck(…) == 0 && GetLastError() ==ERROR_ACCESS_DENIED)
fAllowAccess = false;
Иллюстрация того насколько малозаметными могут быть уязвимости. Этот маленький кусок кода содержит уязвимость трудно обнаруживаемую стандартными инструментами и ручными проверками кода
bool fAllowAccess = false;
If (AccessCheck(…) != 0 && GetLastError() ==ERROR_ACCESS_DENIED)
fAllowAccess = true;
Нарушение принципа “fail closed”
Иллюстрация того насколько малозаметными могут быть уязвимости. Этот маленький кусок кода содержит уязвимость трудно обнаруживаемую стандартными инструментами и ручными проверками кода
Всех производителей.
195 98 124 83 109 98 89 126
1562
1494 1587
1447 1402 1266
1144
1693
1882
1208
1677
1289 1191
1090
0
200
400
600
800
1 000
1 200
1 400
1 600
1 800
2 000
2H06 1H07 2H07 1H08 2H08 1H09 2H09 1H10
Низкая (0 -
3.9)
Средняя (4 -
6.9) Высокая (7 -
10)
Источник: Microsoft Security Intelligence Report Volume 9
Критичность уязвимостей 1П06-1П10
Всех производителей.
3079 3110
2547 2573
2807
2351
2161
1943
259 242 276 310 256 207 237 196
112 122
96 79
0
500
1 000
1 500
2 000
2 500
3 000
3 500
приложения
ОС Браузеры
3 280 3 322
2 822 2 869
3 042
2 594
2 417
2 215
170 152 97 93 146 113 129 145
0
500
1 000
1 500
2 000
2 500
3 000
3 500
не-Microsoft
Microsoft
Уязвимости Microsoft и не-Microsoft
продуктов. Период 1П06-1П10
Уязвимости в ОС, приложениях, Браузерах.
Период 1П06-1П10
Источник: Microsoft Security Intelligence Report Volume 9
http://www.h-online.com/security/news/item/Vulnerabilities-in-Microsoft-Office-and-OpenOffice-
compared-1230956.html
Миф о безопасности ПО с открытым кодом?
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
Обслуживание более чем миллиарда систем вокруг света
Раздаем 1-1,5 петабайта обновлений ежемесячно
ЦелиУменьшить влияние на разнородную экосистему более чем миллиарда систем на планете
Снижать стоимость применения обновлений для клиентов
Защищать от криминальной активности
MSRC получает более 150.000 сообщений в год по адресу secure@microsoft.com или анонимные сообщения на вебсайте TechNet Security
MSRC расследует: существует ли уязвимость, какие компоненты и продукты затронуты
В течении года получается:
~1000 подтвержденных проблем
~100 обновлений суммарно для всех продуктов Microsoft
Стандартный цикл поддержки продукта 10 лет. Это очень долго!
Не традиционные отчеты
Subject: “yo ~new vuln ”
2005 – MSRC 5879 – MS05-039 - Zotob
Исследователь прислал proof-of-concept
В формате Tarball
Для запуска требовался CYGWIN
Первоначальный ответ “No repro”
Все еще не традиционные отчеты Subject: 你会来参加我的马来西亚朋友的聚会吧?
Критерии открытия кейса Репутация исследователя (Пример: Yamata Li, ZDI, iDefense и.т.д)
Не покрывается 10 законами безопасности (потенциал стать уязвимостью)
Не дублирует уже известный публично случай
Не дублирует известный случай “Won’t fix”
Временных границы процессов плавают. Некоторые процессы могут идти
параллельно.
Почему может потребоваться много времени?
Три фактора могу повлиять на скорость выпуска обновлений
Минимизация количества обновлений
Одновременность выпуска
Тестирование совместимости с приложениями
Избегаем повторного выпуска обновлений или выпуска нескольких обновлений для одного и того же компонента
“Поиск вариаций”
Помним о цикле поддержки в 10 лет
Учимся на ошибках – MS03-026 (Blaster) MS03-045 выпускался 4 раза
http://www.microsoft.com/technet/security/bulletin/ms03-026.mspx
http://www.microsoft.com/technet/security/bulletin/MS03-039.mspx
Часто уязвимость влияет на несколько продуктов или компонентов. Необходим одновременный выпуск во избежание 0-day.
Учимся на ошибках:
MS04-028 (14 сентября 2004) закрыл уязвимость в GDI+ влиявшую на 53 отдельных продукта
Не тривиально с точки зрения инженера
Продукты и компоненты меняются от релиза к релизу
Часто уязвимость нового продукта существует и в старом продукте
Вариации требуют разных исправлений и разного тестирования
“Интернет сломан” – уязвимость в дизайне протокола DNS найдена в 2008
Повлияло на множество производителей ПО. Угадайте о ком кричала пресса?
Microsoft возглавил комитет производителей ПО и помог решить проблему совместными усилиями
Выпущен бюллетень MS08-037
Минимизация проблем с совместимостью приложений требует тестирования огромного количества приложений. Матрица тестирования разрастается очень быстро.
Обновления безопасности 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 распространенных семейств приложений…
0
20
40
60
80
100
120
140
160 16 bit Applications
Business & Home Office
Client Applications
Communication & Internet
Development Tools
Enterprise Applications
Games
Graphics & Design
Graphics & Printing
Home & Education
International LanguageApplicationsKids' & Educational
Line of Business
Media Applications
Music & MP3 , Photo &VideoNetworking
Other Category Apps
Photo & Video Category
Security
Server Apps
Shimmed Applications
Tax & Finance
Группы приложений X версии ОС X SKU
Security Update Validation Program (SUVP) запущена в 2005 году
Перед выпуском обновления даются группе клиентов под соглашение о неразглашении (NDA)
Позволяет протестировать на широком наборе сред и конфигураций
Участники сообщают о найденных проблемах
Данные об исправляемых уязвимостях и способах эксплуатации не раскрываются
http://blogs.technet.com/b/msrc/archive/2005/03/15/403612.aspx
Мы прилагаем много усилий для тестирования сторонних приложений для того чтобы не беспокоить конечного клиента.
Тестирования на совместимость со зловредами установленными у конечного клиента не происходит.
MS10-015 локальное повышение привилегий в ядре Windows
Обновление внесло изменения в регистры ядра используемые руткитом Alureon для сокрытия себя в системе
Изменения привели к возникновению BSOD на зараженных системах
До 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” помогли формализовать процесс
Время непрерывной работы критично
Перезапуск выполняется только если нужные файлы заняты самой ОС
Мы ищем пути дальнейшего уменьшения количества рестартов
Один бюллетень часто закрывает несколько уязвимостей из базы (CVE)
Соотношение бюллетеней Microsoft и уязвимостей из CVE за период 1П06–1П10
0
20
40
60
80
100
120
1H06 2H06 1H07 2H07 1H08 2H08 1H09 2H09 1H10
32
46
35 34 36 42
27
47 41
57
98
78
51 58
97
85
104
114
SecurityBulletins
Источник: Microsoft Security Intelligence Report Volume 9
1,8
2,1 2,2
1,5 1,6
2,3
3,1
2,2
2,8
0,0
0,5
1,0
1,5
2,0
2,5
3,0
3,5
1H06 2H06 1H07 2H07 1H08 2H08 1H09 2H09 1H10
Соотношение бюллетеней Microsoft и уязвимостей из CVE за период 1П06–1П10
Источник: Microsoft Security Intelligence Report Volume 9
Безопасность является проблемой всей ИТ индустрии
Ежегодно обнаруживаются тысячи уязвимостей
Большинство из них в сторонних приложениях и чаще всего критические
MSRC делится информацией собранной в процессе исследования уязвимостей с партнерами и сообществом
Мы считаем что идеальным вариантом раскрытия является приватное уведомление создателя ПО дающее ему достаточно возможностей для выпуска обновления до того как уязвимость станет публично известной.
В идеале выпуск обновления предшествует или совпадает с публичным оглашением уязвимости
http://blogs.technet.com/b/ecostrat/archive/2010/07/22/coordinated-
vulnerability-disclosure-bringing-balance-to-the-force.aspx
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
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
FullDisclosure
VulnerabilityBroker Cases
OtherCoordinatedDisclosure
Источник: Microsoft Security Intelligence Report Volume 9
График раскрытия уязвимостей в ПО Microsoft период 1П05–1П10
Обновление и бюллетеней выпущено за период 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
Sourcefire считает что до введения MAPP требовалось ~8 часов для реверс
инжиниринга обновления, поиска уязвимости и разработки эксплоита. Затем
нужно было потратить время на пути детектирования эксплоита.
8 часов достаточно профессиональному атакующему для разработки своего
эксплоита после публичного раскрытия уязвимости
MAPP дал возможность сократить процесс до 2 часов. Теперь нужно
разрабатывать только детектирование эксплоита. В результате защита
обновляется раньше на много часов чем появится первый публичный эксплоит.
Microsoft уведомляет приватно производителей стороннего ПО об уязвимостях последние несколько лет
Microsoft Vulnerability Research (MSVR) позволяет построить устойчивые связи между производителями ПО и защищаться сообща
GIAIS – содружество провайдеров Интернет
OTIS – данные о текущих угрозах
VIA – обмен данными о вирусах, троянах и прочих зловредах
MVI – форму для обмена данными о борьбе с вирусными эпидемиями
MSRA – Microsoft Security Response Alliance
MAPP – Microsoft Active Protections Program
MSVR – Microsoft Vulnerability Research
SUVP - Security Update Validation Program
Присоединяйтесь. Будет интересно!
Управление уязвимостями в Microsoft
SDL - разработка безопасного ПО
Security Intelligence Report
Microsoft Security Update Guide
Microsoft Security Response Center
Microsoft Malware Protection Center
Trustworthy Computing blogs
Данные о количестве атак и заражений были собраны с
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/
Обнаружение зловредного ПО на каждую 1000 запусков антивирусных
средств.
Win7
SEHOP SEHOP
Включено по умолчанию
Heap terminate
Heap terminate
Выключено по умолчанию
DEP DEP
ASLR ASLR
Vista SP1, SP2
SEHOP SEHOP SEHOP
Heap terminate
Heap terminate
Heap terminate
DEP DEP DEP ASLR ASLR ASLR
Vista RTM
SEHOP SEHOP
Heap terminate
Heap terminate
DEP DEP ASLR ASLR
XP SP3
SEHOP SEHOP SEHOP Heap terminate
Heap terminate
Heap terminate
DEP DEP DEP ASLR ASLR ASLR
XP SP2
SEHOP SEHOP SEHOP Heap terminate
Heap terminate
Heap terminate
DEP DEP DEP ASLR ASLR ASLR
IE 6 IE 7 IE 8 IE 9
0
10
20
30
40
50
60
70
Windows XP Windows Vista Windows 7
Критические уязвимости через год после выпуска
top related