Кейс Cedro: сервис для пентестеров и заказчиков
ЗаказчикСервис для заказчиков и пентестеров для поиска уязвимостей. ЗадачаРазработать три личных кабинета и максимально защитить платформу.
Задача
Платформа клиента связывает пентестеров и компании, которые хотят проверить свои сервисы на безопасность и взломоустойчивость. Вот как это работает: заказчик рассказывает, что нужно протестировать, менеджер упаковывает эту информацию в программу тестирования, а исполнитель присоединяется к ней, ищет уязвимости и получает за каждую вознаграждение.
Насколько баг критичный и какой за него должен быть гонорар — решает платформа как независимая сторона. Сами клиенты могут только следить за отчётами и оспаривать решения менеджеров сервиса.
Внутри платформы есть несколько личных кабинетов — компании, модератора и пентестера. Задача была в том, что разработать все три. А ещё сделать сервис максимально безопасным, чтобы избежать утечек информации.
Личный кабинет модератора
Здесь два раздела — «Профиль» и «Bug Bounty программы». В первом можно менять информацию о себе, почту и номер телефона. Во втором — добавлять новые программы. Плюс там лежат все старые, которые модератор уже добавил.
Чтобы добавить новую программу, нужно заполнить шаблон — указать компанию, сроки, название и правила исследования, плюс подробно описать виды уязвимостей, которые важно протестировать. После — выбрать, кто сможет присоединиться к программе — все или только проверенные пентестеры, с которыми сервис уже работал.
Также модератор прописывает в программе критичность уязвимостей. Есть пять видов — низкая, средняя, высокая, критичная и для сведения. А затем указывает вознаграждение за баг каждого типа.
Когда все поля заполнены — можно запускать программу. Теперь модератор будет ждать отчёты от пентестеров, просматривать их и выставлять статусы. Проверять отчёты можно двумя способами — открыв все сразу или выбрав одного исполнителя.
Если исполнитель проделал хорошую работу — модератор примет его отчёт и назначит вознаграждение. Если баги стоящие, но отчёт нужно доработать — поставит статус «Требуется дополнительная информация» и напишет комментарий. А если отчёт оформлен неправильно, в нём мало конкретики или про баги уже писал другой тестер — модератор закроет задачу и укажет причину.
Личный кабинет пентестера
В нём 5 разделов. Первый — «Bug Bounty программы». Там пентестеры выбирают себе проекты. Присоединиться можно к любому, если подходит задача и сроки.
Второй раздел — «Мои программы». Там отображаются все проекты, к которым пентестер присоединился. По каждому из них можно отправить отчёт — в нём нужно указать баги, выбрать их уровень критичности и описать, как воспроизвести уязвимость, каким должен быть результат и как решить проблему. Плюс важно оставить идентификатор исследователя, чтобы компания знала, что её сервис взламывает пентестер, а не злоумышленники.
Когда модератор проверит отчёт и выберет для него статус — пентестер увидит уведомление в разделе «Мои программы». Если потребуется дополнительная информация — он сможет отредактировать отчёт.
Чтобы важные данные клиентов не утекали в сеть, сервис даёт тестировать их только проверенным пентестерам. Остальные исполнители могут присоединяться к программам с менее секретной информацией. Если тестера зовут присоединиться к программе, он видит уведомление в третьем разделе — «Мои приглашения».
Четвёртый раздел — это «Профиль». Он идентичен учётке модератора — там можно менять информацию о себе и контакты. А пятый — это «Финансы». Сейчас исполнители не могут самостоятельно выводить деньги через сервис — компания расплачивается с каждым в индивидуальном порядке и за пределами платформы. Сам раздел нужен, чтобы следить за суммой вознаграждений. В будущем компания хочет доработать этот функционал и позволить тестерам самим выводить деньги на карту.
Личный кабинет компании
Здесь два раздела — «Профиль» и «Программы по сертификату». Первый ничем не отличается от профиля модератора или пентестера. Во втором лежат все программы компании. Там же заказчик может посмотреть принятые модератором отчёты. Если у него будут вопросы или возражения, он сможет написать комментарий — его увидит только менеджер. Пентестеры в обсуждениях с компаниями не участвуют.
Безопасность сервиса
Чтобы защитить платформу от взломов, а её клиентов — от утечек информации, мы постарались соблюсти все требования безопасности. Например, сделали авторизацию двойной — сначала нужно ввести почту, а после ещё код из SMS. Такая схема позволяет отсеять ботов и автоматические регистрации.
Для пароля мы использовали двойное хэширование — одинарного показалось мало. Как результат — если пользователь использует qwerty12 или password11, система зашифрует их как 442cadd43d6d829c9600a406c9e2 или что-то в этом роде и только после этого сохранит. После пароля придётся ввести ещё и код из SMS. А если закрыть браузер — войти без повторной авторизации не получится.
Также платформа проверяет все введённые в форму данные на валидность и не примет имя в поле для телефона или тысячу символов в строке для почты. В конце — ещё одна проверка на стороне сервера: система удалит из данных теги, экранирует кавычки, ещё раз убедится, что поля заполнены правильно, и только после этого отправит в базу результат.
Итоги
Описанный функционал — это MVP. Мы отрисовали и запрограммировали три личных кабинета. Пентестеры уже начали работать с сервисом — заказчик подключил их, чтобы протестировать платформу. Скоро проект окончательно зарелизится и модераторы начнут подгружать туда программы сторонних заказчиков, но работа над продуктом не окончена.
В будущем наш клиент планирует добавить ещё один вариант сотрудничества компаний с платформой. У заказчиков будет выбор — отдать всё на аутсорс сервису и пассивно следить за отчётами, либо самим напрямую общаться с пентестерами, оценивать уязвимости, назначать вознаграждения и подключать модератора только в спорных ситуациях. Второй подход позволит сократить штат менеджеров, а компаниям — работать с платформой на более выгодных условиях.
Отзыв клиента
Компанию Cedro выбрали после долгого отбора, когда пересмотрели уже кучу предложений и отсеяли много команд. Ребята привлекли своей мотивированностью, проактивностью, налаженными процессами и конкурентной ценой. Какое-то время ушло на притирку, но в целом у нас случилась хорошая коммуникация. Хочу отметить гибкость команды и качественную работу — без проблем отладили код и пофиксили баги. В общем, ребята — огонь.
Полный текст статьи читайте на CMS Magazine