разработка? • Общемировые практики по построению процесса безопасной разработки • Ключевые мифы и легенды безопасной разработки • А кто знает как правильно? • Секция вопросов и ответов * Мнение автора не соответствует действительности * Все персонажи вымышлены, а совпадения случайны
выпуска релиза • Большое количество новых уязвимостей • Вероятность пропустить что-то сильно увеличивается • Вызывает ненависть программистов Миф #2 • Нужно просканировать как можно больше систем • Особенности процесса разработки не учитываются • Инструменты стоят отдельно от разработки
• Держите экспертизу внутри команды • Никогда не выпускайте её наружу • Старайтесь как можно меньше общаться с разработкой • Если приходится общаться, пишите письма • Не ходите на встречи и собрания Миф #4
Представлены в нечитаемом виде \ неудобном формате • Неактуальны • Непроверяемы • Написаны ужасным языком • Противоречат друг другу • Неприменимы для конкретного приложения
#6 Разработка • Мы ничего не понимаем в ИБ, ничего не будем делать • У меня в KPI такого не написано • Вы заварили процесс, вы и управляйте • Мы отвечаем за продукт, а не за безопасность ИБ • Мы в вашем коде не разбираемся, сами анализируйте всё • Мы вам уязвимости нашли, устраняйте • Мы процесс запустили, а вы должны ему соответствовать • Мы за безопасность отвечаем, что вы там напрограммировали, нас не касается
Экспертизы нет и не будет • Людей нет и не будет • Мы людей научим, а они уйдут • Внешняя компания построит нам весь процесс, а мы потом им пользоваться будем Следствие: • Внешний подрядчик не вечен • Если не развивать внутреннюю экспертизу, перенимать процесс будет некому • Кто будет контролировать? Возможное решение: • Комплексный подход, разделение полномочий • Необходим внутренний «драйвер» инициативы, отвечающий за успех начинания в целом • Внешняя экспертиза может хорошо помочь на старте • Перенимать опыт и растить экспертизу • Оставить рутинные \ затратные операции на подрядчика
он работает! - А как работает? - Хорошо работает! Ура, процесс безопасной разработки идёт полным ходом: • Код сканируется • Приложения тестируются • Отчёты отправляются • Что ещё нужно? Миф #8
решения, которое подошло бы всем, каждая компания уникальна. Есть несколько советов, как избежать ключевых ошибок и построить работающий процесс Reliable software does what it is supposed to do. Secure software does what it is supposed to do, and nothing else.
управление и оценку эффективности инициативы Application Security; • Intelligence Группа практик, которые отвечают за сбор и консолидацию знаний в области ИБ внутри организации для реализации всех задач внедрения и тиражирования практик разработки защищенного ПО в полном объеме; • SSDL Touchpoints Группа практик, отвечающих за анализ и оценку конкретных артефактов и процессов в рамках производства ПО; • Deployment Группа практик, которые отвечают за взаимодействие с подразделениями сетевой и инфраструктурной безопасности и службами технической поддержки.
должен знать забыть каждый: • «Я вам отправил PDF-отчёт» • «Я письмо с уязвимостями отправлял, вы всё исправили?» • «Пока всё не исправите, в релиз не пустим!» • «Наши дефекты имеют наивысший приоритет!» • «А мы Вам требования выставляли ещё год назад, они на общем диске лежат» Полезные советы: • Для отображения информации используйте удобные для всех сервисы. • Актуализируйте требования и выставляйте только применимые для конкретного приложения • Используйте те же системы дефект-трекинга, что и разработка, так будет удобнее всем. • Не нужно сразу отправлять разработчикам все найденные баги без разбора • Сформируйте технический долг, который будете разбирать постепенно, сообщайте только о новых уязвимостях
Quality issues are AppSec issues. But all AppSec issues are Software Quality issues. Sherif Mansour, Expedia Дефекты безопасности ничем не отличаются от функциональных дефектов. Исправляться они должны согласно выставленным приоритетам наравне с остальными дефектами.
в процесс разработки вместе с разработчиками • Инкрементальное сканирование • Повышение скорости сканирования • Возможность встраивания в процесс не замедляя разработку (например на пулл реквесты) • Используйте инструментарий и наработки разработчиков • Максимально автоматизируйте всё, что можно автоматизировать
= 1 love • Качество продукта – общая цель • Одна сторона без помощи другой хороших результатов не получит • У сотрудников ИБ свои знания, у разработчиков – свои, помогайте друг-другу • Проводите семинары, обучение, совместные тренинги • Делайте новостные рассылки с интересными материалами • Вооружите разработчиков гайдлайнами • Не держите в себе экспертизу, делитесь Любой процесс – это совместная работа
процесс и где его нужно улучшить: • Производственные метрики • Метрики с инструментов • Метрики из дефект-трекеров • обеспечение полной прозрачности процесса для всех участников в полностью автоматическом режиме. • Статистика по практикам и их применению • Любые данные могут быть полезны • Но не просто данные ради данных, а метрики - ради метрик Чем больше данных, тем больше разрезов можно построить. От верхнеуровневых, до деталей каждого процесса
Не нужно сразу покупать дорогие инструменты и потом под них пытаться сделать процесс • Перед началом, опишите цели и продумайте стратегию развития • Опишите процесс, как он будет устроен, обсудите с потенциальными участниками • Начните с того, что уже есть: Приведите в порядок требования Создайте портал, где будет вся необходима информация в доступном и понятном виде Проведите обучение разработчиков, вовлеките их в процесс Вооружите разработчиков знаниями (гайдлайны по безопасной разработке, семинары) • Не обязательно делать всё сразу для всех систем, выберите несколько команд • После того, как разработчики будут лучше понимать, что такое AppSec, можно идти дальше
• Витрина данных • Дефект-трекеры • Системы сборки • Автотесты • Интегрируйтесь в процесс разработки, используйте подходы разработки • Максимально автоматизируйте проверки • Добавьте проверки безопасности в обычные тест-кейсы тестировщиков • Дефекты безопасности = функциональные дефекты • Контроллируйте и управляйте процессом безопасной разработки