Безопасностью занимаются перед релизом
Находки приходят за неделю до запуска, когда уже поздно менять устройство прав. Исправление дорого, релиз сдвигается, а следующий релиз приносит те же ошибки.
Безопасная разработка веб-приложений — это не проверка перед релизом, а несколько проверяемых действий на каждом этапе работы: в требованиях, проектировании, ревью, сборке и приёмке. Так защита от атак закладывается в продукт, а не доклеивается после находок аудитора. Мы выстраиваем такой процесс в вашей команде или в договоре с подрядчиком, настраиваем проверки в сборке и обучаем на ваших же задачах. Это инженерная работа, а не аттестация и не атака на боевую систему.
Обследование процесса — 200 000 ₽, вычитается из первого этапаТребования записываются так, чтобы их можно было проверить при приёмкеПравила, шаблоны и настройки лежат в вашем репозитории
Находки приходят за неделю до запуска, когда уже поздно менять устройство прав. Исправление дорого, релиз сдвигается, а следующий релиз приносит те же ошибки.
В договоре есть сроки и функции, но нет строки о том, как проверяются права и хранятся секреты. Принимаете систему и не знаете, что в ней оставлено.
В опросниках по безопасности просят описать, как у вас устроены ревью, проверки зависимостей и реагирование на уязвимости. Ответ «разработчики внимательные» не принимается.
После проверки ошибки исправили, но через полгода в новом коде нашлись такие же. Процесс не изменился, поэтому ошибки вернулись.
Ниже заготовка для обследования: на ваших системах строки будут другими, этапы те же. Для каждого этапа есть минимальное действие, которое вводится без остановки работы. Подробнее о каждом этапе — в статье «Как встроить безопасность в разработку».
Пример условный и показывает порядок действий, а не результат чьего-то проекта. Задача: клиент должен загружать в кабинет документы и скачивать их позже.
В тикете появляются строки, которые можно проверить: загруженный файл виден только пользователям организации клиента; допустимы заранее перечисленные типы и размеры; скачивание идёт по ссылке с ограниченным сроком и проверкой прав; загрузка и скачивание попадают в журнал с указанием пользователя.
На разборе задачи рисуется поток: браузер, веб-приложение, хранилище файлов, база. Задаются вопросы. Кто может подменить идентификатор файла в адресе? Что будет, если загрузить исполняемый файл с безобидным расширением? Что увидит поддержка при просмотре чужого файла? Решения записываются: проверка принадлежности на сервере при каждом скачивании, файлы лежат отдельно от кода и не исполняются, поддержка получает доступ только через журналируемую процедуру.
Ревьюер отвечает на три вопроса и смотрит рискованное место, то есть обработчик загрузки, вдвоём с коллегой. Сборка проверяет, что в изменениях нет ключей, а новая библиотека для разбора файлов не имеет известных уязвимостей.
Тестировщик загружает файл от имени организации A и пробует открыть его по прямой ссылке от имени организации B, перебирая идентификаторы. Загружает файл запрещённого типа и слишком большой. Проверяет, что в журнале есть все действия. Задача закрыта, когда эти проверки пройдены, а не когда код слит в основную ветку.
Список связан с категориями OWASP Top 10, но сгруппирован по тому, где ошибку проще остановить. Что означают сами категории, написано в статье «OWASP Top 10 простыми словами».
Заготовка для договора: формулировки подгоняются под ваш проект, смысл остаётся. Вопросы к подрядчику шире описаны в статье «Как выбрать подрядчика на разработку ПО».
Цены — по тарифам. Сумма следующих этапов называется по итогам предыдущих, остановиться можно после любой ступени.
Как задача идёт от идеи до релиза, где уже есть безопасные привычки, чего нет. На выходе карта процесса, набор проверяемых требований, шаблон моделирования угроз, список для ревью и порядок внедрения. Вычитается из первого этапа.
Плюс сравнение практик команд, требования для договоров с подрядчиками и схема ответственности.
Вводим минимальный набор: требования в приёмке, ревью по списку, проверки секретов и зависимостей в сборке, прогон прав. Работаем на ваших задачах.
Шаблоны и настройки переносятся на другие команды, добавляются моделирование угроз для новых модулей, проверка кода и конфигурации. Этапы с приёмкой.
Обновление правил и списков, помощь с моделированием угроз, разбор спорных находок. Пакет на 60 000 ₽ в месяц — до 12 часов. Сверх пакета — 5 000 ₽ в час.
Смотрим на вашу последнюю релизную задачу от тикета до выкладки, на репозиторий и сборку, на то, как принимается работа подрядчика. Говорим с разработчиками и тестировщиками, а не только с руководителем.
Пишем первые проверяемые требования на материале ваших задач и список из трёх вопросов. Согласуем с командой, а не навязываем.
Подключаем поиск секретов и проверку зависимостей, вводим прогон прав при приёмке, разбираем первую найденную ошибку как учебную.
Проводим разбор одного нового модуля вместе с командой, оставляем шаблон и пример, чтобы дальше команда делала это сама.
Переносим готовые правила и настройки на другие команды и продукты, меняем договоры с подрядчиками.
Обновляем правила, помогаем с разбором находок и инцидентов. Объём часов записан в договоре.
У каждой команды свои привычки и свой репозиторий. Работа растёт по числу различий в процессе, а не по числу людей.
Требования к доступу и приёмка прогоном прав растут по числу пар «роль — объект». Продукт с двумя ролями и продукт с шестью ролями и правами на поля стоят по-разному.
Если ключи лежат в репозитории, зависимости давно не обновлялись, а сборка собирается вручную, первые недели уйдут на уборку, а не на процесс.
Зеркала баз уязвимостей, внутренние репозитории пакетов и согласование доступов добавляют работу на внедрении и в сопровождении.
Если нужно узнать, что не так в продукте сейчас, и получить отчёт для клиента или инвестора, начинают с аудита безопасности веб-приложения: ревью кода и конфигурации и проверка типовых уязвимостей на отдельном стенде. Если вопрос шире безопасности и касается того, можно ли развивать систему, это аудит кода и архитектуры.
Если процесс есть, а не хватает автоматики в сборке, это внедрение DevSecOps: поиск секретов, проверка зависимостей, образов и кода в конвейере. Если проблема в доступе сотрудников к корпоративным системам, нужен единый вход и второй фактор. Защита интерфейса, которым пользуются чужие системы, и требования к ключам и лимитам разбираются при разработке API и бэкенда.
Практика такова: сначала процесс, который не даёт войти новым ошибкам, затем автоматика, которая ловит их дёшево, затем независимый аудит, который проверяет, что всё работает. Если порядок другой, например аудит перед запуском, процесс вводится следом, иначе отчёт устаревает с первым релизом.
Шесть этапов, проверяемые требования, моделирование угроз за час и порядок внедрения на три месяца.
Десять классов ошибок без жаргона, вопросы подрядчику и проверки, которые вы сделаете сами.
Три проверки для старта и режимы подключения, чтобы релизы не встали.
Сорок минут созвона: сколько команд и подрядчиков, как принимается работа, что уже проверяется. По итогам скажем, с какой ступени начинать и в какую вилку это укладывается.
Обследование процесса стоит 200 000 ₽ для одной команды и 350 000 ₽ для нескольких команд или подрядчиков, оно вычитается из первого этапа. Пилот на одном продукте — 150 000–400 000 ₽ за 2–8 недель. Распространение на остальные продукты идёт этапами по 300 000–700 000 ₽, их цена называется после пилота.
Аудит проверяет готовый продукт на дату проверки и даёт отчёт. Secure SDLC меняет процесс, чтобы типовые ошибки не доходили до продукта. Они дополняют друг друга: процесс снижает число находок, а аудит независимо проверяет, что процесс работает.
Для старта нет. Достаточно назначить в команде ответственного и дать ему список вопросов для ревью и требования к доступу. Мы настраиваем процесс и проверки, передаём их и помогаем первое время. Независимая проверка сложных модулей остаётся за внешним исполнителем.
Да, и так делают чаще всего. В договор и приёмку записываются проверяемые требования, исходники в вашем репозитории с первого коммита, отчёт автоматических проверок по каждому релизу, право проверить код и порядок исправления уязвимостей. Формулировки готовим на обследовании.
По наблюдаемым признакам: у каждой задачи с данными есть проверяемые строки о правах и журнале, при приёмке проводится прогон из-под ролей, автоматические проверки запускаются в каждой сборке, находки закрываются в срок. Процентов и баллов мы не обещаем, цифры вы получаете из собственного конвейера.
Да. Проверки запускаются на вашем сервере сборки, базы известных уязвимостей зеркалируются внутрь контура, код никуда не передаётся. Доступ и порядок работы согласуем с вашей службой безопасности на старте.
Юридические вопросы, включая статус оператора персональных данных, решает юрист заказчика. Мы даём технические меры: разделение данных, права, журнал, размещение серверов в нужной стране. Персональные данные граждан России обычно должны храниться на серверах в России.
Вам. Требования, списки для ревью, шаблоны моделирования угроз и настройки проверок лежат в вашем репозитории с первого коммита и передаются по акту. Порядок передачи прав записывается в договоре, открытые компоненты остаются под своими лицензиями.
Мы в Ростове-на-Дону, работаем с заказчиками по всей России: удалённо и в вашем контуре. Доступ к системам и обследование согласуем на старте с вашей службой безопасности.