42
Методы разработки безопасного ПО Андрей Бешков Менеджер программы информационной безопасности Microsoft Россия [email protected] http://beshkov.ru http://twitter.com/abeshkov

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

Embed Size (px)

DESCRIPTION

Подробное описание того как Microsoft применяет методологию Security Development Lifecycle для разработки безопасного програмного обеспечения.

Citation preview

Page 1: Методы разработки безопасного ПО

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

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

Page 2: Методы разработки безопасного ПО

Содержание Зачем вам разработка безопасного ПО? Текущая ситуация с безопасностью ПО Практика применения SDL Программы безопасности Microsoft

Page 3: Методы разработки безопасного ПО

Почему ПО не безопасного?

• Сроки запуска проекта горят

• Нет ресурсов на обеспечение безопасных практик

• Мы стартап – нам нужно быстрее стать популярными и заработать много денег

Page 4: Методы разработки безопасного ПО

Зачем вам разработка безопасного ПО? Новейшие исследования показывают однозначную

связь между разработкой безопасного ПО и бизнес эффективностью компании:

Исследование Aberdeen: Предотвращение одной уязвимости почти полностью

покрывает годовые затраты на повышение безопасности разработки

Предотвратить проблему с безопасностью в 4 раза дешевле чем разбираться с ее последствиями

Исследование Forrester: Разработка безопасного ПО еще не стала широко

распространенной практикой Компании применяющие методы SDL демонстрируют гораздо

более быстрый возврат инвестиций

Page 5: Методы разработки безопасного ПО

Чем SDL помог Microsoft

Результаты

Page 6: Методы разработки безопасного ПО

Microsoft SDL и Windows

Источник: доклад «Windows Vista One Year Vulnerability Report», блог Microsoft Security, 23 января 2008 г.

Windows XP Windows Vista

ОС I ОС II ОС III

119

66

400

242

157

До введения SDLПосле введения SDL

Количество уязвимостей сократилось на 45 %

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

Page 7: Методы разработки безопасного ПО

SDL и SQL Server(исследование компании NGS Software)

Q4

Q1

Q2

Q3

Q4

Q1

Q2

Q3

Q4

Q1

Q2

Q3

Q4

Q1

Q2

Q3

Q4

Q1

Q2

Q3

Q4

Q1

Q2

Q3

Q4

2000

2001 2002 2003 2004 2005 2006

8

17

20

31

Количество обнаруженных и исправленных уязвимостей

по кварталам, 2000-2006 гг.

Пакет обновления 3 (SP3) для SQL

Server 2000 – первый выпуск,

разработанный с применением процесса SDL

Источник: Which database is more secure? Oracle vs. Microsoft (Чья СУБД безопаснее? Oracle или Microsoft?), David Litchfield, NGS Software, 21 ноября-2006 г.

Page 8: Методы разработки безопасного ПО

SDL и Internet Explorer (IE)

Источник: Browser Vulnerability Analysis, Microsoft Security Blog, 27 ноября 2007 г.

Internet Explorer 6 Internet Explorer 7

18 14

8

3

Количество уязвимостей, обнаруженных и исправленных в течение года после

выпуска

Medium High

До введения SDL После введения SDL

Количество уязвимостей сократилось на 35 %Количество критических уязвимостей сократилось на 63 %

Page 9: Методы разработки безопасного ПО

Уязвимости в ПО

2H06 1H07 2H07 1H08 2H08 1H09 2H09 1H100

5001,0001,5002,0002,5003,0003,5004,000

3450 3474

2919 29623188

2707 2546 2360

Статистика по отрасли, с шагом в 6 месяцев

Page 10: Методы разработки безопасного ПО

Критичность уязвимостей по отрасли

2H06 1H07 2H07 1H08 2H08 1H09 2H09 1H100

200400600800

1,0001,2001,4001,6001,8002,000

19598 124 83 109 98 89 126

1562

1494

15871447

14021266

11441693

1882

1208

1677

12891191

1090

Низкая (0 - 3.9)

Средняя (4 - 6.9)Критическая (7 - 10)

Page 11: Методы разработки безопасного ПО

Доля уязвимостей Microsoft 3-6%

2H06 1H07 2H07 1H08 2H08 1H09 2H09 1H100

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

Не Microsoft

Microsoft

Page 12: Методы разработки безопасного ПО

Распределение уязвимостей

2H06 1H07 2H07 1H08 2H08 1H09 2H09 1H100

500

1,000

1,500

2,000

2,500

3,000

3,5003079 3110

2547 25732807

23512161

1943

259 242 276 310 256 207 237 196 112 122

96 79

ПриложенияОС Браузеры

Page 13: Методы разработки безопасного ПО

Уязвимости основных производителей ПО

http://secunia.com/gfx/pdf/Secunia_Half_Year_Report_2010.pdf

Page 14: Методы разработки безопасного ПО

Что говорят эксперты?«Теперь мы действительно считаем корпорацию Майкрософт лидером, поскольку после введения процесса Security Development Lifecycle [SDL] ее программное обеспечение заметно улучшилось.»

Джон Пескаторе (John Pescatore)вице-президент и выдающийся аналитик

Gartner, Inc(www.crn.com, 13 февраля 2006 г.)

«Зачем хакерам возиться с трудной для взлома системой Vista, если хватает компьютеров, на которых установлены Acrobat Reader, слабое антивирусное ПО и последняя версия iTunes?»

Халвар Флэйк (Halvar Flake) Специалистов по безопасностиКонференция Microsoft BlueHat

Сентябрь 2007 г.

Page 15: Методы разработки безопасного ПО

Данные о масштабах угрозы?

Данные о количестве заражений вирусами были собраны с 600 миллионов компьютеров в 117 странах. С помощью средствами безопасности Microsoft таких как:

• Malicious Software Removal Tool• Microsoft Security Essentials• Windows Defender• Microsoft Forefront Client Security• Windows Live OneCare • Windows Live OneCare safety scanner

http://www.microsoft.com/security/sir/

Page 16: Методы разработки безопасного ПО

Влияние SDL на уязвимость ОС от Microsoft

Windows 7 почти в 5 раз безопаснее Windows XP!

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

Page 18: Методы разработки безопасного ПО

История развития SDL

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

Page 19: Методы разработки безопасного ПО

Введение: процесс Microsoft SDL

Концепция

Выпуск Основные принципы

Защита пользователей: сокращение количества

уязвимостей; сокращение опасности

уязвимостей.

Практический подходУпреждение угроз - этоне просто поиск ошибокРешение проблем безопасностина ранних стадияхБезопасность при разработкеБезопасность после выпуска ПО

Цели

Page 20: Методы разработки безопасного ПО

SDL по этапам

Обучение

Начальное обучение по основам безопасности

Требования

Определение владельца от бизнесаАнализ рисков безопасности и конфиден-циальности Определение требований к качеству

Проектирование

Моделирование угрозАнализ опасных областей

Реализация

Выбор инструментовБлокирование запрещенных функций Статический анализ

Проверка

Динамическое тестирование и fuzzing Проверка моделей угроз и опасных областей

Выпуск

План реагированияЗаключитель-ный анализ безопасностиАрхив выпусков

Реагирование

Выполнение плана реагирования на инциденты

Решение руководства: SDL – обязательная политика в Майкрософт с 2004 г.

Технология и процесс

Обучение

Ответственность

Постоянные улучшения процессов

Page 21: Методы разработки безопасного ПО

Фаза: Обучение

Обследовать подготовленность организации по темам безопасности и защиты приватных данных.

При необходимости создать стандартные курсы обучения.

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

тестирования и защиты приватных данных

Определить частоту тренингов Разработчик должен пройти не менее n тренингов в год

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

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

Training Requirements DesignImplementati

onVerification Release ResponseОбучение

Требования

Проектирование

Реализация

Проверка ВыпускРеагирова

ние

Page 23: Методы разработки безопасного ПО

Фаза: Требования

Возможность заложить безопасный фундамент для проекта

Команда разработки определяет лидеров и консультантов по темам безопасности

Назначается ответственный за безопасность Ответственный проверяет план разработки продукта,

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

Определить приоритет, процедуру отслеживания и исправления ошибок (bug tracking/job assignment system)

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

Training Requirements DesignImplementati

onVerification Release ResponseОбучение

Требования

Проектирование

Реализация

Проверка ВыпускРеагирова

ние

Page 24: Методы разработки безопасного ПО

Шаблоны SDL для VSTS (Spiral)

Включает SDL требования как задачи SDL-based check-in policies Создание отчета Final Security

Review Интеграция с инструментами

сторонних производителей Библиотека пошаговых

указаний SDL how-to

Интегрируется с бесплатными SDL инструментами SDL Threat Modeling Tool Binscope Binary Analyzer Minifuzz File Fuzzer

Шаблоны SDL процессов интегрируют SDL 4.1 со средой разработки VSTS

Page 25: Методы разработки безопасного ПО

MSF Agile + SDL шаблоны для VSTS

Включает практики SDL-Agile в Visual Studio IDE

Автоматически создает процессы соблюдения SDL в момент создания нового спринта или выполнения check in.

Контролирует выполнение всех необходимых процессов безопасности

Интегрируется с бесплатными SDL инструментами SDL Threat Modeling Tool Binscope Binary Analyzer Minifuzz File Fuzzer

Page 26: Методы разработки безопасного ПО

Фаза: Проектирование

Определить и задокументировать архитектуру безопасности и идентифицировать критические компоненты безопасности

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

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

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

Training Requirements DesignImplementati

onVerification Release ResponseОбучение

Требования

Проектирование

Реализация

Проверка ВыпускРеагирова

ние

Page 27: Методы разработки безопасного ПО

SDL Threat Modeling Tool

Обучает созданию диаграмм угроз

Анализ угроз и мер защиты  Интеграция с багтреккером  Отчеты по угрозам и

уязвимостям

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

Page 28: Методы разработки безопасного ПО

Фаза: Реализация

Разработка кода и ревью процессов, документации и инструментов необходимых для безопасного развертывания и эксплуатации разрабатываемого продукта

Спецификация утвержденных инструментов и их аналоговСтатический анализ (/analyze (PREfast), FXCop, CAT.NET)

Поиск случаев использования запрещенных APIПрименение механизмов защиты предоставляемых ОС (NX, ASLR и HeapTermination)

Соблюдение специфических требований безопасности для сетевых сервисов (крос сайт скриптинг , SQL иньекции и.т.д)

Использование безопасных версий библиотек и фреймворковПрочие рекомендации ( Standard Annotation Language (SAL))

Training Requirements DesignImplementati

onVerification Release ResponseОбучение

Требования

Проектирование

Реализация

Проверка ВыпускРеагирова

ние

Page 29: Методы разработки безопасного ПО

Фаза: Проверка

Начните проверки как можно раньше. В идеале сразу же после стадии “code complete”.

Начните планирование процесса реагирования на обнаружение уязвимостей в выпущенном продуктеПовторно проверьте поверхность атаки. Все ли вы учли?Fuzz тестирование – файлами, вводом данных в интерфейсные элементы и код сетевой подсистемыПри необходимости выполнить “security push” (с каждым разом все реже)

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

Training Requirements DesignImplementati

onVerification Release ResponseОбучение

Требования

Проектирование

Реализация

Проверка ВыпускРеагирова

ние

Page 30: Методы разработки безопасного ПО

MiniFuzz File Fuzzer MiniFuzz основной

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

файлы Выявляет

недекларированное поведение приложения

Используется отдельно или в составе Visual Studio и Team Foundation Server

Page 31: Методы разработки безопасного ПО

Attack Surface Analyzer

Измеряет потенциальную поверхность атаки на приложение и ОС

Может использоваться разработчиками, тестировщиками, ИТ специалистами.

Отображает изменения вносимые в чистую копию Windows ОС после установки приложения.

Проверяет Новые или измененные файлы Ключи реестра Сервисы ActiveX Открытые сетевые порты Списки доступа ACL И.т.д

Page 32: Методы разработки безопасного ПО

Фаза: Выпуск и план реагирования

Создать политики поддержки продукта

Создать план реагирования на инциденты безопасности - Software Security Incident Response Plan (SSIRP)

Контакты и ресурсы внутри организации для адекватной реакции на обнаружение уязвимостей и защиту от атак24x7x365 контакт с 3-5 инженерами, 3-5 специалистами маркетинга, и 1-2 менеджеров верхнего уровня

Обратите внимание на необходимость выпуска экстренных обновлений вашего продукта из за уязвимостей в коде сторонних производителей включенном в ваш продукт. Так же может быть необходимость обновлять продукт после обновления ОС.

Training Requirements DesignImplementati

onVerification Release ResponseОбучение

Требования

Проектирование

Реализация

Проверка ВыпускРеагирова

ние

Page 33: Методы разработки безопасного ПО

Программа SUVP

Ранний доступ к обновлениям безопасности продуктов Microsoft.

Предназначена для тестирования совместимости ваших продуктов и продуктов Microsoft

Бесплатна.

Если хотите участвовать подойдите ко мне после доклада или напишите письмо на [email protected]

Page 34: Методы разработки безопасного ПО

Отношение к обновлениям

Page 35: Методы разработки безопасного ПО

Фаза: Выпуск – Final Security Review (FSR)

Проверить продукт на соответствие требованиям SDL и отсутствие известных уязвимостей

Получаем независимое заключение готовности продукта к выпускуFSR не является:

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

Ключевая концепция: Эта фаза не используется как точка для завершения всех задач пропущенных на предыдущих стадиях

Training Requirements DesignImplementati

onVerification Release ResponseОбучение

Требования

Проектирование

Реализация

Проверка ВыпускРеагирова

ние

Page 36: Методы разработки безопасного ПО

Фаза: Выпуск – Архив

План реагирования на инциденты безопасности создан

Документация для клиентов обновленаСоздан централизованный архив исходного кода, символов, моделей атак RTM версии продукта

Training Requirements DesignImplementati

onVerification Release ResponseОбучение

Требования

Проектирование

Реализация

Проверка ВыпускРеагирова

ние

Page 37: Методы разработки безопасного ПО

Фаза: Реагирование

Инцидент случился? Идем по заранее созданному плану.

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

Training Requirements DesignImplementati

onVerification Release ResponseОбучение

Требования

Проектирование

Реализация

Проверка ВыпускРеагирова

ние

Page 38: Методы разработки безопасного ПО

Основные заблуждения об SDL

SDL применим только к коробочным продуктам

SDL предназначен для модели водопад или спираль

Для SDL нужны инструменты разработки Microsoft

SDL предназначен только для Windows® ОС

SDL независим от платформы и языка разработки

SDL подходит для разных сценариев разработки включая бизнес приложения (LOB) и онлайн сервисы

SDL применим к разным методам разработки таким как водопад, спираль и agile

Успешная реализация SDL предполагает автоматизацию с помощью инструментов. Вы можете использовать инструменты от других компаний.

Чтобы реализовать SDL нужно много ресурсов.

SDL подходит организациям любого размера. От разработчика одиночки до огромных корпораций.

Page 39: Методы разработки безопасного ПО

Заключение

Атаки переходят на уровень приложений

SDL = встраивание безопасности в ПО и культуру

Существенные результаты для продуктов Microsoft

Microsoft сделал процесс SDL доступным всем и считает важным помогать его распространению

Page 41: Методы разработки безопасного ПО

Обратная связь

Ваше мнение очень важно для нас. Пожалуйста, оцените доклад, заполните анкету и сдайте ее при выходе из зала

Спасибо!

Page 42: Методы разработки безопасного ПО

Вопросы? Код сессии CL 604 Андрей Бешков

Менеджер программы информационной безопасности [email protected] http://beshkov.ru http://twitter.com/abeshkov

Вы сможете задать мне вопросы в зоне «Спроси эксперта» в течение часа после завершения этого доклада.