Колонки

Как подружить разработку и безопасность в рамках одной компании?

Колонки
Юрий Шабалин
Юрий Шабалин

Сооснователь компании Stingray Technologies (ГК Swordfish Security)

Екатерина Алипова

Главная причина большого числа проблем с информационной безопасностью в готовых продуктах — в том, что во многих компаниях отделы безопасности и разработки стоят по разные стороны баррикад и не хотят друг к другу прислушиваться.

Юрий Шабалин, один из основателей компании Stingray Technologies (ГК Swordfish Security), расскажет, как подружить эти два направления, как обучать безопасности разработчиков и как в перспективе сократить число уязвимостей в релизах программных продуктов. 

Как подружить разработку и безопасность в рамках одной компании?

В России сегодня активно создают программное обеспечение. Потребность в нем высока: только для наполнения маркетплейса отечественных программных продуктов, который власти планируют открыть этой весной, требуются десятки тысяч продуктов. Помимо этого, для разных отраслей нужны сотни решений по программе импортозамещения, да и плановых разработок никто не отменял. 

Ресурсы для того, чтобы создавать огромное количество ПО, есть. Однако готовые продукты небезопасны: сегодня каждое третье приложение, поступающее в российские сторы, уязвимо. В 2020 году, по статистике Positive Technologies, в 9 из 10 веб-приложений преступники могли проводить атаки на пользователей, и сейчас ситуация существенно не улучшилась. 

Изменить положение дел может совместная работа отделов безопасности и разработки. Пока они стоят по разные стороны баррикад, проблемы сохранятся. Следовательно, необходимо эти два направления подружить и научить разработчиков учитывать интересы специалистов информационной безопасностии, чтобы снизить количество уязвимостей в выпускаемом ПО.

 

Для чего учить программистов безопасности?

Для того, чтобы разработчики стали заниматься безопасностью, они должны понимать, зачем им это делать. Почему они не делают этого? Просто программисты и безопасники смотрят на продукт с разных сторон.

Для первых важен правильно и качественно работающий функционал и удобство, вторые озабочены тем, что каждая новая «фича» — потенциальная точка входа в ПО для злоумышленников. И нужно объяснить им, как появляются проблемы безопасности и как их затем используют «плохие парни».

Хочешь быстро стартовать в IT? Выбирай направление для обучения в каталоге курсов программирования.

В качестве небольшого примера рассмотрим ситуацию, когда разработчик добавляет функционал по загрузке аватарки пользователя, что делает сервис, который он разрабатывает, немного более функциональным и симпатичным.

Злоумышленник здесь видит форму загрузки и начинает пробовать загрузить все подряд, картинки, скрипты, исполняемые файлы и смотреть, как система на это отреагирует. В результате, он может обнаружить, как ему использовать эту новую «фишку» для проникновения в систему.

Что будет, если не обращать внимания на безопасность и продолжать выпускать продукты?

Многочисленными «лазейками» обязательно воспользуются злоумышленники!

Они смогут захватить контроль над аккаунтами пользователей уязвимого ПО, похитить конфиденциальные данные, развить атаки на другие сервисы и украсть деньги со счетов. Представим, что пострадавших — десятки и сотни. Итог — ущерб репутации владельца продукта, расходы на то, чтобы срочно доработать ПО и заменить уязвимые версии у пользователей, на компенсации. Это потери в тысячи и десятки тысяч долларов, которых можно было бы избежать, встроив безопасность в каждый этап создания продуктов.

 

Принцип построения обучения

Как в ПО вообще, так и в мобильных приложениях в частности встречаются типичные проблемы. Если разработчикам будут понятны причины их возникновения и возможности эксплуатации злоумышленниками, они смогут эффективно их устранять и не допускать в дальнейшем их появления.

Тестировщикам тоже полезно знать, как тестировать ПО не только функционально, но и на безопасность, на что обращать внимание при создании сценариев для анализа проблем. 

Опираясь на наш опыт, можем сказать, что для обучения разработчиков безопасности в компании, разрабатывающей программные продукты, необходимо создать Центр Компетенций.

Он включает в себя не только обучение, как таковое, но и поддержание интереса к теме безопасности, создание awareness-программ (программ информирования) и регулярная их поддержка и так далее. 

Разработчиков в компании, которая пишет код, всегда больше, чем безопасников. Мы расскажем о том, как создать Центр Компетенций в рамках одной команды. Далее можно использовать этот опыт и для других команд разработки в компании, поскольку описанный подход является вполне универсальным, в чем мы могли неоднократно убедиться.

 

Внутренний портал

Первое, с чего стоит начать, — создать внутри компании некий Security портал. Он станет единой точкой входа для всех аспектов процесса безопасной разработки, а может, и для всех вопросов защиты данных в целом, и здесь будут собираться все имеющиеся материалы по теме. 

В качестве площадки может подойти все, что угодно, из используемого в компании: Confluence, XWiki, Wordpress, Sharepoint, собственные разработки. При этом необязательно нанимать дизайнера и программиста для разработки портала! Достаточно создать нужный раздел, например, Confluence, продумать его структуру и загрузить туда уже имеющиеся материалы. 

Главное условие — запустить портал оперативно и собрать на нем воедино все накопленные данные. База знаний должна быть доступна и структурирована, это поможет сделать ее единой полезной точкой входа для всех. Так специалистам не придется искать тематические сообщения в почте, в корпоративных мессенджерах, в файлах на разных серверах и т.д. И, конечно, с течением времени портал нужно обновлять, регулярно пополнять его данными, добавлять различные активности, связанные с ИБ.

 

Интерактивные курсы

Полезный и нужный инструмент, с которым не всегда эффективно работают. Курсы важны, проходить их регулярно необходимо всем участникам процесса разработки — разработчикам, тестировщикам, аналитикам и безопасникам. 

А значит, нужно сделать их не только полезными, но и интересными. Современные платформы это позволяют. Готовьте живые курсы с вопросами, интерактивными элементами, примерами из практики, системами поощрения. Тогда разработчики с готовностью пойдут на них! 

Аудитории очень нравятся интерактивные примеры, предполагающие совершение определенных действий участниками, как, например, «запуск приложения», написание команды в консоли и т.п. 

пример2 

Всё может быть сделано в игровом формате. И в конце слушателю обязательно дается несколько слайдов с информацией о внутреннем отделе информационной безопасности, о мероприятиях, которые уже проведены или запланированы внутри компании, а также с контактами и ссылками на эти материалы.

Хорошо из каждого блока курсов делать этап игровой истории. Так, после прохождения тренинга на почту к участнику должно прийти письмо с поздравлениями об успешном окончании первого этапа, а также о присвоении ему определенного уровня. К примеру, можно за это вручить «белый пояс» по безопасности. В письмо обязательно должны войти все ссылки и полезные материалы по тренингу, а также ссылки на внутренний портал и, конечно, контакты и список ближайших активностей.

 

Руководства по безопасной разработке

В числе материалов, хранящихся во внутренней базе знаний, должны находиться постоянно актуализируемые «методички», составляющие внутреннюю базу знаний по уязвимостям с реальными примерами и рекомендациями по их устранению и недопущению.

Также можно делать «выжимки» из различных статей и новостей по новым видам атак и уязвимостям (включая те, что написаны на иностранных языках) и вносить рекомендации по ним в свой внутренний портал.

Через некоторое время эта база станет очень ценным и полезным источником знаний для разработки. Для популяризации этой идеи очень хорошо при заведении дефекта по безопасности в систему отслеживания проблем разработки сразу давать ссылку на соответствующую статью или раздел в руководствах. Ну, и, конечно, ссылка на них обязательно должна быть на вступительном тренинге.

 

Онлайн-тренинги

Хорошо работают также различные онлайн-тренинги в формате видеолекций с заданиями. Они предполагают более глубокое погружение в материал, чем интерактивные тренинги.

Здесь детально рассказывается о механизмах защиты ПО, о том, как их использовать. Говорится, как искать проблемы безопасности, приводятся реальные примеры эксплуатации уязвимостей. Времени для освоения материала больше, и тренинг может быть разбит на определенные разделы или главы, которые просматриваются в удобное время. 

Создавать такой тренинг сложно — нужно выбрать курс у провайдера, доработать его под особенности команды, загрузить его во внутреннюю систему, а также регулярно обновлять свежими данными, собирать обратную связь, проверять задания. Поэтому старайтесь делать так, чтобы он действительно работал! Для этого нужно соблюсти два условия: 

  1. тщательно подготовить материал, структурировать его и адаптировать под особенности организации — максимум пользы!
  2. слушателями должны быть только те, кому это действительно интересно — из-под палки не работает

Можно отметить еще один важный аспект — люди, самостоятельно выбравшие и прошедшие такие тренинги, потенциально являются ключевой аудиторией для развития в дальнейшем их компетенций по безопасности.

 

Открытые митапы

Проводите митапы — небольшие тематические встречи для специалистов, посвященные безопасности (по правильному использованию биометрии, по ключам шифрования, по работе с Android KeyStore и другим темам). Наиболее подходящий формат здесь — встреча в офисе в неформальной обстановке с пивом и пиццей после докладов. И, конечно, нужно делать митап в конце рабочего дня. 

Можно делать их своими силами или приглашать сторонних экспертов, разбавляя своих. Второй вариант обычно предпочтительнее для аудитории, также вы сможете получить новые знания от единомышленников, завязать знакомства.

Приглашайте спикеров из других компаний-разработчиков, из клиентских организаций, с которыми работаете, — пусть они расскажут, как у них устроен процесс разработки и тестирования. 

Бонус: все глубокие технические доклады вы сможете после выступления занести в соответствующий раздел Руководства по безопасной разработке. 

 

Проведение CTF

Этот инструмент, хоть и затратный по времени, может принести неожиданные и интересные результаты. CTF (Capture the Flag) — это формат игры, в котором нужно искать или добывать флаги. Например, речь может идти про специальным образом подготовленное приложение, в котором есть уязвимости. Необходимо найти их и проэксплуатировать.

За успешное прохождение задания первым игрок получает флаг = определенное количество очков (в зависимости от сложности уязвимости). Побеждает набравший наибольшее количество флагов/очков участник.

Можно взять один из публично доступных вариантов игры из числа уже проведенных и организовать соревнование внутри компании. Будет совсем хорошо, если еще удастся получить хотя бы небольшой бюджет и организовать памятные сувениры победителям, пусть даже и забавный сертификат или возможность взять отгул.

В конце нужно устроить церемонию награждения, провести обзор всех задач и их решений и анонсировать, что это не последнее подобное событие. Так появится хорошая тема для следующей рассылки и повод для посещения внутреннего портала. 

Разработчики, отлично проявившие себя на CTF, также потенциально являются ключевой аудиторией для развития в дальнейшем их компетенций по безопасности.

 

Рассылки

Не забывайте про почтовые рассылки — это хороший способ поддерживать интерес к безопасности. Можно осуществлять их раз в неделю группе специалистов, прошедших тренинг. Темы рассылок могут быть самые разные, например, подборки интересных статей за неделю (включая новости, обзоры инструментов или просто небольшие интересные заметки), описание новых уязвимостей, результаты CTF и в целом всё, что вы считаете актуальным и интересным.

Главное — поддерживать регулярность рассылки и не пропускать отправку писем. Возьмите себе за правило каждое утро уделять 10-15 минут поиску интересных вещей, и тогда к концу недели у вас будет достаточно материала для отправки. 

Ну, и, конечно, все ссылки и новости из рассылки можно и нужно помещать на портал, который от этого только выиграет. 

 

Как достичь максимума безопасности в разработке

  • Прежде чем начать, объясните разработчикам доходчиво, на практических примерах, почему безопасность важна и зачем им нужно ею заниматься.
  • Создайте внутренний Security-портал, он будет единой точкой входа по любым вопросам безопасности.
  • Регулярно проводите интерактивные курсы с актуальными материалами, захватывающими задачами. Пусть разработчики будут вовлечены по-настоящему.
  • Создайте мощную базу знаний по безопасной разработке, отвечающую на все ключевые вопросы. И поддерживайте ее в актуальном состоянии.
  • Готовьте и проводите онлайн-тренинги с глубокими видео-лекциями и практическими заданиями для продвинутых пользователей.
  • Организуйте митапы для единомышленников по самым горячим темам. Приглашайте не только участников вашей команды, но и партнеров и даже конкурентов — пусть все делятся опытом.
  • Проводите соревнования с заданиями по информационной безопасности. Постепенно усложняйте задания, растите своих мощных специалистов по ИБ.
  • Пишите письма — вовлекайте сотрудников и создавайте свое сообщество внутри. 
  • Поощряйте всех, кто принимает участие. Призами, рассылками, особыми званиями, внеплановыми мероприятиями и выходными. Все это мотивирует и заставляет двигаться дальше!

Фото на обложке: Pexels

Интерактивный пример в тексте предоставлен автором.

Подписывайтесь на наш Telegram-канал, чтобы быть в курсе последних новостей и событий!

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter

Материалы по теме

  1. 1 Краткая история и будущее no-code
  2. 2 Что нужно российским приложениям, чтобы стать достойной заменой зарубежным сервисам?
  3. 3 Зачем нужен реестр российского ПО и как туда попасть
  4. 4 Когда Jira и Teams под угрозой: чем заменить популярные ПО и сервисы во время массовых запретов
  5. 5 Опыт внедрения российского ПО: 3 ошибки и как их избежать