Безопасная разработка является неотъемлемой частью непростого пути к безопасности приложений. И у всех руководителей и лидов R&D, кто задумывается о построении у себя AppSec, возникает вопрос — с чего же начать? А начать нужно с организации процессов: определить положение дел, понять, какие активности необходимо внедрить, какие оптимизировать, а какие убрать. В общем, оценить зрелость текущих процессов безопасной разработки и обозначить дальнейшие шаги в светлое AppSec-будущее компании. И тут на помощь нам приходят фреймворки по безопасной разработке.
Привет! Меня зовут Артем Кармазин, я старший консультант внедрения процессов безопасной разработки Positive Technologies. Существует множество методологий для оценки зрелости компании в части AppSec, например OWASP SAMM, DSOMM, OpenSAMM, Microsoft SDL и BSIMM. О BSIMM и будет идти речь дальше, поскольку на сегодняшний день это один из самых популярных фреймворков в безопасной разработке.
Что такое BSIMM14
В конце 2023 года Synopsys опубликовал ежегодный отчет BSIMM14, основанный на анализе подходов к обеспечению безопасности программного обеспечения в 130 организациях. Сам отчет содержит статистические данные о мерах безопасности, применяемых в организациях, и в нем даже упомянута тема безопасности LLM, ведь она сейчас у всех на слуху, и еще много чего интересного. На официальном сайте Synopsys можно подробнее ознакомиться с отчетом. А мы остановимся на самой методологии.
Внедряем безопасную разработку с помощью BSIMM. Теория
Building Security in Maturity Model (BSIMM) — это методология оценки процессов безопасной разработки программного обеспечения в организации. Благодаря данной методике можно определить, на какой стадии находятся текущие процессы и какая отправная точка к повышению уровня зрелости — экспертизы сотрудников и подходов к разработке.
BSIMM распределяется на 4 домена:
Governance— практики, которые помогут организовать процессы и управлять ими, а также оценивать инициативы безопасной разработки.
Intelligence— практики по сбору информации обо всем, что связано с безопасной разработкой в организации.
SSDL Touchpoints — содержит практики анализа артефактов и процессов в рамках разработки ПО.
Deployment — практики, отвечающие за взаимодействие с подразделениями инфраструктурной и сетевой безопасности.
Домены, в свою очередь, делятся на 12 практик. В каждом домене 3 практики.
Практики BSIMM:
Governance:
-
Strategy & Metrics.
Помогает понять, как подойти к процессу планирования, какие роли и обязанности необходимо определить, какие метрики сформировать для достижения заветных целей в безопасной разработке.
-
Compliance & Policy.
Помогает комплексно подойти к выполнению всех требований регуляторов, проводить аудиты и контроль соответствия.
-
Training.
Описывает подходы к повышению компетенций всех заинтересованных лиц. Помимо обучения, учтены и активности по поощрению достижений в учебе, не забыли про обучение для подрядчиков и аутсорсинговых сотрудников.
Intelligence:
-
Attack Models.
Предназначена для того, чтобы сформировать понимание, какая угроза по-настоящему актуальна, какова вероятность ее возникновения и какие категории злоумышленников могут навредить данным.
-
Security Features & Design.
Описывает коммуникации архитектурных и ИБ-подразделений, а также подходы к проектированию архитектуры.
-
Standards & Requirements.
Отвечает за формирование требований, мер безопасности, соблюдение стандартов и других документов, регулирующих отрасль. Для того чтобы в процесс были вовлечены все заинтересованные, описывает этапы создания внутреннего портала.
SSDL Touchpoints:
Architecture Analysis.
Описывает анализ архитектуры с учетом рисков, применение стандартизации к архитектурному описанию и как сделать ранжирование приложений по уровню риска.
Code Review.
Отвечает за использование инструментов безопасной разработки в CI/CD (например, статический анализ), автоматизацию обнаружения уязвимостей, создание кастомных правил и соблюдение best practices в разработке.
Security Testing.
Помогает настроить процесс обнаружения дефектов, автоматизацию тестирования безопасности и практики QA.
Deployment:
Penetration Testing.
Объясняет, как организовать процесс тестирования на проникновение и обработку этих результатов.
Software Environment.
Описывает подходы к мониторингу приложений, объясняет, как внедрить средства контроля облачной безопасности, оркестрацию контейнеров и многое другое, что связано с развертыванием.
Configuration Management & Vulnerability Management.
Описывает работу с уязвимостями, взаимодействие подразделений при реагировании на инциденты и меры по обнаружению дефектов.
Вот перечень всех активностей, структурированных по практикам и доменам. BSIMM распределяет активности по трем уровням зрелости, показывая, насколько популярна сама практика и как часто она применяется. Чем выше уровень — тем сложнее практика.
Управление | |||||
Стратегия и метрики |
Комплаенс и политики |
Обучение |
|||
[SM1.1] |
Описание процесса SSDL и его развитие при необходимости |
[CP1.1] |
Стандартизация требований регуляторов |
[T1.1] |
Обучение сотрудников компании основам ИБ |
[SM1.3] |
Обучение руководителей и топ-менеджмента |
[CP1.2] |
Обеспечение конфиденциальности |
[T1.7] |
Организация индивидуального обучения по запросу |
[SM1.4] |
Внедрение и контроль quality gates |
[CP1.3] |
Разработка регламентирующих документов |
[T1.8] |
Привлечение сотрудников ИБ к процессу проведения обучения |
[SM2.1] |
Публикация данных о безопасности ПО внутри организации |
[CP2.1] |
Создание перечня персональных данных |
[T2.5] |
Проведение awareness среди группы поддержки ИБ |
[SM2.2] |
Соблюдение контрольных точек ИБ в процессе разработки ПО |
[CP2.2] |
Принятие рисков безопасности, связанных с комплаенсом |
[T2.8] |
Использование материалов, связанных с историей компании |
[SM2.3] |
Создание института вовлеченных в ИБ (спутники, помощники, обеспечивающие поддержку) |
[CP2.3] |
Внедрение средств контроля соответствия |
[T2.9] |
Расширение учебных программ, ориентированных на конкретные роли |
[SM2.6] |
Требование подтверждения выпуска ПО сотрудниками безопасности |
[CP2.4] |
Определение SLA по безопасности ПО для всех контрактов с поставщиками |
[T2.10] |
Проведение мероприятий по безопасности ПО |
[SM2.7] |
Создание роли евангелиста и проведение внутреннего маркетинга |
[CP2.5] |
Обеспечение осведомленности руководства об обязательствах по обеспечению соответствия требованиям регуляторов и конфиденциальности |
[T2.11] |
Ежегодное повышение квалификации |
[SM3.1] |
Отслеживание программных активов |
[CP3.1] |
История соответствия ПО комплаенсу |
[T3.1] |
Вознаграждение за успехи в обучении |
[SM3.2] |
Внедрение внутреннего маркетинга |
[CP3.2] |
Обеспечение совместимости политик ИБ |
[T3.2] |
Обучение поставщиков и внешних сотрудников (аутстафф/аутсорс) |
[SM3.3] |
Использование метрик для управления ресурсами |
[CP3.3] |
Внесение изменений в политики ИБ на основе данных эффективности SSDL |
[T3.5] |
Возможность предоставления экспертных знаний по открытым каналам |
[SM3.4] |
Интеграция управления жизненным циклом программного обеспечения |
[T3.6] |
Определение новых сторонников ИБ с помощью наблюдения |
||
[SM3.5] |
Управление рисками цепочки поставок ПО |
База знаний | |||||
Модели атак |
Особенности безопасного проектирования и дизайна |
Стандарты и требования |
|||
[AM1.2] |
Использование схемы классификации данных для инвентаризации программного обеспечения |
[SFD1.1] |
Внедрение средств защиты |
[SR1.1] |
Создание стандартов ИБ |
[AM1.3] |
Выявление потенциальных злоумышленников |
[SFD1.2] |
Взаимодействие архитекторов и ИБ-подразделения |
[SR1.2] |
Создание внутреннего портала |
[AM1.5] |
Сбор и использование информации об атаках |
[SFD2.1] |
Использование компонентов и услуг, обеспечивающих безопасность при проектировании |
[SR1.3] |
Перевод ограничений соответствия в требования |
[AM2.1] |
Создание моделей атак и примеров злоупотреблений, связанных с потенциальными злоумышленниками |
[SFD2.2] |
Решение сложных проблем архитектуры |
[SR2.2] |
Процесс создания и пересмотра стандартов |
[AM2.2] |
Создание моделей атак, специфичных для конкретной технологии |
[SFD3.1] |
Создание совета по верификации и поддержке безопасных паттернов архитектуры |
[SR2.4] |
Идентификация открытого исходного кода |
[AM2.6] |
Архивация истории атак |
[SFD3.2] |
Использование утвержденных СЗИ |
[SR2.5] |
Создание шаблона SLA |
[AM2.7] |
Внутренний форум для обсуждения атак |
[SFD3.3] |
Размещение безопасных моделей архитектуры |
[SR2.7] |
Контроль риска использования OSS-компонентов |
[AM3.1] |
Исследовательская группа для анализа новых методов атаки |
[SR3.2] |
Создание требований ИБ к поставщикам |
||
[AM3.2] |
Создание и использование автоматизации для имитации злоумышленников |
[SR3.3] |
Использование стандартов безопасного написания кода |
||
[AM3.4] |
Создание шаблонов атак в зависимости от конкретной технологии |
[SR3.4] |
Создание стандартов для технологического стека |
||
[AM3.5] |
Поддержка и использование списка наиболее вероятных атак |
|
|||||
Точки соприкосновения с жизненным циклом | |||||
Анализ архитектуры |
Код-ревью |
Тестирование безопасности |
|||
[АА1.1] |
Реализация проверки безопасного проектирования |
[CR1.2] |
Организация регулярного код-ревью |
[ST1.1] |
Тестирование пограничных значений в ходе QA |
[АА1.2] |
Анализ архитектуры для высокорисковых приложений |
[CR1.4] |
Использование инструментов автоматического анализа исходного кода |
[ST1.3] |
Тестирование, основанное на требованиях безопасности |
[АА1.4] |
Внедрение методики оценки риска приложений |
[CR1.5] |
Обязательное код-ревью всех проектов |
[ST1.4] |
Интеграция инструментов ИБ в процесс QA |
[АА2.1] |
Внедрение процесса анализа архитектуры |
[CR1.7] |
Назначение ответственных за инструменты |
[ST2.4] |
Тестирование QA с учетом результатов сканирования ИБ |
[АА2.2] |
Шаблонизация артефактов описания архитектуры |
[CR2.6] |
Использование кастомных правил для большей точности сканирования |
[ST2.5] |
Включение тестов ИБ в автоматические тесты QA |
[АА2.4] |
Передача лидирующей роли в архитектурном анализе группе ИБ |
[CR2.7] |
Использование перечня самых частых ошибок |
[ST2.6] |
Фаззинг-тестирование API |
[АА3.1] |
Передача лидирующей роли в архитектурном анализе инженерам |
[CR2.8] |
Централизация информирования о дефектах |
[ST3.3] |
Управление тестами с помощью анализа результатов сканирований |
[АА3.2] |
Внесение результатов анализа в архитектурные шаблоны |
[CR3.2] |
Оркестрация результатов ИБ-проверок |
[ST3.4] |
Использование анализа покрытия кодовой базы |
[АА3.3] |
Выстраивание процесса наставничества группы ИБ по архитектурному анализу |
[CR3.3] |
Создание возможности устранения ошибок централизованно |
[ST3.5] |
Создание и применение тестов безопасности на основе недопустимых действий |
[CR3.4] |
Автоматизация обнаружения вредоносного кода |
[ST3.6] |
Внедрение тестирования, основанного на событиях безопасности |
||
[CR3.5] |
Обеспечение соблюдения стандартов безопасного написания кода |
Развертывание и эксплуатация | |||||
Тестирование на проникновение |
Среда эксплуатации |
Управление конфигурацией и уязвимостями |
|||
[PT1.1] |
Привлечение внешних специалистов для поиска уязвимостей |
[SE1.1] |
Мониторинг входных данных |
[CMVM1.1] |
Реагирование на инциденты |
[PT1.2] |
Передача результатов тестирований на проникновение в систему управления дефектами |
[SE1.2] |
Обеспечение базовой безопасности сети |
[CMVM1.2] |
Выявление дефектов программного обеспечения, обнаруженных в ходе мониторинга операций, и передача их в инженерную службу |
[PT1.3] |
Внутреннее использование инструментов тестирования на проникновение |
[SE1.3] |
Внедрение средств контроля безопасности облачной среды |
[CMVM1.3] |
Отслеживание дефектов, обнаруженных в процессе эксплуатации |
[PT2.2] |
Тестирование методом «белого ящика» |
[SE2.2] |
Определение критериев безопасного развертывания |
[CMVM2.1] |
Экстренное реагирование и внесение изменений |
[PT2.3] |
Регулярное тестирование на проникновение |
[SE2.4] |
Обеспечение целостности кода |
[CMVM2.3] |
Инвентаризация ПО |
[PT3.1] |
Привлечение сторонних пентестеров для проведения глубокого анализа |
[SE2.5] |
Использование контейнеризации |
[CMVM3.1] |
Исправление всех дефектов ПО |
[PT3.2] |
Настройка инструментов тестирования на проникновение |
[SE2.7] |
Внедрение оркестрации контейнеров |
[CMVM3.2] |
Совершенствование цикла SSDL для предотвращения дефектов, обнаруженных в ходе эксплуатации |
[SE3.2] |
Использование инструментов защиты кода |
[CMVM3.3] |
Симуляция критических ситуаций |
||
[SE3.3] |
Мониторинг и диагностика поведения приложений |
[CMVM3.4] |
Запуск программы Bug Bounty |
||
[SE3.6] |
Создание SBOM для развернутых приложений |
[CMVM3.5] |
Автоматизация проверок безопасности операционной инфраструктуры |
||
[SE3.8] |
Анализ компонентов приложений |
[CMVM3.6] |
Публикация данных о рисках для артефактов |
||
[SE3.9] |
Обеспечение целостности инструментов разработки |
[CMVM3.7] |
Организация процесса ответственного раскрытия уязвимостей |
||
[CMVM3.8] |
Управление скоупом атак для приложений |
На каждой активности останавливаться не будем, давайте посмотрим на те, которые входят в топ-10 активностей BSIMM14 и считаются самыми популярными.
[SM1.4] Внедрение и контроль quality gates
Суть: Постепенный подход к внедрению контрольных точек безопасности позволит командам на начальном этапе определять, что является критичным в разработке и как это не допускать в дальнейшем, не блокируя сам конвейер.
[CP1.1] Стандартизация требований регуляторов
Суть: Комплексный подход к определению требований регуляторов поможет не упустить нормативные нюансы и заложить все требования еще на начальных этапах жизненного цикла.
[CP1.2] Обеспечение конфиденциальности
Суть: Тут все понятно, квадратное не катим, круглое не носим, конфиденциальные данные защищаем.
[SR1.2] Создание внутреннего портала
Суть: Внутренний портал по безопасности поможет всем заинтересованным быстро найти нужную информацию, изучить подходы к безопасности и поделиться чем-то полезным.
[AA1.1] Реализация проверки безопасного проектирования
Суть: Не секрет, что при проектировании архитектуры должны быть заложены функции безопасности (например, шифрование, контроль доступа и так далее).
[CR1.4] Использование инструментов автоматического анализа исходного кода
Суть: Must have в безопасной разработке. Ведь применение SAST-инструментов позволит выявлять уязвимости еще до того, как артефакты попали в сборку.
[ST1.1] Тестирование пограничных значений в ходе QA
Суть: Команда QA, помимо функционального тестирования, проводит базовые тесты злоумышленника, чтобы проверить те или иные условия.
[PT1.1] Привлечение внешних специалистов для поиска уязвимостей
Суть: Одна из активностей, которая поможет определить, насколько ваше приложение безопасно. Очень важно смотреть на подход к безопасности с различных векторов.
[SE1.2] Обеспечение базовой безопасности сети
Суть: Пункт, без которого построение безопасной инфраструктуры абсолютно невозможно.
[CMVM1.1] Реагирование на инциденты
Суть: Быстрое и организованное реагирование на инциденты позволит оперативно восстановить работоспособность и корректное функционирование приложения или инфраструктуры. Ведь нарушение доступности, целостности и конфиденциальности несет за собой не только репутационные риски, но и материальные.
А еще относительно BSIMM13 добавилась новая активность, связанная с обеспечением целостности инструментов разработки (SE3.9). Суть данной практики заключается в предотвращении несанкционированных изменений в исходном коде и других артефактов жизненного цикла.
Смотрим, как все устроено на практике
Представим, что мы небольшая компания, где трудится десяток программистов, и мы хотим вывести безопасность разработки на уровень выше. Для начала необходимо определить, какие активности у нас уже запущены, а какие необходимо внедрить, и обозначить сроки. Временной промежуток обычно определяют в 3 года — это оптимальный вариант. Да, процесс построения безопасной разработки небыстрый, поэтому стоит как можно раньше начать.
Для удобства разобьем наш план поквартально. Пример подхода показан на практике «Стратегия и метрики» домена «Управление».
После того как мы прошлись по каждому домену, у нас есть четкий план реализации активностей и перечень уже существующих.
Для наглядности BSIMM рекомендует строить радиальную диаграмму, на ней видно текущий уровень зрелости и как этот уровень будет меняться в запланированный период. С таким представлением уже не стыдно приходить к руководству и показывать наши грандиозные планы.
Необходимо помнить, что выбор методологии — важный этап на пути к построению процессов безопасной разработки. Кто-то использует уже готовые фреймворки, такие как BSIMM, DSOMM, OWASP SAMM и другие. А кто-то разрабатывает свои, исходя из собственных целей и задач. В конечном итоге главное понять, в каких аспектах компании необходимо подрасти, как улучшить и поддержать текущие процессы.
Вот здесь можно посмотреть, какие еще существуют фреймворки на данный момент. P. S. Там не только про фреймворки, а еще много чего интересного!