Andrey Beshkov - Behind the Window Update Scenes. From vulnerability to patсh

Preview:

DESCRIPTION

International Security Conference "ZeroNights 2011" - http://www.zeronights.org/

Citation preview

Бешков Андрей Руководитель программы информационной безопасности 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 петабайта обновлений ежемесячно

ЦелиУменьшить влияние на разнородную экосистему более чем миллиарда систем на планете

Снижать стоимость применения обновлений для клиентов

Защищать от криминальной активности

Secure@Microsoft.com

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

Критические уязвимости через год после выпуска