Аналитика и комментарии
SSDLC: с чего начинается безопасность приложений
Информационные системы – основа бизнеса современных технологических компаний, в арсенале которых содержится ряд программного обеспечения, создаваемого под потребности бизнеса. Разработчиком могут выступать внешние подрядчики или собственные подразделения разработки ПО, а часто и обе стороны одновременно.
Создаваемое программное обеспечение требует повышенного внимания со стороны информационной безопасности, контроля недостатков, ведущих к некорректной работе. Среди них:
ошибки на уровне архитектуры;
уязвимости при реализации;
логические ошибки;
программные закладки;
использование уязвимых компонентов;
небезопасная конфигурация инфраструктуры;
проблемы с сопровождением и устранением выявленных уязвимостей в ПО и используемых компонентах.
Результаты проведенных нами работ и мировой опыт других компаний, проводящих оценку защищенности приложений, показывает, что в большинстве случаев разработанное ПО уязвимо через эксплуатацию типовых, хорошо известных уязвимостей. Эти недостатки вели к нарушению конфиденциальности данных, сбоям в корректной работе сервиса и к появлению возможности несанкционированного доступа.
Вторая тенденция, на которую отдельно хочется обратить внимание, – увеличение трудоемкости исправления недостатков на каждом последующем этапе жизненного цикла создания ПО. Выявление недостатков в обеспечении информационной безопасности на более ранних стадиях уменьшает задержки в ходе создания ПО и экономит ресурсы, задействованные в их исправлении.
Решение, позволяющее качественно и своевременно находить проблемы, связанные с безопасностью ПО, а также предотвращать их последующее появление, – выстраивание процессов обеспечения безопасности на всех стадиях жизненного цикла ПО (Security SDLC). Наиболее известные подходы: Microsoft SDL, Cisco SDL, OWASP SSDLC, OpenSAMM. Однако, несмотря на разнообразие различных подходов, ключевые механизмы и реализуемые процессы в них совпадают.
SSDLC подразумевает проработку вопросов обеспечения безопасности на каждой из стадий жизненного цикла: проработка технического задания, проектирование, написание кода, тестирование, выпуск, эксплуатация и сопровождение, вывод из эксплуатации.
На начальных этапах необходимо оценить риски, детализировать требования безопасности в техническом задании и учесть их при проработке архитектуры. На этапе создания необходимо использовать методы безопасного программирования и повышение уровня осведомленности разработчиков, при тестировании – анализировать безопасность написанного кода и оценивать защищенность итогового ПО. Эксплуатация требует периодического контроля «стойкости» программного обеспечения к новым типам угроз, а также выстроенных процессов сопровождения, позволяющих оперативно и безболезненно для бизнеса устранять обнаруженные недостатки. При выводе из эксплуатации необходимо думать о безопасности обрабатываемых в ПО данных и корректном распределении прав доступа к ним.
Внедрение SSDLC может осуществляться как для вновь создаваемого ПО, так и для уже разработанного и периодически модифицируемого. Для оптимизации процессов часто используют автоматизированные средства контроля: анализаторы исходного кода, инструментальные сканеры безопасности. Выполнение процессов может обеспечиваться внутренними силами разработчиков ПО, обособленным подразделением ИБ, внешним подрядчиком либо комбинацией перечисленных сторон.
Внедрение SSDLC не только позволяет добиться безопасности, но и повышает отказоустойчивость эксплуатируемого ПО. За счет выстроенных процессов сокращается время, требуемое для устранения недостатков, снижается влияние выявленных уязвимостей на бизнес-процессы.















