Информационная безопасность сейчас одна из наиболее горячих тем для обсуждения, которая вышла далеко за пределы ИБ-сообщества. Количество инцидентов и утечек возросло многократно, что стало дополнительным стимулом усиливать безопасность инфраструктуры и приложений, а уход иностранных вендоров только усугубил этот процесс. Одним из новых трендов стало проведение Bug Bounty программ. В этой статье я раскрою основные плюсы и минусы таких подходов как Bug Bounty и penetration testing.
TL;DR
Два подхода проще всего сравнить по аналогии с такси: при пентесте вы платите по счетчику, а в багбаунти за километраж.
Самая большая разница с тестированием на проникновение заключается в том, что программа вознаграждения за обнаружение ошибок предлагает непрерывное тестирование безопасности по цене, которую устанавливает сама компания . Компания будет определять размер вознаграждения для этичных хакеров за те типы уязвимостей, которые кажутся ей интересными. Кроме того, отдельные уязвимости можно тестировать последовательно с более низкими выплатами, поэтому стоимость распределяется по времени.
Классический пентест
Пентест (penetration test, пенетрейшн тест) – тестирование на проникновение и безопасность, иначе анализ системы на наличие уязвимостей. Это метод оценки безопасности информационной системы путем моделирования атаки злоумышленников. Пентестинг ведется с позиции потенциального атакующего и может включать в себя активное использование уязвимостей системы.
Под "классическим" пентестом я подразумеваю старый добрый подход, который в большинстве своем сводится к понятию "время = деньги". Существует еще несколько разновидностей пентеста - от continuous pentest до red teaming. Обычно пентест включает в себя следующие пункты:
аудит внешнего периметра;
анализ безопасности веб-приложений;
аудит внутреннего периметра;
анализ безопасности беспроводного эфира;
анализ мобильных приложений.
Зачастую пентестом считают и социотехнические атаки (фишинг/социалка), но правильнее относить этот подвид к security awareness.
Во время проведения пентестов практикуется отключение средств защиты и добавление IP-адресов пентестеров в белые списки, чтобы они успели идентифицировать как можно больше уязвимостей в заданные сроки, не учитывая обход защитных средств.
Хорошим итогом будет нахождение максимального количества уязвимостей за минимальный (условно) срок работ. Качество таких работ (кол-во найденных уязвимостей) зависит от:
скиллов команды пентестеров;
подхода к работам (методологии);
объекта тестирования;
количества пентестов "до";
сроков работ.
В своей практике я сталкивался с отчетами по пентесту, которые представляли из себя откровенный шлак, такие отчеты не нравятся заказчикам (не несут полезной составляющей):
отчет не содержит каких-либо значимых уязвимостей, при этом не описано какие проверки проводились и как;
отчет содержит информацию об уязвимостях, но без технических деталей и импакта (применения уязвимости и ее влияние на бизнес-процессы);
отчет не содержит рекомендаций;
отчет представляет из себя выгрузку из автоматизированной утилиты/сканера (!!!).
Итого: на выходе заказчик получает n-багов и рекомендаций по исправлению, которые он применимо к задачам применяет в пайплайне информационной безопасности и ИТ-подразделений.
Bug Bounty
Программа Bug Bounty — программа, предлагаемая некоторыми веб-сайтами и разработчиками программного обеспечения, с помощью которой люди могут получить признание и вознаграждение за нахождение ошибок, особенно тех, которые касаются эксплойтов и уязвимостей. Эти программы позволяют разработчикам обнаружить и устранить ошибки, прежде чем широкая общественность узнает о них, предотвращая злоупотребления.
Хотя на российском интернет пространстве это и не новый термин (например self-hosted программе bug bounty от Яндекс уже более 10 лет; первая российская платформа Bug Bounty запущена в феврале 2021 года), тем не менее подход к проведению, политика разглашения уязвимостей и сам факт участия в программе принимался многими российскими компаниями как высокорисковое мероприятие:
у нас априори не может быть уязвимостей, любой дисклоз (возможное публичное раскрытие информации) об уязвимости принесет нам репутационные риски;
мы привлечем внимание злых хакеров и они нас поломают;
а что если багхантеры понесут баги не нам, а на черный рынок? (а без публикации программы bb они этого сделать не могут?);
мы не сможем оперативно править баги;
вымогательство вознаграждений (да, такое бывает и без программ bb);
бизнес не даст денег.
Самым большим драйвером популяризации Bug Bounty, как не странно, стал уход зарубежных площадок (вернее нежелание работать с российскими хантерами и холдерами программ).
Bug Bounty vs Penetration testing: подходы и различия
Ниже представлена табличка основных различий различных подходов обеспечения безопасности.
Bug Bounty |
Penetration testing |
---|---|
Почет и публичная слава (Hall of Fame) |
Безвестные герои NDA |
Оплата только за результат |
Гарантированная оплата |
Доход неограничен |
Доход средний/высокий |
Уровень стресса низкий |
Уровень стресса высокий |
Слабые правовые гарантии |
Сильные правовые гарантии |
Рекомендуется продуктовая версия |
Рекомендуется тестовая среда |
Подразумевает работу "в ширину" |
Подразумевает работу "в глубину" |
Обычно это внешний периметр |
Внешний, внутренний, тестовый и dev-периметры |
Ограничен только жизнью программы |
Ограничен по времени |
Находят 0-day |
Не ищут 0-day |
Можно указать только вектор |
Необходимо предоставление боевого PoC |
Спектроскопическое тестирование с учетом опыта хантера |
Автоматические и ручное тестирование |
Может участвовать любой желающий |
Нужен высокий хак-скилл |
Сертификаты не нужны |
Необходимы проф. сертификаты |
Количество участников не ограничено |
Ограниченное количество участников |
Результат на "длине" программы |
Результат сразу |
Креативность (вариативность подходов, методов и инструментария) |
Отработка методологий |
Обычно запуск после пентестов |
Запуск в любой момент |
Низкое качество отчетов (в целом) |
Высокое качество отчетов (в целом) |
Постоянный стресс-тест СЗИ |
Обычно СЗИ не затронуты (whitelist) |
Широкий скоуп действий |
Целенаправленные работы |
Непрерывный процесс исследования |
"Снимок" состояния безопасности |
Выводы
Было бы большой ошибкой воспринимать программы вознаграждения за обнаружение ошибок, тесты на проникновение и внутреннее тестирование как противостоящие друг другу методы проверки безопасности. Ни один из них не способен выявить все потенциальные риски и уязвимости , через которые можно проникнуть в систему и украсть данные.
Перед публикацией официального веб-сайта или онлайн-сервиса (и всегда после крупного обновления) желательно провести внутреннее тестирование, а затем комплексный тест на проникновение, который выявит наибольшие уязвимости безопасности.
После этих проверок происходит публикация приложения и запуск программы bug bounty. Важно, чтобы тестирование в программе bug bounty проходило в течение длительного времени (минимум от 3 до 6 месяцев, в идеале даже дольше). Это позволит хакерам, которые недавно зарегистрировались, предупредить вас об ошибках безопасности, вызванных, например, незначительными обновлениями в вашей системе.
Самым оптимальным вариантом для компании со зрелым циклом обеспечения информационной безопасности будет как проведение тестов на проникновение, так и организация bug bounty программ.
Комментарии (6)
fearzzzz
12.01.2023 15:21В своей практике я сталкивался с отчетами по пентесту, которые представляли из себя откровенный шлак
Понимаю, что шансов крайне мало, но всё же, может быть есть возможность показать подобный отчёт?
lukasafonov Автор
12.01.2023 15:27Отчеты под NDA, лучше писать нормальные, хотя бы по такому гайду: https://xakep.ru/2021/04/28/best-pentest-report/
avorsa
12.01.2023 15:46Можете подробнее осветить проблему "Слабые правовые гарантии" участника BB?
Кейс такой.
Белый багхантер нашел RCE, пока писал отчет и его триажили эксперты платформы, то за это время неизвестный взломщик прошел тем же путем и стащил БД. Клиент BB-платформы (по сути, заказчик пентеста) обращается в органы и к белому багхантеру приходят гости из органов просто поговорить. Понимаю, что доказательств никаких, но визит гостей удовольствия не доставит. Как белому багхантеру (параноику) обезопасить себя?
В некоторых программах видел, что в headers нужно добавить метки. Рассчитывать только на них считаю так себе защитой...lukasafonov Автор
12.01.2023 17:46Для того чтобы пришли к багхантеру нужны веские доказательства, иначе будет как в анекдоте - "тогда и за изнасилование сажайте, инструмент-то есть". Тут вопрос стоит уже давно о введении в правовое поле понятия багхантер, но воз и ныне там.
Использование специальных хидеров и даже VPN не гарантирует что багхантер не расскажет о логике уязвимости. А вопрос приватности багхантера (раскрытие его данных для правоохранительных органов) сейчас лежит на стороне площадки, только на площадке могут знать/увязать реальные данные багхантера (и то, если он не оформляет выплаты на третье лицо, что никак не подтвердить) так что проблема скорее надуманная, реальные кейсы мне не встречались, что все равно не отменяет необходимости легализации багхантинга.
socketpair
Программа баг-баунти подразумевает большую маркетинговую и рекламную кампанию. пентестинг - нет.
Есть достаточно вымогателей и идейных "Спасибо за деньги, но если вы не исправите это за неделю - расскажу всем".
Если ранее программы баг-баунти не было - значит скорее всего в продукте есть много багов. Если сразу установить высокую цену - можно разориться. Если низкую - это выставить себя на посмешище. В итоге - как начать?
lukasafonov Автор
Не всегда. На площадках размещения программ, например bugbounty.ru, где и собираются багхантеры, каждая программа анонсируется и видна исследователям, внешний маркетинг и реклама это дополнительные внешние факторы.
Я указал это в статье - "вымогательство вознаграждений".
Провести внутреннее тестирование. Провести тестирование автоматизированными средствами. Провести пентест. Запустить приватную программу (ограничение по участникам, либо депозитную систему (нанимаете пул хантеров за фиксированную цену - они приносят все что находят)). Запускаете публичную программу.