16.08.2023 | Shift-Left Security: как сделать разработку безопасной и эффективной? |
Можно ли предупредить появление уязвимостей еще на этапе проектирования и, таким образом, сделать разработку и безопасной, и эффективной одновременно? Об этом рассказывает Сергей Володин, директор по продуктам Start X. Уязвимости на этапе релиза VS уязвимости на этапе проектированияShift-Left Security – это подход, при котором проверки безопасности внедряются так рано и так часто, как это возможно. В теории, такой подход позволяет предупредить появление уязвимостей и других проблем с безопасностью приложения еще на этапе проектирования, когда продукт только начинает создаваться или меняться по функциональным требованиям. Чем раньше появляются актуальные требования – тем дешевле и быстрее их выполнить и исключить предпосылки появления уязвимостей: Относительная стоимость устранения уязвимостей и других дефектов ПО на разных этапах разработки. Устранять баги и уязвимости еще на этапе разработки требований — самое дешевое и быстрое решение. К сожалению, возможности команд безопасности и технических средств защиты в процессах DevSecOps ограничены. Процесс, в котором не применяется DevSecOps-подход На рисунке выше – структура DevSecOps-пайплайна с основными контролями безопасности. Что проходит проверку на каждом из них:
SCA – анализируются open source компоненты на предмет выявления зависимостей , содержащих уязвимости. Также могут определить лицензионную совместимость компонентов и риски нарушения лицензионных прав. SAST – сканеры проверяют исходный код на наличие частых уязвимостей, например, OWASP Top Ten. Причем, SAST находит и саму уязвимость, и подсвечивает фрагмент кода, исправление которого будет оптимальным решением. Secret Detection — это автоматизированная проверка, которая обнаруживает незашифрованную конфиденциальную информацию, например, пароли, токены и т.д. DAST (Dynamic Application Security Testing) — динамическое тестирование безопасности приложений. DAST-сканеры работают автоматически и проверяют приложения, имитируя внешние атаки через различные уязвимости. или OAST (Out-of-band Application Security Testing) — техника разработана компанией PortSwigger и является расширением DAST, находит уязвимости, не обнаруженные DAST. Web Application Firewall (WAF) — межсетевой экран для веб-приложений. Фильтрует трафик и защищает приложения по HTTP/HTTPS. RASP (Runtime Application Self-Protection) — инструменты в реальном времени обнаруживают и блокируют атаки на ПО, даёт приложению возможность самозащиты в автоматическом режиме. Перечень применяемых инструментов, как правило, зависит от критичности приложения для бизнеса, наличия исходного кода приложения (без которого не возможно проведение статического анализа), зрелости процессов производтва ПО в организации. Если процесс выстроен неэффективно это приведет к тому, что на каждом Quality Gate команда будет вынуждена возвращаться на один из предыдущих этапов, то каждая непройденная проверка отбрасывает команду на несколько этапов назад, и вынуждает их проходить несколько итераций проектирования – с поиском альтернативных компонентов. Когда у разработчика нет компетенций по безопасной разработке, то такие поиски он производит вслепую. Решение класса DAST могут выявить некоторые, уже известные проблемы с кодом, который написан, собран и развернут на тестовом контуре. Но спроектировать продукт и написать код изначально правильно и безопасно могут только сами разработчики. Процесс разработки с применением подхода DevSecOps Поэтому ключевые компоненты подхода Shift-Left — понимание продуктовыми командами угроз и мер, которые необходимо предусмотреть, чтобы их исключить или минимизировать, а также мотивация команд учитывать вопросы информационной безопасности. Как помочь командам получить эти знания, навыки и мотивацию? Как помочь продуктовым командам работать по подходу Shift-Left Security1. Дать понятные и актуальные требования по безопасности для их продуктов или проектовОбычно требования по безопасности продуктов выглядят очень сложно, написаны специфичным языком регламентов или нормативных документов по безопасности и выглядят как цитаты из них. Если передать их в продуктовую команду в таком виде, даже самые мотивированные разработчики не смогут понять, что конкретно им нужно делать: Пример исходного требования по безопасности на языке нормативных документов и его перевода на язык, понятный продуктовой команде. Задача команд безопасности – дать четкие, конкретные и адаптированные под особенности каждой команды и проекта требования по безопасности. Такие же или даже более понятные, как функциональные требования в их проекте. Понятные и актуальные требования позволят разработчикам и продуктовым командам еще на этапе проектирования учесть требования по безопасности в разработке их продукта. 2. Обучить продуктовые команды писать и поддерживать безопасный кодЧтобы разработчики самостоятельно могли применять и выполнять те требования, которые им передала команда безопасности, им нужны компетенции безопасной разработки и эксплуатации приложений. Мы не рекомендуем строить обучение от уязвимостей — есть риск, что получится очередное изложение “OWASP TOP 10”, которое не оценят разработчики. Мы рекомендуем разбирать конкретные, практические задачи, актуальные для ваших продуктовых команд, с примерами кода и безопасной реализации на их языках программирования. Оптимально структурировать такое обучение через “контексты” — рабочие ситуации и сценарии, актуальные для продуктов, с которыми работают команды, например:
Команды увидят личную пользу от применения безопасных методов разработки, если обучение будет тесно связано с реальными задачами, наполнено практикой и понятными, знакомыми примерами. Хорошая идея — интегрировать обучение с реальными задачами, например, через трекер, а также с выявленными уязвимостями — например, через существующую платформу автоматизации DevSecOps-процессов. 3. Мотивировать продуктовые команды и вовлечь их в тему безопасной разработкиМотивированные сотрудники продуктовых команд — лучшие союзники команды безопасности. Они сами будут изучать нужные курсы, разбирать требования и принимать правильные, безопасные продуктовые решения для их реализации. Вот алгоритм, по которому из любой команды разработки можно получить мотивированную продуктовую команду, которая готова следить за безопасностью своих продуктов:
Провести свои продуктовые команды по этому алгоритму можно, например, с помощью специальных CTF-соревнований, адаптированных под специфику продуктовых команд, их знания, навыки и мотивацию. Мы подробно рассказывали о таком формате в нашем докладе на недавнем Positive Hack Days: CTF для команд разработки: как найти и воспитать секьюрити чемпионов .
Как Shift-Left подход поможет ускорить релиз продуктовМногие продуктовые команды и заказчики понимают важность требований по безопасности и преимущества подхода Shift-Left Security, однако в рабочей рутине могут не учесть критичные требования или не разобраться, как правильно их реализовать с учетом специфики своего продукта. А у команд безопасности не всегда бывает возможность выделить квалифицированных экспертов на работу с продуктовой командой. Однако если сделать требования безопасности понятными, а процессы безопасной разработки – прозрачными, это позволит ускорить выпуск цифровых продуктов и одновременно обеспечить их защищенность от возможных атак, утечек и сбоев. По самым скромным оценкам, подход Shift-Left Security в разработке программного обеспечения ускоряет выпуск продукта на 10—17%. Другой важный результат применения Shift-Left-подхода — активное сотрудничество между отделами безопасности и продуктовыми командами, которое помогает прийти к общим решениям и повышает уровень защищенности для продуктов, всей компании и ее клиентов. |
Проверить безопасность сайта