SDL

advertisement
Методы разработки безопасного ПО
Андрей Бешков
Менеджер программы информационной безопасности
Microsoft Россия
abeshkov@microsoft.com
http://beshkov.ru
http://twitter.com/abeshkov
Содержание




Зачем вам разработка безопасного ПО?
Текущая ситуация с безопасностью ПО
Практика применения SDL
Программы безопасности Microsoft
Почему ПО не безопасного?
• Сроки запуска проекта
горят
• Нет ресурсов на
обеспечение безопасных
практик
• Мы стартап – нам нужно
быстрее стать
популярными и
заработать много денег
Зачем вам разработка безопасного ПО?
 Новейшие исследования показывают однозначную связь
между разработкой безопасного ПО и бизнес
эффективностью компании:
 Исследование Aberdeen:
 Предотвращение одной уязвимости почти полностью покрывает годовые
затраты на повышение безопасности разработки
 Предотвратить проблему с безопасностью в 4 раза дешевле чем
разбираться с ее последствиями
 Исследование Forrester:
 Разработка безопасного ПО еще не стала широко распространенной
практикой
 Компании применяющие методы SDL демонстрируют гораздо более
быстрый возврат инвестиций
Чем SDL помог Microsoft
Результаты
Microsoft SDL и Windows
Количество уязвимостей, обнаруженных в течение года после выпуска
400
242
157
119
66
Windows XP Windows Vista
До введения SDL
ОС I
ОС II
ОС III
После введения SDL
Количество уязвимостей сократилось на 45 %
Источник: доклад «Windows Vista One Year Vulnerability Report», блог Microsoft Security, 23 января 2008 г.
SDL и SQL Server
(исследование компании NGS Software)
Количество обнаруженных и исправленных уязвимостей
по кварталам, 2000-2006 гг.
20
17
Пакет обновления 3
(SP3) для SQL Server
2000 – первый
выпуск,
разработанный с
применением
процесса SDL
3
8
1
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
Источник: Which database is more secure? Oracle vs. Microsoft (Чья СУБД безопаснее? Oracle или Microsoft?), David Litchfield, NGS Software, 21 ноября-2006 г.
SDL и Internet Explorer (IE)
Количество уязвимостей, обнаруженных и
исправленных в течение года после выпуска
Medium
High
8
3
18
Internet Explorer 6
До введения SDL
14
Internet Explorer 7
После введения SDL
Количество уязвимостей сократилось на 35 %
Количество критических уязвимостей сократилось на 63 %
Источник: Browser Vulnerability Analysis, Microsoft Security Blog, 27 ноября 2007 г.
Уязвимости в ПО
4,000
3,000
3450 3474
2919 2962
3188
2707 2546
2360
2,000
1,000
0
2H06 1H07 2H07 1H08 2H08 1H09 2H09 1H10
2,000
1,800
1,600
1,400
1,200
1,000
800
600
400
200
0
1882
1562
1677
1587
1447
1693
1266
1494
1402
1208
195
2H06
1289
1191
1144
1090
98
124
83
109
98
89
126
1H07
2H07
1H08
2H08
1H09
2H09
1H10
Критическая (7 - 10)
Средняя (4 - 6.9)
Низкая (0 - 3.9)
Доля уязвимостей Microsoft
3,500
3,280
3,322
2,822
3,000
2,869
3,042
2,594
2,500
2,417
2,215
2,000
1,500
1,000
500
170
152
97
93
146
113
129
145
2H06
1H07
2H07
1H08
2H08
1H09
2H09
1H10
0
Microsoft
Не Microsoft
3,500
3079
3110
3,000
2547
2573
2807
2351
2,500
2161
2,000
1943
1,500
1,000
500
259
112
0
2H06
ОС
242
276
96
122
1H07
2H07
310
79
256
207
237
196
1H08
2H08
1H09
2H09
1H10
Браузеры
Приложения
Уязвимости основных производителей ПО
http://secunia.com/gfx/pdf/Secunia_Half_Year_Report_2010.pdf
Что говорят эксперты?
«Теперь мы действительно считаем корпорацию
Майкрософт лидером, поскольку после введения процесса
Security Development Lifecycle [SDL] ее программное
обеспечение заметно улучшилось.»
Джон Пескаторе (John Pescatore)
вице-президент и выдающийся аналитик
Gartner, Inc
(www.crn.com, 13 февраля 2006 г.)
«Зачем хакерам возиться с трудной для взлома системой
Vista, если хватает компьютеров, на которых установлены
Acrobat Reader, слабое антивирусное ПО и последняя
версия iTunes?»
Халвар Флэйк (Halvar Flake)
Специалистов по безопасности
Конференция Microsoft BlueHat
Сентябрь 2007 г.
Данные о масштабах угрозы?
Данные о количестве заражений вирусами были собраны с 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/
Влияние SDL на уязвимость ОС от Microsoft
Найдено зловредного ПО на каждую 1000 запусков антивирусных средств
Windows 7 почти в 5 раз безопаснее Windows XP!
Уязвимости Microsoft Office и OpenOffice
http://www.h-online.com/security/news/item/Vulnerabilities-in-Microsoft-Office-and-OpenOfficecompared-1230956.html
История развития SDL
 Процесс безопасной разработки прошел многолетнее
тестирование и шлифовку в рамках Microsoft и других
компаний.
Введение: процесс Microsoft SDL
Цели
Концепция
Выпуск
Защита пользователей:
 сокращение количества
уязвимостей;
 сокращение опасности
уязвимостей.
Основные принципы
Практический подход
Упреждение угроз - это
не просто поиск ошибок
Решение проблем
безопасности
на ранних стадиях
Безопасность при разработке
Безопасность после выпуска ПО
SDL по этапам
Решение руководства:  SDL – обязательная политика в Майкрософт с 2004 г.
Обуче
ние
Начальное
обучение по
основам
безопасности
Обучение
Требо
вания
Определение
владельца от
бизнеса
Анализ
рисков
безопасности
и конфиденциальности
Определение
требований к
качеству
Проект
ирован
ие
Моделирован
ие угроз
Анализ
опасных
областей
Реали
зация
Выбор
инструментов
Блокировани
е
запрещенных
функций
Статический
анализ
Провер
ка
Динамическое
тестирование
и fuzzing
Проверка
моделей угроз
и опасных
областей
Технология и процесс
Постоянные улучшения процессов
Выпуск
План
реагирования
Заключительный анализ
безопасности
Архив
выпусков
Реа
гирова
ние
Выполнение
плана
реагирования
на инциденты
Ответственность
Фаза: Обучение
Training
Обучение
Requirements
Требования
Проектирова
Design
ние
Реали
зация
Implementation
Verification
Проверка
Release
Выпуск
Реагирова
Response
ние
Обследовать подготовленность организации по темам безопасности и защиты
приватных данных.
При необходимости создать стандартные курсы обучения.
 Разработать критерии качества программы обучения

Содержимое должно покрывать темы, безопасного дизайна, разработки, тестирования и защиты
приватных данных
 Определить частоту тренингов

Разработчик должен пройти не менее n тренингов в год
 Определить минимальный приемлемый порог тренингов в группе
разработки

80% процентов технического персонала должны пройти минимальные обязательные тренинги до
выпуска RTM версии продукта
Фаза: Обучение
Как написать безопасный код на С++, Java, Perl,
PHP, ASP. NET
Защищенный код для Windows Vista
Игра «Spot the vuln»
10 уязвимостей веб проектов - OWASP Top Ten
Курсы SANS
Бесплатная книга по SDL
Фаза: Требования
Training
Обучение
Requirements
Требования
Проектирова
Design
ние
Реали
зация
Implementation
Verification
Проверка
Release
Выпуск
Реагирова
Response
ние
Возможность заложить безопасный фундамент для проекта
 Команда разработки определяет лидеров и консультантов по
темам безопасности
 Назначается ответственный за безопасность
 Ответственный проверяет план разработки продукта,
рекомендует изменения или устанавливает дополнительные
требования к безопасности продукта
 Определить приоритет, процедуру отслеживания и исправления
ошибок (bug tracking/job assignment system)
 Определить и задокументировать порог отбраковки продукта по
ошибкам связанным с безопасностью и защитой данных
Шаблоны SDL для VSTS (Spiral)
 Включает





SDL требования как задачи
SDL-based check-in policies
Создание отчета Final Security
Review
Интеграция с инструментами
сторонних производителей
Библиотека пошаговых указаний
SDL how-to
 Интегрируется с
бесплатными SDL
инструментами
Шаблоны SDL процессов
интегрируют SDL 4.1 со средой
разработки VSTS
 SDL Threat Modeling Tool
 Binscope Binary Analyzer
 Minifuzz File Fuzzer
MSF Agile + SDL шаблоны для VSTS
 Автоматически создает
процессы соблюдения SDL в
момент создания нового
спринта или выполнения
check in.
 Контролирует выполнение
всех необходимых
процессов безопасности
 Включает практики SDL-Agile
в Visual Studio IDE
 Интегрируется с
бесплатными SDL
инструментами
 SDL Threat Modeling Tool
 Binscope Binary Analyzer
 Minifuzz File Fuzzer
Фаза: Проектирование
Training
Обучение
Requirements
Требования
Проектирова
Design
ние
Реали
зация
Implementation
Verification
Проверка
Release
Выпуск
Реагирова
Response
ние
Определить и задокументировать архитектуру безопасности и идентифицировать
критические компоненты безопасности
Задокументировать поверхность атаки продукта. Ограничить ее
установками по умолчанию
Определить критерии выпуска обновления продукта в связи с
изменением в безопасности продукта
Результаты автоматизированного тестирования кроссайт скриптинг атак
Устаревание криптографических алгоритмов или замена слабых алгоритмов
Моделирование угроз
Систематический ревью свойств продукта и его архитектуры с точки зрения
безопасности
Определить угрозы и меры снижения угроз
SDL Threat Modeling Tool
Формализует и упрощает
моделирование угроз так
чтобы им мог заниматься
архитектор
 Обучает созданию диаграмм
угроз
 Анализ угроз и мер защиты
 Интеграция с багтреккером
 Отчеты по угрозам и
уязвимостям
Фаза: Реализация
Training
Обучение
Requirements
Требования
Проектирова
Design
ние
Реали
зация
Implementation
Verification
Проверка
Release
Выпуск
Реагирова
Response
ние
Разработка кода и ревью процессов, документации и инструментов необходимых
для безопасного развертывания и эксплуатации разрабатываемого продукта
Спецификация утвержденных инструментов и их аналогов
Статический анализ (/analyze (PREfast), FXCop, CAT.NET)
Поиск случаев использования запрещенных API
Применение механизмов защиты предоставляемых ОС (NX, ASLR и
HeapTermination)
Соблюдение специфических требований безопасности для сетевых
сервисов (крос сайт скриптинг , SQL иньекции и.т.д)
Использование безопасных версий библиотек и фреймворков
Прочие рекомендации ( Standard Annotation Language (SAL))
Фаза: Проверка
Training
Обучение
Requirements
Требования
Проектирова
Design
ние
Реали
зация
Implementation
Verification
Проверка
Release
Выпуск
Реагирова
Response
ние
Начните проверки как можно раньше. В идеале сразу же после стадии “code
complete”.
Начните планирование процесса реагирования на обнаружение
уязвимостей в выпущенном продукте
Повторно проверьте поверхность атаки. Все ли вы учли?
Fuzz тестирование – файлами, вводом данных в интерфейсные элементы
и код сетевой подсистемы
При необходимости выполнить “security push” (с каждым разом все
реже)
Не является заменой работе над безопасностью в процессе разработки
продукта
Ревью кода
Тестирование на проникновение
Ревью дизайна и архитектуры в свете вновь обнаруженных угроз
MiniFuzz File Fuzzer
 MiniFuzz основной
инструмент тестирования
для поиска уязвимостей
которые могут привести к
удачным атакам на код
обрабатывающий файлы.
 Создает поврежденные
файлы
 Выявляет
недекларированное
поведение приложения
 Используется отдельно или
в составе Visual Studio и
Team Foundation Server
Attack Surface Analyzer


Измеряет потенциальную поверхность
атаки на приложение и ОС
Может использоваться
разработчиками, тестировщиками, ИТ
специалистами.

Отображает изменения вносимые в
чистую копию Windows ОС после
установки приложения.

Проверяет







Новые или измененные файлы
Ключи реестра
Сервисы
ActiveX
Открытые сетевые порты
Списки доступа ACL
И.т.д
Фаза: Выпуск и план реагирования
Training
Обучение
Requirements
Требования
Проектирова
Design
ние
Реали
зация
Implementation
Verification
Проверка
Release
Выпуск
Реагирова
Response
ние
Создать политики поддержки продукта
Создать план реагирования на инциденты безопасности Software Security Incident Response Plan (SSIRP)
Контакты и ресурсы внутри организации для адекватной реакции
на обнаружение уязвимостей и защиту от атак
24x7x365 контакт с 3-5 инженерами, 3-5 специалистами
маркетинга, и 1-2 менеджеров верхнего уровня
Обратите внимание на необходимость выпуска экстренных
обновлений вашего продукта из за уязвимостей в коде
сторонних производителей включенном в ваш продукт. Так же
может быть необходимость обновлять продукт после
обновления ОС.
Программа SUVP
 Ранний доступ к обновлениям безопасности продуктов
Microsoft.
 Предназначена для тестирования совместимости ваших
продуктов и продуктов Microsoft
 Бесплатна.
 Если хотите участвовать подойдите ко мне после доклада
или напишите письмо на abeshkov@microsoft.com
Отношение к обновлениям
Фаза: Выпуск – Final Security Review (FSR)
Training
Обучение
Requirements
Требования
Проектирова
Design
ние
Реали
зация
Implementation
Verification
Проверка
Release
Выпуск
Реагирова
Response
ние
Проверить продукт на соответствие требованиям SDL и отсутствие известных
уязвимостей
Получаем независимое заключение готовности продукта к выпуску
FSR не является:
Тестом на проникновение. Запрещено ломать и обновлять продукт.
Первой проверкой безопасности продукта
Процессом финальной подписи продукта и отправки его в тираж
Ключевая концепция: Эта фаза не используется как точка для
завершения всех задач пропущенных на предыдущих стадиях
Фаза: Выпуск – Архив
Training
Обучение
Requirements
Требования
Проектирова
Design
ние
Реали
зация
Implementation
Verification
Проверка
Release
Выпуск
Реагирова
Response
ние
План реагирования на инциденты безопасности создан
Документация для клиентов обновлена
Создан централизованный архив исходного
кода, символов, моделей атак RTM версии
продукта
Фаза: Реагирование
Training
Обучение
Requirements
Требования
Проектирова
Design
ние
Реали
зация
Implementation
Verification
Проверка
Release
Выпуск
Реагирова
Response
ние
Инцидент случился? Идем по заранее созданному
плану.
Выполняем активности по плану реагирования
на инциденты безопасности и выпускаем
обновления в соответствии с графиком релизов
Основные заблуждения об SDL
SDL предназначен только для
Windows® ОС
SDL независим от платформы и языка разработки
SDL применим только к
коробочным продуктам
SDL подходит для разных сценариев разработки
включая бизнес приложения (LOB) и онлайн
сервисы
SDL предназначен для модели
водопад или спираль
SDL применим к разным методам разработки
таким как водопад, спираль и agile
Для SDL нужны инструменты
разработки Microsoft
Успешная реализация SDL предполагает
автоматизацию с помощью инструментов. Вы
можете использовать инструменты от других
компаний.
Чтобы реализовать SDL
нужно много ресурсов.
SDL подходит организациям любого размера. От
разработчика одиночки до огромных
корпораций.
Заключение
Атаки переходят на уровень приложений
SDL = встраивание безопасности в ПО и культуру
Существенные результаты для продуктов Microsoft
Microsoft сделал процесс SDL доступным всем и считает
важным помогать его распространению
Ресурсы
www.microsoft.com/sdl
www.Secunia.org
The Simplified Implementation of the SDL
Блог об SDL
Обратная связь
Ваше мнение очень важно для нас. Пожалуйста, оцените
доклад, заполните анкету и сдайте ее при выходе из зала
Спасибо!
Вопросы?
 Код сессии CL 604
 Андрей Бешков




Менеджер программы информационной безопасности
abeshkov@microsoft.com
http://beshkov.ru
http://twitter.com/abeshkov
 Вы сможете задать мне вопросы в зоне «Спроси
эксперта» в течение часа после завершения этого
доклада.
Download