Application Security Testing: виды, особенности, кейсы
Узнать больше
SDLC и безопасность приложений
SDLC – это жизненный цикл разработки программного обеспечения (Software development lifecycle). Он представляет собой несколько этапов (или фаз), которые проходит любое ПО. По сути, это подробный план, показывающий, как разрабатывать программное обеспечение, поддерживать его, изменять, улучшать.
SDLC и методологии разработки
Часто с этой аббревиатурой ассоциируют методологии разработки. Их существует немало. Подходящая выбирается исходя из масштабов проекта, характера требований к готовому продукту, стабильности используемых технологий, доступности необходимых ресурсов, с учетом ряда других факторов.
В настоящее время распространены следующие модели:
- Каскадная (waterfall). Простая в реализации, подходит для коротких проектов с нулевым риском и фиксированными требованиями.
- V-образная. Базируется на каскадной. Эта модель SDLC подразумевает контроль качества на каждом из этапов. Подходит для проектов, для которых ошибки могут иметь фатальные последствия, когда критически важна точность выполнения требований.
- Модель эволюционного прототипирования. Опять же, в основе – waterfall. При прохождении каждого этапа сразу же происходят необходимые доработки проекта на основе отзывов клиента (заказчика). Создается несколько прототипов, один из которых в итоге дорабатывается и отправляется в продакшн.
- Итеративная и инкрементальная. Решение разрабатывается модулями при реализации серии циклов. А при работе над каждым модулем используется все та же каскадная модель.
- Спиральная. Включает в себя черты предыдущих. Используется для сложных, крупных проектов с частыми релизами, подходит для ПО с неясными требованиями.
- Гибкие методологии. Их более 50. И многие, опять же, могут включать черты рассмотренных выше.
Учитывая, что многие модели, использующиеся в жизненным цикле разработки, содержат элементы каскадной, при рассмотрении вопросов безопасности целесообразно взять за основу ее.
Этапы SDLC и меры для обеспечения безопасности приложений на каждом из них
В жизненном цикле разработки ПО можно выделить 6 основных этапов:
- Анализ, составление требований к продукту.
- Планирование.
- Проектирование и дизайн.
- Разработка.
- Тестирование.
- Развертывание, эксплуатация.
Безопасная разработка программного обеспечения на каждом из этапов: какими средствами реализуется
На первом, втором и третьем этапах формируются бизнес-требования к продукту, учитываются пожелания и потребности пользователей, определяются границы проекта. К работе привлекаются специалисты из разных сфер (маркетинг, продажи, поддержка и так далее). В результате всех этих усилий должны появиться ответы на вопросы: «Какие проблемы должно решать ПО?», «Что именно (какой продукт) необходимо сделать?»
Одновременно на этой стадии должны продумываться и вопросы обеспечения безопасности, в частности в отношении идентификации, аутентификации, регистрации событий информационной безопасности (далее – ИБ), защиты инцидентов ИБ, контроля полноты, точности и правильности обрабатываемых данных. Это реализуется с помощью оценки угроз, анализа поверхности атаки, определения требований безопасности и анализа рисков. На данных этапах необходимо опираться на такие документы, как стандарт ISO 31010, разработанная ФСТЭК «Базовая модель угроз безопасности персональных данных при их обработке в информационных системах персональных данных», а также другие документы (международные, национальные, отраслевые).
Начиная с этапа разработки SDLC для тестирования приложения безопасность обеспечивается с помощью:
- применения практик безопасного программирования,
- проведения автотестов,
- динамического анализа кода,
- организации пентестов (испытаний на проникновение),
- функционального тестирования,
- тестирования протоколов,
- мониторинга угроз, реагирования на инциденты (после развертывания, в ходе эксплуатации).
Также довольно распространенный инструмент для обеспечения безопасной разработки программного обеспечения, который может применяться на всех этапах (начиная с четвертого для рассматриваемого случая), – это статический анализ приложений (SAST). Он сводится к анализу программного кода без необходимости запуска программы, а значит, гарантированно подходит для этапов разработки, тестирования, развертывания и эксплуатации.
Статический анализ кода реализуется с помощью специального инструмента – SAST-анализатора. Эта технология позволяет:
- Выявлять уязвимости. Причем не только в «собственных» файлах приложения, но и в библиотеках и сторонних компонентах, которые используются при разработке.
- Находить недекларированные возможности (НДВ) в программном обеспечении.
Solar appScreener, как один из SAST-анализаторов, может проводить анализ исполняемых файлов с помощью эффективных технологий декомпиляции и деобфускации.
Посредством SAST-анализа можно организовать контроль безопасности приложений, написанных с использованием разных языков программирования. Он не требует серьезных вычислительных мощностей и серьезных временных трат (можно не выделять отдельное время, а тестировать ПО параллельно разработке или эксплуатации). Еще одна особенность некоторых SAST-инструментов – относительная простота использования. Для работы с ними и интерпретации результатов не нужна команда разработчиков. С этим без проблем справится офицер службы безопасности или представитель другого отдела (в зависимости от специфики компании и процессов в ней). Можно организовать постоянный контроль безопасности программного обеспечения даже после сдачи и завершения гарантийного срока эксплуатации. Компании-пользователи могут реализовать это своими силами.
При добавлении к каждому этапу мер обеспечения безопасности можно говорить о трансформации SDLC в SSDLC. Это – Secure Software development lifecycle. Такой подход становится все более популярным, ведь реализация мер безопасности на протяжении всех этапов жизненного цикла – это хорошая практика, позволяющая сэкономить немало времени.