Skip to main content
Цикл безопасной
разработки
Алексей Бабенко
руководитель направления, PA&PCI QSA
Мастер-класс для RISC, www.risc.today
Я
• Руководитель направления в Информзащите;
• 12 PA-DSS проектов, больше 30 PCI DSS
+ анализ ИС, ISO27001, аудиты ИБ;
• Занимался анализом web-приложений, 2007-
2012 играл в CTF в SiBears;
• Люблю поговорить и что-нибудь написать.
• Цикл – совокупность явлений, процессов,
составляющая кругооборот в течение известного
промежутка времени (БЭС)
• Безопасный – не угрожающий опасностью,
лишённый какой либо угрозы (Толковый словарь)
• Разработка – процесс создания программного
обеспечения (я)
• «SDLC = Systems/ Software Development Life Cycle»
Разработчик ПО
• «SDLC = Security Development Life Cycle»
ИБ-ник
Цикл безопасной разработки
Зачем?
–
• Большинство обнаруживаемых уязвимостей –
типовые, общеизвестные, хорошо описанные.
Источник: Global Security Report 2013, Trustwave
Зачем? Наши реалии
Источник: внутренняя статистика Информзащиты по проведенным тестам на проникновение
(только уязвимости ПО)
В фокусе внимания
• Microsoft Security Development Lifecycle
• Cisco Secure Development Lifecycle
• PCI Security Standards (рекомендации к
процессам разработки на примере PA-DSS 3.0)
• Обеспечение ИБ на стадиях ЖЦ АБС (РС БР
ИББС-2.6-2014)
• Бонус – моделирование угроз STRIDE
Microsoft SDL
7 основных фаз:
•Training (обучение)
•Requirements (требования)
•Design (проектирование)
•Implementation (реализация)
•Verification (анализ)
•Release (выпуск)
•Response (поддержка)
В каждой фазе свои практики.
Microsoft SDL - практики
Training
•Обучение безопасности:
• Все задействованные сотрудники
• Не реже 1 раза в год
• Знания для выполнение остальных фаз
Requirements
•Определение требований ИБ
• Включая назначение ответственных за ИБ
•Оценка рисков
•Определение требований к качеству
Microsoft SDL - практики
Design
•Архитектурные требования
•Анализ/ сокращение поверхности атаки
• Моделирование угроз
Implementation
•Использование доверенных средств
•Практики безопасного программирования
• Статический анализ кода
Microsoft SDL - практики
Verification
•Динамический анализ
• Фаззинг
• Проверка поверхности атаки
Release
•Планы реагирования на инциденты
• Финальный анализ безопасности
• Доверенный выпуск
Response
• Выполнение планов реагирования на
инциденты
Microsoft SDL – ссылки
• Раздел Security Development Lifecycle на сайте
Microsoft
• Интеграция
процессов обеспечения безопасной
разработки (ALM Summit)
Cisco SDL
• Требования (Product Security Requirements)
• 3rd Party Security
• Проектирование (Secure Design)
• Реализация (Secure Coding)
• Оценка (Secure Analysis)
• Тестирование (Vulnerability Testing)
Cisco SDL - стадии
Product Security Requirements:
•Внутренние требования ИБ
•Внешние требования (Market-Based)
3rd Party Security:
•Реестр используемого стороннего ПО
•Уведомление о уязвимостях
Secure Design:
•Проектирование с учетом ИБ (обучение, лучшие
практики, безопасные компоненты)
•Моделирование угроз (STRIDE)
Cisco SDL - стадии
Secure Coding:
•Обучение
•Принципы безопасного программирования
•Проверка кода, статический анализ
•Стандарт безопасного программирования
Secure Analysis:
•Проверки ключевых областей ИБ
Vulnerability Testing:
•Тест-кейсы
•Тестирование на проникновение
Cisco SDL - ссылки
Раздел Cisco SDL на сайте Cisco
PA-DSS 3.0
Выпуск +
Проектирование
Создание
Анализ
Оценка рисков
Обучение
Отслеживание
уязвимостей
PA-DSS 3.0 - Обучение
• Основные темы:
• требования PCI DSS
• приемы безопасной разработки (OWASP, CWE),
проектирования, тестирования, пр.
• лучшие практики отрасли
• Форма обучения:
• самостоятельное
• внутреннее
• внешнее
PA-DSS 3.0 - Проектирование
• Формирование требований:
• Требования PCI DSS (ПО = системный компонент)
• Учет лучших практик
• Учет внутренних требований по ИБ
• Учет оценки рисков и информации об уязвимостях
• Проектирование с учетом сформированных
требований
PA-DSS 3.0 - Создание
• Требования к разработке:
• Использование методов безопасного
программирования
• Применение лучших практик
• Учет требований PCI DSS
• Учет оценки рисков и анализа угроз
• Разделение сред и обязанностей
• Корректное использование тестовых данных
PA-DSS 3.0 - Анализ
• Анализ кода (белый ящик)
• Использование приемов безопасной разработки
• Проводит специалист с опытом в данной сфере не
являющийся автором кода
• Анализ для всех изменений на предмет безопасности
• Тестирование безопасности (черный ящик):
• Общефункциональное с учетом выявленных
уязвимостей
• Тестирование безопасности:
• Реализация требований PCI DSS
• Меры по защите от известных уязвимостей
• Меры предотвращения недостатков выявленных в модели угроз
и при анализе новых уязвимостей
PA-DSS 3.0 - Выпуск
• Решение за выпуск релиза:
• Предыдущие этапы были выполнены успешно
• Требования стандарта учтены
• Разработаны процедуры «отката»
• Оценка воздействия на затрагиваемый процесс
• Ответственный за выпуск релиза – отвечает за факт
выполнения процедур, ответственность за качество
выполнения на соответствующих специалистах
• Релиз – не конец проекта
PA-DSS 3.0 - Выявление
уязвимостей
• Выявляем все что может влиять на
безопасность ПО:
• Новые уязвимости и слабости в функциях
программирования
• Уязвимости компиляторов
• Уязвимости используемых сторонних библиотек,
компонент, сервисов, протоколов
• Корректная работа с последними
обновлениями системных компонент
• Учет результатов при проектировании,
разработке, анализов
PA-DSS 3.0 - Анализ угроз
• Стандарт – минимальный набор требований,
каждое ПО уникально и может иметь
специфичные угрозы
• Моделирование угроз – STRIDE, OWASP, CERT
• Учет результатов анализа при проектировании,
разработке, анализе
PA-DSS 3.0 - Ссылки
• PA-DSS 3.0
• PA-DSS 3.0 (рус)
• PCI DSS 2.0 eCommerce Guidelines
• Requirement 6.6 Application Reviews and Web Application Firewalls Clarified v1
• Mobile Payment Acceptance Security Guidelines for Developers v1.0
РС БР ИББС-2.6-2014 - Стадии
• разработки технического задания
• проектирования АБС
• создания и тестирования АБС
• приемки и ввода в действие
• эксплуатации
• сопровождение и модернизация АБС
• снятия с эксплуатации
РС БР ИББС-2.6-2014 - Стадии
Разработка технического задания
•определение требований по ИБ
•предварительный анализ угроз (рекомендуемое)
Проектирование
•разработка архитектуры
•функциональные требования ИБ
•стандарты конфигурации
РС БР ИББС-2.6-2014 - Стадии
Создание и тестирование
•управление версиями и изменениями
•обеспечение ИБ сред разработки и тестирования
•тестирование компонентов (в ходе разработки,
перед релизом, на предварительных испытаниях)
•анализ кода (рекомендуемое)
•эксплуатационная документация
Прием и ввод в действие
•проведение опытной эксплуатации
•тестирование на проникновение (рекомендуемое)
•приемочные испытания
РС БР ИББС-2.6-2014 - Стадии
Эксплуатация:
•контроль корректного использования
•оценка защищенности (рекомендуемое)
•мониторинг уязвимостей
Сопровождение и модернизация:
•безопасное обновление/ модернизация
Снятие с эксплуатации:
•архивирование информации
•гарантированное уничтожение информации
РС БР ИББС-2.6-2014 -
Приложения
• Типовые недостатки в реализации функций
безопасности автоматизированных систем
• Рекомендации к проведению контроля
исходного кода
• Рекомендации к проведению оценки
защищенности
• Рекомендации к проведению контроля
параметров настроек технических защитных мер
РС БР ИББС-2.6-2014 - Ссылки
• Рекомендации в области стандартизации БР
Обеспечение ИБ на стадиях ЖЦ АБС
• Раздел по информационной безопасности на
сайте Банка России
Сравнение SDL
Cisco SDL Microsoft SDL PA-DSS SDL РС БР ИББС-2.6-2014)
Обучение разработчиков Secure Design, Secure Coding Training Обучение -
Отслеживание
уязвимостей
3rd Party Security Implementation (частично) Выявление уязвимостей Эксплуатация
Определение требований
к ИБ
Product Security Requirements Requirements Проектирование Проектирование
Создание модели угроз Secure Design Design Оценка рисков
Разработка технического задания
(рекомендательно)
Практики безопасной
разработки
Secure Coding Implementation Создание -
Анализ кода Secure Analysis Implementation Анализ кода
Создание и тестирование
(рекомендательно)
Тестирование
безопасности
Vulnerability Testing Verification, Release Тестирование безопасности Создание и тестирование
Выпуск релиза - Release Выпуск Прием и ввод в действие
Поддержка - Response Поддержка Сопровождение и модернизация
Вывод из эксплуатации - Снятие с эксплуатации
Внедрение SDL
1. Обучение
2. Практики безопасного программирования
3. Тестирование безопасности и анализ кода
4. Процедуры выпуска и поддержки
5. Отслеживание уязвимостей, реестр ПО
6. Формальное определение требований к ИБ
7. Планы реагирования на инциденты
8. Моделирование угроз, анализ поверхности атак
9. Внешний анализ
Моделирование угроз
STRIDE =
•Spoofing (подмена субъекта)
•Tampering (нарушение целостности)
•Repudiation (отказ от авторства)
•Information disclosure (нарушение конфиденциальности)
•Denial of service (отказ в обслуживании)
•Elevation of privilege (повышение привилегий)
Data Flow Diagrams — диаграммы потоков данных
Моделирование угроз
1. Построение DFD:
1. Процесс (множественный процесс)
2. Хранилище
3. Информационный поток
4. Внешний элемент (посредник, интерактор)
5. Граница доверия
2. Декомпозиция элементов (1-4)
3. Повторение 1 и 2
4. Формирование перечня угроз
5. Оценка применимости
Моделирование угроз
Spoofing Tampering Repudiatio
n
Information
disclosure
Denial of
service
Elevation of
privilege
Поток
Хранилище
Процесс
Посредник
Моделирование угроз
Источник: https://www.owasp.org/index.php/Application_Threat_Modeling
Моделирование угроз
Источник: https://www.owasp.org/index.php/Application_Threat_Modeling
Моделирование угроз – TMT
Моделирование угроз – Ссылки
• Application Threat Modeling на сайте OWASP
• Статья с описанием подхода на Хабре
• Обнаружение недостатков
безопасности при помощи STRIDE (MSDN
Magazine)
• The STRIDE Threat Model на сайте Microsoft
• Microsoft Threat Modeling Tool 2014
ВОПРОСЫ?
Алексей Бабенко
руководитель направления, PA&PCI QSA
a.babenko@infosec.ru
+ 7 (495) 980-23-45 #458
+ 7 905 991-99-19
skype: arekusux
arekusux.blogspot.com
www.infosec.ru
Полезные ссылки
• Безопасное программирование
• http://cwe.mitre.org
• http://owasp.org
• Общие базы данных уязвимостей
• http://www.securityfocus.com
• http://nvd.nist.gov
• http://secunia.com
• Информация по внешнему обучению
• http://itsecurity.ru/catalog/kp75
• http://www.sans.org/security-training.php
• https://www.owasp.org/index.php/Category:OWASP_AppSec_Conference
• http://www.giac.org/certification/gssp-java
• Материалы для организации внутреннего обучения:
• https://www.owasp.org/index.php/Category:OWASP_Code_Review_Project
• https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
• http://www.sans.org/top25-software-errors
• http://projects.webappsec.org/w/page/13246978/Threat-Classification
• http://www.cert.org/secure-coding
• http://cwe.mitre.org/data/graphs/699.html