01 июля 2019

Переход от SDLC к SSDLC

SDLC (Software Development Life Cycle) — жизненный цикл разработки ПО. SDLC подразумевает действия и задачи, которые осуществляются в ходе разработки ПО. В SDLC нет анализа безопасности разрабатываемого продукта. А в SSDLC это учитывается, и добавлен уровень безопасности Secure.
На данный момент только некоторые компании по разработке ПО могут превентивно заниматься безопасностью уже на этапе планирования. Чаще всего о безопасности задумываются, когда жизненный цикл разработки ПО находится на этапе тестирования системы или уже после релиза, что существенно сказывается на стоимости обнаружения и устранения. Бывает, конечно, что о безопасности и вовсе не задумываются.
При разработке безопасного ПО рекомендуется придерживаться Microsoft SDL (Security Development Life cycle) или Cisco SDL (Secure Development Life cycle). Для анализа рисков следует использовать общие методики оценки рисков ISO 27 005, NIST, также можно использовать в оценке типовые ошибки и недоработки ПО CWE.

Процесс разработки ПО по SSDLC должен гарантировать, что действия по обеспечению безопасности, такие как: анализ проекта, анализ архитектуры, проверка кода и тестирование на проникновение являются неотъемлемой частью жизненного цикла разработки. SSDLC помогает интегрировать эти этапы в жизненный цикл продукта. Благодаря этому достигаются:

  • более безопасное программное обеспечение;
  • сокращение / предотвращение ущерба, вызванного кибератаками;
  • раннее обнаружение недостатков в системе;
  • сокращение затрат на восстановление информационной безопасности;
  • значительное уменьшение количества уязвимостей в приложении;
  • общее снижение бизнес-рисков для компании.

SSDLC состоит из этапов, каждый из которых может включать несколько процессов:

  1. Составление требований к ПО.
  2. Проектирование архитектуры и дизайна.
  3. Разработка.
  4. Тестирование.
  5. Эксплуатация.
Далее разберем, как к каждому этапу добавляется уровень безопасности.
Составление требований к ПО
Стандартные требования к разработке включают в себя: бизнес-требования, высокоуровневые цели организации или заказчика ПО, границы проекта, устав проекта (project charter), требования пользователей, а также решения определенных проблем, возникающие у пользователей. Еще определяются функциональные требования для разработчиков ПО, другими словами конкретное поведение системы на взаимодействие пользователей с системой. Определение системных требований охватывает дополнительное ПО и оборудование, необходимое для работы всей системы.
Анализ и расчет рисков следует проводить в зависимости от объема разрабатываемого ПО. Общие международные методики описаны в NIST. Техники оценки рисков приводятся в ISO 31 010.
Общие требования к безопасности включают в себя обеспечение: идентификации и аутентификации, защиты от несанкционированного доступа к информации, регистрации событий и ошибок, контроля точности, полноты и правильности данных, поступающих в систему, обработка программных ошибок и исключительных ситуаций.
Все эти требования должны быть отражены в ТЗ.
Проектирование архитектуры и дизайна
Помимо общих принципов построения архитектуры, (таких как масштабируемость, гибкость, многократное использование, следование принципам SOLID, использование шаблонов проектирования, декомпозиция системы), составляют модели угроз на основе требований к безопасности на предыдущем этапе. При моделирование угроз руководствуются такими документами, как "Базовая модель угроз безопасности персональных данных при их обработке в информационных системах персональных данных" и "Методика определения актуальных угроз безопасности персональных данных при их обработке в информационных системах персональных данных".
Этот этап поможет обеспечить соблюдение безопасности для команды внедрения с учетом потенциальных рисков угроз. Следует разрабатывать интерфейс системы с учетом моделирования угроз. Таким образом, благодаря раннему обнаружению слабых мест в безопасности, затраты на создание защищенных продуктов в конечном итоге ниже, чем без уровня безопасности.
Разработка
Этап включает в себя непосредственно написание кода. Отладка ПО для выявления с последующим устранением ошибок в коде. Написание юнит-тестов, профилирование кода, рефакторинг и отладка. Оптимизация времени выполнения всей системы и отдельных модулей. Использование статического анализатора кода. Проверка сторонних модулей и библиотек на наличие уязвимостей. Команда безопасности должна проверять наличие компонентов, отвечающих требованиям безопасности. Для анализа и написания безопасного кода, можно использовать CWE.
CWE — это разработанный сообществом список общих недостатков безопасности программного обеспечения. Он служит общей базой для программных средств безопасности и базой для выявления слабых мест, смягчения их последствий и предотвращения распространенных угроз.
Тестирование
Здесь происходит тестирование безопасности и инспекция кода, разработка метрик безопасности, динамическое тестирование безопасности, то есть тестирование исполняемых файлов. Этот этап предназначен для выявления недостатков в механизмах безопасности информационной системы, которые защищают данные и поддерживают функциональность.

Квалификационное тестирование включает в себя:

  • функциональное тестирование программы;
  • тестирование на проникновение (пентестинг);
  • динамический анализа кода программы;
  • фаззинг — тестирование программы;
  • анализ поверхности атаки;
  • тесты для всех протоколов.
Эксплуатация
На этапе развертывания и поддержки проиcходит оценка уровня безопасности и конфигурации безопасности. Основное внимание уделяется аудиту безопасности перед развертыванием и мониторингу безопасности. Следует наладить отслеживание ошибок и исправления уязвимостей ПО. Реализация контроля версии ПО. Составление документации к разрабатываемой системе. Обучение пользователей работе в системе.
Все этапы SSDLC повторяются до тех пор, пока система не будет полностью соответствовать необходимым требованиям по безопасности.
SSDLC должен прийти на смену SDLC, так как сохранность данных — одно из основополагающих требований компаний и законодательства. В этом случае не обязательно нанимать отдельную команду в штат, на рынке ИБ есть компании, которые предоставляют услуги в том числе по добавлению уровня безопасности в жизненный цикл ПО.
Яков Жихарев
Разработчик, Акрибия
Другие публикации по теме