Кейс Cedro: сервис для пентестеров и заказчиков

ЗаказчикСервис для заказчиков и пентестеров для поиска уязвимостей. ЗадачаРазработать три личных кабинета и максимально защитить платформу.

Задача 

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

2ae9d42a3e980cbd0a1916249cac5a88.png

Насколько баг критичный и какой за него должен быть гонорар — решает платформа как независимая сторона. Сами клиенты могут только следить за отчётами и оспаривать решения менеджеров сервиса. 

Внутри платформы есть несколько личных кабинетов — компании, модератора и пентестера. Задача была в том, что разработать все три. А ещё сделать сервис максимально безопасным, чтобы избежать утечек информации. 

Личный кабинет модератора 

Здесь два раздела — «Профиль» и «Bug Bounty программы». В первом можно менять информацию о себе, почту и номер телефона. Во втором — добавлять новые программы. Плюс там лежат все старые, которые модератор уже добавил.

ff28b9fa9911ffe4f2060878ed9097f9.png

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

31b135740d159646fde1c28d05c87d2e.png

Также модератор прописывает в программе критичность уязвимостей. Есть пять видов — низкая, средняя, высокая, критичная и для сведения. А затем указывает вознаграждение за баг каждого типа. 

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

7533afae2887e51e6c8d710faeb96576.png

Если исполнитель проделал хорошую работу — модератор примет его отчёт и назначит вознаграждение. Если баги стоящие, но отчёт нужно доработать — поставит статус «Требуется дополнительная информация» и напишет комментарий. А если отчёт оформлен неправильно, в нём мало конкретики или про баги уже писал другой тестер — модератор закроет задачу и укажет причину. 

Личный кабинет пентестера 

В нём 5 разделов. Первый — «Bug Bounty программы». Там пентестеры выбирают себе проекты. Присоединиться можно к любому, если подходит задача и сроки. 

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

5223a0603f0ae8b34dd99363928c1c94.png

Когда модератор проверит отчёт и выберет для него статус — пентестер увидит уведомление в разделе «Мои программы». Если потребуется дополнительная информация — он сможет отредактировать отчёт. 

Чтобы важные данные клиентов не утекали в сеть, сервис даёт тестировать их только проверенным пентестерам. Остальные исполнители могут присоединяться к программам с менее секретной информацией. Если тестера зовут присоединиться к программе, он видит уведомление в третьем разделе — «Мои приглашения». 

5beaca6945325beda575bd910ed7be4d.png

Четвёртый раздел — это «Профиль». Он идентичен учётке модератора — там можно менять информацию о себе и контакты. А пятый — это «Финансы». Сейчас исполнители не могут самостоятельно выводить деньги через сервис — компания расплачивается с каждым в индивидуальном порядке и за пределами платформы. Сам раздел нужен, чтобы следить за суммой вознаграждений. В будущем компания хочет доработать этот функционал и позволить тестерам самим выводить деньги на карту. 

Личный кабинет компании

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

053aa0cbd810a88c0e660af7023043db.png

Безопасность сервиса 

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

Для пароля мы использовали двойное хэширование — одинарного показалось мало. Как результат — если пользователь использует qwerty12 или password11, система зашифрует их как 442cadd43d6d829c9600a406c9e2 или что-то в этом роде и только после этого сохранит. После пароля придётся ввести ещё и код из SMS. А если закрыть браузер — войти без повторной авторизации не получится. 

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

Итоги 

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

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

Отзыв клиента 

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

Полный текст статьи читайте на CMS Magazine