47
Бешков Андрей Руководитель программы информационной безопасности Microsoft Россия http://beshkov.ru @abeshkov [email protected]

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

Бешков Андрей Руководитель программы информационной безопасности Microsoft Россия

http://beshkov.ru

@abeshkov

[email protected]

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

Разработка безопасного ПО

Статистика уязвимостей в ИТ индустрии

Методы работы Microsoft c уязвимостями

Реагирование на инциденты

Тестирование и выпуск обновлений

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

Как MS обрабатывает уязвимости?

Почему MS выпускает так много обновлений?

Почему выпуск обновления занимает столько времени?

Как MS тестирует обновления перед выпуском?

Как MS может помочь партнерам и сообществу?

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

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 = “патч”

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

Уязвимость – дефект в ПО позволяющий атакующему скомпрометировать целостность, доступность или конфиденциальность ПО или обрабатываемых данных

Самыми тяжелыми считаются уязвимости позволяющие атакующему запускать свой код

Раскрытие уязвимости – обнародование ее публично в открытых источниках

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

Ручная проверка кода и автоматические инструменты такие как фаззинг, статический анализ весьма полезны, но они не могут выявить всех уязвимостей в крупном программном проекте.

Факторы увеличения количества уязвимостей:

Сложность кода

Бесконечность путей которыми креативный разработчик может создать уязвимость

>8 миллионов разработчиков ПО для Windows

Исследователи будут продолжать обнаруживать уязвимости несмотря на использование нами лучших практик в разработке

Page 7: Andrey Beshkov - Behind the Window Update Scenes. From vulnerability to patсh
Page 8: Andrey Beshkov - Behind the Window Update Scenes. From vulnerability to patсh

bool fAllowAccess = true;

If (AccessCheck(…) == 0 && GetLastError() ==ERROR_ACCESS_DENIED)

fAllowAccess = false;

Иллюстрация того насколько малозаметными могут быть уязвимости. Этот маленький кусок кода содержит уязвимость трудно обнаруживаемую стандартными инструментами и ручными проверками кода

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

bool fAllowAccess = false;

If (AccessCheck(…) != 0 && GetLastError() ==ERROR_ACCESS_DENIED)

fAllowAccess = true;

Нарушение принципа “fail closed”

Иллюстрация того насколько малозаметными могут быть уязвимости. Этот маленький кусок кода содержит уязвимость трудно обнаруживаемую стандартными инструментами и ручными проверками кода

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

Всех производителей.

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

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

Всех производителей.

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

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

http://www.h-online.com/security/news/item/Vulnerabilities-in-Microsoft-Office-and-OpenOffice-

compared-1230956.html

Миф о безопасности ПО с открытым кодом?

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

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

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

Обслуживание более чем миллиарда систем вокруг света

Раздаем 1-1,5 петабайта обновлений ежемесячно

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

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

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

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

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

MSRC получает более 150.000 сообщений в год по адресу [email protected] или анонимные сообщения на вебсайте TechNet Security

MSRC расследует: существует ли уязвимость, какие компоненты и продукты затронуты

В течении года получается:

~1000 подтвержденных проблем

~100 обновлений суммарно для всех продуктов Microsoft

Стандартный цикл поддержки продукта 10 лет. Это очень долго!

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

Не традиционные отчеты

Subject: “yo ~new vuln ”

2005 – MSRC 5879 – MS05-039 - Zotob

Исследователь прислал proof-of-concept

В формате Tarball

Для запуска требовался CYGWIN

Первоначальный ответ “No repro”

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

Все еще не традиционные отчеты Subject: 你会来参加我的马来西亚朋友的聚会吧?

Критерии открытия кейса Репутация исследователя (Пример: Yamata Li, ZDI, iDefense и.т.д)

Не покрывается 10 законами безопасности (потенциал стать уязвимостью)

Не дублирует уже известный публично случай

Не дублирует известный случай “Won’t fix”

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

Временных границы процессов плавают. Некоторые процессы могут идти

параллельно.

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

Почему может потребоваться много времени?

Три фактора могу повлиять на скорость выпуска обновлений

Минимизация количества обновлений

Одновременность выпуска

Тестирование совместимости с приложениями

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

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

“Поиск вариаций”

Помним о цикле поддержки в 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

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

Часто уязвимость влияет на несколько продуктов или компонентов. Необходим одновременный выпуск во избежание 0-day.

Учимся на ошибках:

MS04-028 (14 сентября 2004) закрыл уязвимость в GDI+ влиявшую на 53 отдельных продукта

Не тривиально с точки зрения инженера

Продукты и компоненты меняются от релиза к релизу

Часто уязвимость нового продукта существует и в старом продукте

Вариации требуют разных исправлений и разного тестирования

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

“Интернет сломан” – уязвимость в дизайне протокола DNS найдена в 2008

Повлияло на множество производителей ПО. Угадайте о ком кричала пресса?

Microsoft возглавил комитет производителей ПО и помог решить проблему совместными усилиями

Выпущен бюллетень MS08-037

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

Минимизация проблем с совместимостью приложений требует тестирования огромного количества приложений. Матрица тестирования разрастается очень быстро.

Обновления безопасности 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 распространенных семейств приложений…

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

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

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

Security Update Validation Program (SUVP) запущена в 2005 году

Перед выпуском обновления даются группе клиентов под соглашение о неразглашении (NDA)

Позволяет протестировать на широком наборе сред и конфигураций

Участники сообщают о найденных проблемах

Данные об исправляемых уязвимостях и способах эксплуатации не раскрываются

http://blogs.technet.com/b/msrc/archive/2005/03/15/403612.aspx

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

Мы прилагаем много усилий для тестирования сторонних приложений для того чтобы не беспокоить конечного клиента.

Тестирования на совместимость со зловредами установленными у конечного клиента не происходит.

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

MS10-015 локальное повышение привилегий в ядре Windows

Обновление внесло изменения в регистры ядра используемые руткитом Alureon для сокрытия себя в системе

Изменения привели к возникновению BSOD на зараженных системах

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

До 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” помогли формализовать процесс

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

Время непрерывной работы критично

Перезапуск выполняется только если нужные файлы заняты самой ОС

Мы ищем пути дальнейшего уменьшения количества рестартов

Один бюллетень часто закрывает несколько уязвимостей из базы (CVE)

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

Соотношение бюллетеней 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

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

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

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

Безопасность является проблемой всей ИТ индустрии

Ежегодно обнаруживаются тысячи уязвимостей

Большинство из них в сторонних приложениях и чаще всего критические

MSRC делится информацией собранной в процессе исследования уязвимостей с партнерами и сообществом

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

Мы считаем что идеальным вариантом раскрытия является приватное уведомление создателя ПО дающее ему достаточно возможностей для выпуска обновления до того как уязвимость станет публично известной.

В идеале выпуск обновления предшествует или совпадает с публичным оглашением уязвимости

http://blogs.technet.com/b/ecostrat/archive/2010/07/22/coordinated-

vulnerability-disclosure-bringing-balance-to-the-force.aspx

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

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

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

Обновление и бюллетеней выпущено за период 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

Page 38: Andrey Beshkov - Behind the Window Update Scenes. From vulnerability to patсh
Page 39: Andrey Beshkov - Behind the Window Update Scenes. From vulnerability to patсh

Sourcefire считает что до введения MAPP требовалось ~8 часов для реверс

инжиниринга обновления, поиска уязвимости и разработки эксплоита. Затем

нужно было потратить время на пути детектирования эксплоита.

8 часов достаточно профессиональному атакующему для разработки своего

эксплоита после публичного раскрытия уязвимости

MAPP дал возможность сократить процесс до 2 часов. Теперь нужно

разрабатывать только детектирование эксплоита. В результате защита

обновляется раньше на много часов чем появится первый публичный эксплоит.

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

Microsoft уведомляет приватно производителей стороннего ПО об уязвимостях последние несколько лет

Microsoft Vulnerability Research (MSVR) позволяет построить устойчивые связи между производителями ПО и защищаться сообща

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

GIAIS – содружество провайдеров Интернет

OTIS – данные о текущих угрозах

VIA – обмен данными о вирусах, троянах и прочих зловредах

MVI – форму для обмена данными о борьбе с вирусными эпидемиями

MSRA – Microsoft Security Response Alliance

MAPP – Microsoft Active Protections Program

MSVR – Microsoft Vulnerability Research

SUVP - Security Update Validation Program

Присоединяйтесь. Будет интересно!

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

Управление уязвимостями в Microsoft

SDL - разработка безопасного ПО

Security Intelligence Report

Microsoft Security Update Guide

Microsoft Security Response Center

Microsoft Malware Protection Center

Trustworthy Computing blogs

Page 43: Andrey Beshkov - Behind the Window Update Scenes. From vulnerability to patсh
Page 44: Andrey Beshkov - Behind the Window Update Scenes. From vulnerability to patсh

Данные о количестве атак и заражений были собраны с

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/

Page 45: Andrey Beshkov - Behind the Window Update Scenes. From vulnerability to patсh
Page 46: Andrey Beshkov - Behind the Window Update Scenes. From vulnerability to patсh

Обнаружение зловредного ПО на каждую 1000 запусков антивирусных

средств.

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

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

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