Защита инфраструктуры предприятия с помощью Forefront Endpoint Protection и S...
Практические аспекты разработки безопасного кода с помощью Microsoft SDL
1. ПРАКТИЧЕСКИЕ АСПЕКТЫ
РАЗРАБОТКИ БЕЗОПАСНОГО КОДА
С ПОМОЩЬЮ MICROSOFT SDL
Андрей Бешков
Менеджер программы информационной безопасности
Microsoft Россия
abeshkov@microsoft.com
http://beshkov.ru
http://twitter.com/abeshkov
2. Содержание
• Зачем вам разработка безопасного
ПО?
• Текущая ситуация с безопасностью ПО
• Практика применения SDL
• Программы безопасности Microsoft
3. Почему ПО не безопасно?
• Сроки запуска проекта горят
• Нет ресурсов на
обеспечение безопасных
практик
• Мы стартап – нам нужно
быстрее стать популярными
и заработать много денег
4. Зачем вам разработка безопасного ПО?
• Новейшие исследования показывают однозначную связь между
разработкой безопасного ПО и бизнес эффективностью компании:
– Исследование Aberdeen:
• Предотвращение одной уязвимости почти полностью покрывает годовые затраты
на повышение безопасности разработки
• Предотвратить проблему с безопасностью в 4 раза дешевле чем разбираться с
ее последствиями
– Исследование Forrester:
• Разработка безопасного ПО еще не стала широко распространенной практикой
• Компании применяющие методы SDL демонстрируют гораздо более быстрый
возврат инвестиций
5. Стоимость устранения уязвимостей
после выпуска дороже в 30 раз
Относительная стоимость устранения ошибок
30
Выпуск
25
20
15
10
5
0
Требования/ Интеграция/ Финальное После
Кодирование
Архитектура Тестирование тестирование выпуска
компонент
Источник: National Institute of Standards and Technology
6. Microsoft SDL и Windows
Количество уязвимостей, обнаруженных в течение года после выпуска
400
242
157
119
66
Windows XP Windows Vista ОС I ОС II ОС III
До введения SDL После введения SDL
Количество уязвимостей сократилось на 45 %
Источник: доклад «Windows Vista One Year Vulnerability Report», блог Microsoft Security, 23 января 2008 г.
7. SDL и SQL Server
(исследование компании NGS Software)
Количество обнаруженных и исправленных уязвимостей
по кварталам, 2000-2006 гг.
20 Пакет обновления 3
17 (SP3) для SQL Server
2000 – первый
выпуск, разработанн
ый с применением
процесса SDL
8
3
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
Источник: Which database is more secure? Oracle vs. Microsoft (Чья СУБД безопаснее? Oracle или Microsoft?), David Litchfield, NGS Software, 21 ноября-2006 г.
13. Уязвимости Microsoft Office и OpenOffice
Категория 4
Категория 3
Ряд 3
Категория 2 Ряд 2
Ряд 1
Категория 1
0
2
4
6
http://www.h-online.com/security/news/item/Vulnerabilities-in-Microsoft-Office-and-OpenOffice-
compared-1230956.html
14. Основные заблуждения об SDL
SDL предназначен только для SDL независим от платформы и языка разработки
Windows® ОС
SDL применим только к SDL подходит для разных сценариев разработки
коробочным продуктам включая бизнес приложения (LOB) и онлайн
сервисы
SDL предназначен для модели SDL применим к разным методам разработки
водопад или спираль таким как водопад, спираль и agile
Для SDL нужны инструменты Успешная реализация SDL предполагает
разработки Microsoft автоматизацию с помощью инструментов. Вы
можете использовать инструменты от других
компаний.
Чтобы реализовать SDL SDL подходит организациям любого размера. От
нужно много ресурсов. разработчика одиночки до огромных
корпораций.
15. История развития SDL
Процесс безопасной разработки прошел многолетнее
тестирование и шлифовку в рамках Microsoft и других
компаний.
16. Введение: процесс Microsoft SDL
Цели
Концепция Защита пользователей:
сокращение количества
уязвимостей;
сокращение опасности
уязвимостей.
Выпуск
Основные принципы
Практический подход
Упреждение угроз - это
не просто поиск ошибок
Решение проблем
безопасности
на ранних стадиях
Безопасность при разработке
Безопасность после выпуска ПО
17. Этапы применения SDL
SDL – обязательная политика в Майкрософт с 2004 г.
Обуче Требо Проектир Реали Провер Реагиро
Выпуск
ние вания ование зация ка вание
Начальное Определение Моделировани Выбор Динамическое План Выполнение
владельца от е угроз инструментов тестирование и реагирования плана
обучение бизнеса fuzzing реагирования
Анализ Блокирование Заключитель-
по основам Анализ рисков опасных запрещенных Проверка ный анализ на инциденты
безопаснос безопасности областей функций моделей угроз безопасности
ти и конфиден- Статический и опасных Архив
циальности анализ областей выпусков
Определение
требований к
качеству
Обучение Технология и процесс Ответственность
Постоянные улучшения процессов
18. Фаза: Обучение
Проекти Реали Реагирова
Обучение
Training Requirements
Требования Design Implementation Verification
Проверка Release
Выпуск Response
рование зация ние
Обследовать подготовленность организации по темам безопасности и защиты
приватных данных.
При необходимости создать стандартные курсы обучения.
– Разработать критерии качества программы обучения
• Содержимое должно покрывать темы, безопасного дизайна, разработки, тестирования и защиты
приватных данных
– Определить частоту тренингов
• Разработчик должен пройти не менее n тренингов в год
– Определить минимальный приемлемый порог тренингов в группе
разработки
• 80% процентов технического персонала должны пройти минимальные обязательные тренинги до
выпуска RTM версии продукта
19. Чему учить?
• Минимизация поверхности атаки:
– Безопасный дизайн (уменьшение
поверхности атаки, наименьшие
привилегии, многослойная
защита, безопасные настройки по
умолчанию)
– Моделирование угроз
– Безопасное кодирование (переполнение
буфера, XSS, SQL
инъекции, криптография)
– Тестирование безопасности
– Соответствие ФЗ 152
20. Источники для обучение
Как написать безопасный код на С++, Java, Perl, PHP, ASP.
NET
Защищенный код для Windows Vista
Игра «Spot the vuln»
10 уязвимостей веб проектов - OWASP Top Ten
Курсы SANS
Книга по SDL
Упрощенный SDL
21. Фаза: Требования
Проекти Реали Реагирова
Обучение
Training Requirements
Требования Design Implementation Verification
Проверка Release
Выпуск Response
рование зация ние
Возможность заложить безопасный фундамент для проекта
– Команда разработки определяет лидеров и
консультантов по темам безопасности
– Назначается ответственный за безопасность
– Ответственный проверяет план разработки
продукта, рекомендует изменения или устанавливает
дополнительные требования к безопасности продукта
– Определить приоритет, процедуру отслеживания и
исправления ошибок (bug tracking/job assignment system)
– Определить и задокументировать порог отбраковки
продукта по ошибкам связанным с безопасностью и
защитой данных
22. Шаблоны SDL для VSTS (Spiral)
• Включает
– SDL требования как задачи
– SDL-based check-in policies
– Создание отчета Final Security
Review
– Интеграция с инструментами
сторонних производителей
– Библиотека пошаговых указаний SDL
how-to
• Интегрируется с
бесплатными SDL
инструментами
– SDL Threat Modeling
Tool
– Binscope Binary
Шаблоны SDL процессов интегрируют Analyzer
SDL 4.1 со средой разработки VSTS
– Minifuzz File Fuzzer
23. MSF Agile + SDL шаблоны для VSTS
• Автоматически создает
процессы соблюдения SDL в
момент создания нового
спринта или выполнения
check in.
• Контролирует выполнение
всех необходимых
процессов безопасности
• Интегрируется с
бесплатными SDL
инструментами
– SDL Threat Modeling Tool
– Binscope Binary Analyzer
– Minifuzz File Fuzzer
24. Фаза: Проектирование
Проекти Реали Реагирова
Обучение
Training Requirements
Требования Design Implementation Verification
Проверка Release
Выпуск Response
рование зация ние
Определить и задокументировать архитектуру безопасности и идентифицировать
критические компоненты безопасности
Задокументировать поверхность атаки продукта. Ограничить ее
установками по умолчанию
Определить критерии выпуска обновления продукта в связи с
изменением в безопасности продукта
Результаты автоматизированного тестирования кроссайт скриптинг атак
Устаревание криптографических алгоритмов или замена слабых алгоритмов
Моделирование угроз
Систематический ревью свойств продукта и его архитектуры с точки зрения
безопасности
Определить угрозы и меры снижения угроз
25. Процесс моделирования угроз
• Продумать
требования к
безопасности
продукта, сценари
и использования.
Spoofing
• Идентифицироват
ь классы
Tampering
пользователей.
Repudiation
• Ожидаемое
поведение.
Denial of Service
Elevation of
privilege
26. SDL Threat Modeling Tool
– Обучает созданию
диаграмм угроз
– Анализ угроз и мер
защиты
– Интеграция с
багтреккером
– Отчеты по угрозам и
уязвимостям
Формализует и упрощает
моделирование угроз так чтобы
им мог заниматься архитектор
28. Фаза: Реализация
Проекти Реали Реагирова
Обучение
Training Requirements
Требования Design Implementation Verification
Проверка Release
Выпуск Response
рование зация ние
Разработка кода и ревью процессов, документации и инструментов необходимых
для безопасного развертывания и эксплуатации разрабатываемого продукта
Спецификация утвержденных инструментов и их аналогов
Статический анализ (/analyze (PREfast), FXCop, CAT.NET)
Поиск случаев использования запрещенных API
Применение механизмов защиты предоставляемых ОС (NX, ASLR и
HeapTermination)
Соблюдение специфических требований безопасности для сетевых
сервисов (крос сайт скриптинг , SQL иньекции и.т.д)
Использование безопасных версий библиотек и фреймворков
Прочие рекомендации ( Standard Annotation Language (SAL))
29. Фаза: Проверка
Проекти Реали Реагирова
Обучение
Training Requirements
Требования Design Implementation Verification
Проверка Release
Выпуск Response
рование зация ние
Начните проверки как можно раньше. В идеале сразу же после стадии “code complete”.
Начните планирование процесса реагирования на обнаружение уязвимостей в
выпущенном продукте
Повторно проверьте поверхность атаки. Все ли вы учли?
MiniFuzz тестирование – файлами, вводом данных в интерфейсные элементы и код
сетевой подсистемы
При необходимости выполнить “security push” (с каждым разом все реже)
Не является заменой работе над безопасностью в процессе разработки продукта
Ревью кода
Тестирование на проникновение
Ревью дизайна и архитектуры в свете вновь обнаруженных угроз
30. Фаза: Проверка - Инструменты
• BinScope Binary Analyzer
– Убедиться что SDL соблюден при компиляции и
сборке
• MiniFuzz File Fuzzer
– !exploitable
• RegexFuzer
• Attack Surface Analyzer
– Анализ снимков системы
• AppVerifier
– Динамический анализ системы
32. MiniFuzz File Fuzzer
• MiniFuzz основной
инструмент тестирования для
поиска уязвимостей которые
могут привести к удачным
атакам на код
обрабатывающий файлы и
ввод данных.
– Создает и отправляет в
приложение поврежденные
данные
– Выявляет не
декларированное поведение
приложения
– Используется отдельно или в
составе Visual Studio и Team
Foundation Server
34. Attack Surface Analyzer
• Измеряет потенциальную поверхность
атаки на приложение и ОС
• Может использоваться
разработчиками, тестировщиками, ИТ
специалистами.
• Отображает изменения вносимые в
чистую копию Windows ОС после
установки приложения.
• Проверяет
– Новые или измененные файлы
– Ключи реестра
– Сервисы
– ActiveX
– Открытые сетевые порты
– Списки доступа ACL
– Browser Helper Objects
– И.т.д
35. Фаза: Выпуск и план реагирования
Проекти Реали Реагирова
Обучение
Training Requirements
Требования Design Implementation Verification
Проверка Release
Выпуск Response
рование зация ние
Создать политики поддержки продукта
Создать план реагирования на инциденты безопасности -
Software Security Incident Response Plan (SSIRP)
Контакты и ресурсы внутри организации для адекватной реакции
на обнаружение уязвимостей и защиту от атак
24x7x365 контакт с 3-5 инженерами, 3-5 специалистами
маркетинга, и 1-2 менеджеров верхнего уровня
Обратите внимание на необходимость выпуска экстренных
обновлений вашего продукта из за уязвимостей в коде
сторонних производителей включенном в ваш продукт. Так же
может быть необходимость обновлять продукт после
обновления ОС.
36. Фаза: Выпуск – Final Security Review (FSR)
Проекти Реали Реагирова
Обучение
Training Requirements
Требования Design Implementation Verification
Проверка Release
Выпуск Response
рование зация ние
Проверить продукт на соответствие требованиям SDL и отсутствие известных
уязвимостей
Получаем независимое заключение готовности продукта к выпуску
FSR не является:
Тестом на проникновение. Запрещено ломать и обновлять продукт.
Первой проверкой безопасности продукта
Процессом финальной подписи продукта и отправки его в тираж
Ключевая концепция: Эта фаза не используется как точка для
завершения всех задач пропущенных на предыдущих стадиях
37. Механизмы защиты ОС от атак
SEHOP SEHOP
Включено по умолчанию Heap terminate Heap terminate
Win7
Выключено по умолчанию DEP DEP
ASLR ASLR
SEHOP SEHOP SEHOP
Vista Heap terminate Heap terminate Heap terminate
SP1, SP2 DEP DEP DEP
ASLR ASLR ASLR
SEHOP SEHOP
Heap terminate Heap terminate
Vista RTM
DEP DEP
ASLR ASLR
SEHOP SEHOP SEHOP
Heap terminate Heap terminate Heap terminate
XP SP3
DEP DEP DEP
ASLR ASLR ASLR
SEHOP SEHOP SEHOP
Heap terminate Heap terminate Heap terminate
XP SP2
DEP DEP DEP
ASLR ASLR ASLR
IE 6 IE 7 IE 8 IE 9
38. EMET: Защита от типовых уязвимостей
• Командная строка и
GUI
• Настройка системных
защит от уязвимостей
• Включение защиты
для конкретных
приложений
• Проверка настроек
защиты
39. EMET: Защита приложений
• Защищает
приложения с
известными
уязвимостями
• Защищает от атак 0-
day
• Тонкий контроль
применяемых защит
40. Фаза: Выпуск – Архив
Проекти Реали Реагирова
Обучение
Training Requirements
Требования Design Implementation Verification
Проверка Release
Выпуск Response
рование зация ние
План реагирования на инциденты безопасности создан
Документация для клиентов обновлена
Создан централизованный архив исходного
кода, символов, моделей атак RTM версии
продукта
41. Фаза: Реагирование
Проекти Реали Реагирова
Обучение
Training Requirements
Требования Design Implementation Verification
Проверка Release
Выпуск Response
рование зация ние
Инцидент случился? Идем по заранее созданному
плану.
Выполняем активности по плану реагирования
на инциденты безопасности и выпускаем
обновления в соответствии с графиком релизов
42. Реагирование на инциденты
Выгоды
планового
Watch
Alert and Mobilize
Resources
Assess and
Stabilize
Resolve реагирования
Reporting • Понятно что
Analysis and Mitigation
происходит
• Есть
Provide Guidance ответственные
• Удовлетворенност
Create Fix
ь клиента растет
Update Models • Собираем данные
для будущих
Test Fix разработок
Выпуск
• Проводим
тренинги
Lessons Learned
http://www.microsoft.com/security/msrc/whatwedo/responding.aspx
43. Атаки переходят на уровень приложений
Разработка безопасного кода с помощью SDL – экономия
денег компании
SDL cсущественно улучшил продукты Microsoft
Microsoft сделал процесс SDL доступным всем
Пора применять SDL
45. Ресурсы
• [HOLMES 2010]. Holmes, Graham. (2010, April 05). Cisco CSDL Announcement –
http://blogs.cisco.com/security/the_cisco_secure_development_lifecycle_an_overvie
w/
• [LANE 2010]. Lane, Adrian. (2010, May 10). FireStarter: Secure Development
Lifecycle – You’re Doing It Wrong. Securosis. Retrieved December 29 2010, from
http://securosis.com/blog/firestarter-secure-development-lifecycle-your-doing-it-wrong
• [LADD 2010]. Ladd, David. (2010, May 11). “Do what Microsoft did, not what they do”.
Retrieved December 29 2010, from
http://blogs.msdn.com/b/sdl/archive/2010/05/11/do-what-microsoft-did-not-what-they-
do.aspx
• [LARSON_LADD 2010]. Larson, Larry. Ladd, David. (2010, May 14). Security Talk:
Simplified SDL with David Ladd. Channel 9. Retrieved December 29 2010, from
http://channel9.msdn.com/Blogs/LarryLarsen/Security-Talk-Simplified-SDL-with-
David-Ladd