Как известно, bug bounty — это программа вознаграждения за информацию о проблемах с безопасностью в продукте. С помощью вознаграждений разработчик стимулирует сообщать о найденных уязвимостях ему, а не продавать информацию на черном рынке, и выигрывает время на исправление проблемы прежде чем о ней станет известно широкой аудитории. Ведь чем более массовый и востребованный у вас продукт, тем больше найдётся желающих воспользоваться им в корыстных целях. Для социальных сетей наличие брешей в системе безопасности является крайне нежелательным, ведь это подрывает доверие пользователей. И если вы хотите, чтобы ваше творение жило долго и имело большую аудиторию, нужно уделять немало внимания поиску ошибок и своевременному исправлению.
Поэтому год назад Одноклассники также запустили такую программу. Меня зовут Александра Сватикова, и как специалист по информационной безопасности я расскажу о том, с чем мы столкнулись и чего нам удалось добиться за время проведения программы поиска уязвимостей.
История программы
Участвовать в нашей программе могут все желающие. Основная задача — найти и обезвредить ошибки в сфере безопасности и приватности в Одноклассниках. Вы можете присылать нам свои bug report’ы, и мы обязательно их изучим, исправим и выплатим вознаграждение. Награда вручается за сообщение о неизвестной нам ранее проблеме с безопасностью в Одноклассниках. Идеальный отчет написан кратко, по делу, содержит сценарий воспроизведения или proof of concept и не является копипастой из сканеров уязвимостей. Подробнее о правилах — на нашей странице в HackerOne.
Несколько лет назад мы уже запускали похожую программу — пользователи отправляли свои находки по электронной почте. Кампания была довольно успешной, но мы столкнулись с организационными трудностями, в том числе связанными с доставкой вознаграждений до участников.
С тех пор появился американский стартап HackerOne. Это платформа, своеобразная социальная сеть, для специалистов по безопасности со встроенным трекером задач и платёжной платформой. Этот проект призван объединить авторов ПО и охотников за ошибками и берет на себя всю организационную часть процесса.
О популярности платформы вы можете судить по списку компаний, работающих с HackerOne. В результате мы тоже решили перенести туда свою программу поиска уязвимостей.
Преступники не дремлют
Итак, мы добровольно пригласили толпу хакеров искать уязвимости в Одноклассниках. Для нас, в общем-то, ситуация почти не поменялась: нас постоянно атакуют далеко не только багхантеры. Мы постоянно боремся с вредоносной активностью, с теми, кто наносит ущерб нашим пользователям. Но сложившуюся ситуацию нельзя назвать характерной только для Одноклассников, так живут все популярные ресурсы. Взлом аккаунтов, кража персональных данных и рассылка спама — прибыльный бизнес. Так что нельзя сказать, что до запуска Bug Bounty мы жили спокойно.
Особенности поиска уязвимостей
Надо сказать, технически поиск уязвимостей в исследовательских и преступных целях не отличается. После того, как мы разместились на HackerOne, резко возросло количество специфических обращений к нашим ресурсам, свидетельствующие о работе автоматизированных средств тестирования безопасности.
Кто-то запустил Acunetix
На фронтендах периодически регистрируется всплеск количества ошибок, соответствующий фаззингу с миллионами бестолковых запросов, но мы не получили еще ни одного достойного внимания автосгенеренного отчета от сканеров.
Cпециальных условий искателям уязвимостей мы не предоставляем. Они пытают счастья в обычном режиме, для наших систем безопасности их изыскания ничем не отличаются от атак злоумышленников.
Система мониторинга также подверглась “тестированию” в рамках публичного поиска уязвимостей и прошла испытание достойно: все успешные попытки атак, так или иначе затрагивающих инфраструктуру, например DOS и SSRF, были выявлены еще до того как нам присылали соответствующий отчет.
Первые результаты
На сегодняшний день, спустя почти год после запуска программы, нам приходит порядка десяти отчётов в неделю. А в первые две недели мы получили около 700 (сиреневый график).
- New — это новые присланные отчёты;
- Triaged — проверенные нами и поставленные в очередь на исправление;
- Resolved — исправленные баги.
Запуская программу, мы были готовы к всплеску. У нас был не только свой опыт проведения bug bounty, но и опыт Mail.Ru Group, запустивших поиск уязвимостей в 2014 году. Но отклик превзошел наши ожидания и в первый месяц мы едва справлялись, обрабатывая отчёты и отвечая на них.
Ожидаемо, большая часть отчетов в первые недели представляла собой стандартные тексты о ложных срабатываниях популярных сканеров уязвимости и ценности не представляла.
Тем не менее, мы получили и полезные данные. За первый месяц работы программы мы завели тикеты примерно на 50 багов разной степени критичности.
Был и забавный случай: накануне запуска программы хранимая XSS обошла двухэтапный процесс ревью кода, ручное тестирование и автоматическое сканирование и проникла в продакшн. Мы получили 11 отчетов об этом баге за полтора дня, своеобразный бенчмарк для новой программы.
Также мы получили несколько интересных отчётов об уязвимостях в старых неиспользуемых версиях кода, сценарии атак на нас через баги в экзотических браузерах и даже сообщения о неопубликованных проблемах (0day) в используемых нами библиотеках.
Трудовые будни охотников за уязвимостями
После того, как первый вал отчётов схлынул, их количество в месяц стало более стабильным, колеблясь в небольших пределах. Спустя несколько недель стало гораздо меньше сообщений о ложных срабатываниях автоматических сканеров, меньше дубликатов. В первую очередь, это результат наших усилий по исправлению обнаруживаемых багов. Но и в Hackerone работают над тем, чтобы дисциплинировать хакеров, стимулировать их к отправке более качественных отчётов. Мы рады видеть сообщество охотников за багами, исследующих Одноклассники на регулярной основе и присылающих нам самые качественные и содержательные отчеты.
Новый присланный баг (New) проходит процесс проверки: отсеиваются ошибочные отчеты и дубликаты, проблема воспроизводится и анализируется. Мы оцениваем вероятность эксплуатации и возможный ущерб, иногда уточняем дополнительные детали у приславшего. Если проблема подтверждается, заявка переходит в статус Triaged и передается разработчикам. Соотношение хороших и плохих отчетов, а также время, требуемое на принятие решения и исправление, можно оценить на графике сверху
Занятная энтомология
Каких же «насекомых» отыскали участники? Помимо стандартного набора из OWASP Top 10, мы получили и весьма занятные отчеты. Перечислю самые запомнившиеся:
- способ купить внутреннюю валюту Одноклассников дешевле официального курса, ставший возможным из-за ошибки округления (4lemon)
- обход csrf токенов в заголовках путем эксплуатации открытого перенаправления (ragnar)
- обход same origin policy на основном домене с помощью уязвимой флешки на CDN домене (zoczus)
Итоги
За год работы мы получили от участников 1328 сообщений. В сумме 143 хакера и 167 настоящих уязвимостей разной степени критичности. Могли ли мы организовать равноценный по масштабу и эффективности аудит внутри компании? Очевидно нет. Из этого я смело делаю вывод, что наша затея вышла успешной. Если у вас есть вопросы или хотите поделиться своим опытом — пишите в комментариях!