Программы поиска уязвимостей всегда привлекают немало внимания со стороны хакеров и специалистов по безопасности. Ведь это легальный способ неплохо зарабатывать одними только поисками багов (при условии, что есть хороший опыт и голова на плечах). На днях нам представилась возможность взять интервью у багхантера Ивана reactors08 Григорова. Он лидер нашей программы Bug Bounty и занимает 11-е место в общем рейтинге платформы HackerOne.
Как начать искать баги? Может ли это быть единственным источником дохода? В каких Bug Bounty участвовать? Сколько зарабатывают багхантеры? И почему поиском уязвимостей особенно выгодно заниматься в кризис? Ответы на эти и другие вопросы читайте в нашем интервью.
Как ты начал искать баги?
О таком явлении, как Bug Bounty, я узнал года два-три назад, но не сталкивался с ним лично до запуска программы Mail.Ru Group. Когда она стартовала, я решил, что стоит попробовать. На тот момент я очень скептически относился к этому занятию и не надеялся, что мне кто-то выплатит хотя бы доллар.
Мне удалось найти пару багов и получить за это первые вознаграждения, а вскоре я занял в программе второе место. Вот тогда я и задумался, что стоит отнестись к этому делу со всей серьёзностью.
И всего за полтора года ты стал самым результативным исследователем в нашей программе, а на HackerOne входишь в первую двадцатку. Как это так?
Просто учишься, и все дела.
И как же ты учишься?
В основном читаю статьи или презентации, описывающие какие-то конкретные уязвимости. Изучаю книги и ресурсы по данной тематике. Смотрю видеодоклады, митапы, конференции. Изучаю чужие отчёты. Ищу информацию в поисковиках. У меня высшее образование, но оно не имеет отношения к IT.
Какими видами уязвимостей ты занимаешься?
В основном вебом, остальное разве что для забавы. Но всё это вопрос мотивации. Можно и браузер поломать, если поставить себе такую цель.
Есть ли у тебя какая-то постоянная работа?
Постоянной работы нет, поиск уязвимостей — мой основной источник дохода.
Ты работаешь один или в команде? Какая схема больше распространена: командная или одиночная?
Я работаю один. Чаще всего багхантеры работают в одиночку, хотя команды тоже иногда встречаются.
Как выглядит твой типичный день? Сколько времени ты тратишь на поиск багов?
Всё зависит от того, есть ли приглашения на новые проекты. Если одно за другим приходят интересные приглашения или же попадается крупный проект с большим scope, то я могу с утра до ночи зависать в поисках уязвимостей и не замечать, как летит время. Но так бывает редко, и обычно я уделяю этому около 3–5 часов в день.
Можно ли прожить исключительно на доход от Bug Bounty?
Определённо можно, но всё зависит от знаний в этой области, количества времени, потраченного на поиски, приглашений в новые и интересные проекты, а также от стремления и желания найти действительно крутой баг. Ведь можно на одной уязвимости сделать 10 тысяч долларов, а можно зарепортить, к примеру, кликджекинг 100 раз по 100 долларов. Кстати, актуальность багхантинга в кризис существенно растёт, ведь большинство компаний платят за баги в долларах :).
Сколько в среднем зарабатывают багхантеры?
Нужно понимать, что существует очень большой разброс в доходе. Он зависит от множества факторов, прежде всего от опыта исследователя и от того, сколько времени он готов уделять взлому. Многие участвуют в Bug Bounty программах от случая к случаю и не столько ради денег, сколько из интереса или желания усилить своё резюме. Понятно, что их доход, скорее всего, будет небольшим (особенно если брать не разовый выигрыш, а заработок за какой-то период, например за полгода-год).
С другой стороны, есть багхантеры, которые занимаются этим серьёзно и регулярно. У меня есть знакомый, который зарабатывает около десяти тысяч долларов в месяц. Есть ребята, которые зарабатывают и по пятьдесят (вот, например, рассказ о личном опыте такого багхантера: My $50k Personal Challenge – Results). Не каждый месяц, но периодически это достижимо. По отзывам некоторых топовых хантеров, для них 25 тысяч долларов в месяц — не проблема.
Кстати, а как попадают в топ?
Для этого нужно присылать много серьёзных багов. Рейтинг строится не по уровню заработка, а по совокупной критичности найденных уязвимостей. Хотя отчасти это влияет и на заработок: чем баг страшнее, тем больше за него обычно готовы платить. Скажем, на HackerOne опасные уязвимости дают в рейтинг примерно 50 баллов, средние — 25, а самые низкие — 15. В профиле у каждого исследователя можно посмотреть и среднеарифметическую оценку, это значение Impact.
Насколько автоматизированы инструменты, которые ты используешь?
Я использую всем известные Burp Suite и sqlmap. А также руки и голову :).
В каких программах Bug Bounty ты участвуешь?
Я стараюсь участвовать во всех программах, как за вознаграждение, так и бесплатно. Конечно, платные для меня в приоритете, но тем не менее я уделяю внимание и бесплатным программам. Например, я отправлял отчёты об уязвимостях и по тем проектам Mail.Ru Group, по которым не предусматривается награда.
Как ты выбираешь программы, в которых участвуешь?
Всё зависит от текущей ситуации. Если меня пригласили в новую приватную программу, то выбор очевиден: как правило, в безопасности таких проектов гораздо больше «дыр», они обнаруживаются быстрее и проще.
А если приглашений давно не было, то я предпочту крупные проекты, в которых выше вероятность наличия багов, упущенных другими исследователями. Или же я могу вернуться к хорошо знакомому проекту, чтобы постараться заново открыть для себя какие-то вещи.
Поясни для наших читателей, что такое приватные программы?
Приватная Bug Bounty — это программа, которая не анонсируется публично и в которую компания приглашает лишь ограниченный круг багхантеров. Это позволяет регулировать количество тестеров, выбирая наиболее опытных и адекватных. Если на проекте ещё никогда не проводился поиск уязвимостей, целесообразно начинать именно с приватной версии, приглашая поучаствовать конкретных проверенных людей. А потом, когда основные баги будут выловлены, можно пригласить к поиску уязвимостей всех желающих.
Как попадают в приватные программы?
Насколько я знаю, на HackerOne приглашают случайным образом. Конечно, сначала нужно набрать какой-то рейтинг на публичных программах, и тогда начинают приглашать. Если ты совсем новичок, шансов получить приглашение в приватную программу у тебя нет.
Чем HackerOne привлекателен как площадка? Есть ли у него какие-то альтернативы?
На данный момент я участвую в программах от HackerOne и от Bugcrowd. Если сравнивать эти две площадки, для меня привлекательнее HackerOne.
Во-первых, сама система репортов намного удобнее: можно красиво оформить отчёт, затем сделать его доступным для других исследователей. К каждому комментарию в репорте можно прикрепить различные файлы. А на Bugcrowd форма отправки репортов запутанная, никаких красивостей для оформления нет, прикреплять файлы можно только в отчёте, но не в комментариях.
Во-вторых, с HackerOne сотрудничает больше крупных компаний. Но с другой стороны, я чаще получаю приглашения на приватные программы от Bugcrowd, нежели от HackerOne. Также у Bugcrowd есть система поощрений для активных исследователей, что весьма приятно.
Службы поддержки на обеих площадках хороши, вам с радостью ответят на любые вопросы. Выплаты производятся обеими площадками без проблем. Оба этих ресурса хороши для исследователей и достойны внимания.
Ты пользуешься возможностью public disclosure на HackerOne?
Да, но довольно редко. Хотя, не скрою, с удовольствием читаю чужие раскрытые репорты.
Бывают ли у тебя спорные моменты?
Изредка. Например, когда несколько однотипных багов засчитывают как один и выплачивают только за один, закрыв остальные репорты и аргументируя это тем, что один фикс исправил несколько уязвимостей. Хотя ты не можешь это проверить, и приходится верить на слово. Бывают случаи, когда через длительное время после твоего отчёта команда безопасности пытается воспроизвести баг, а он уже исправлен разработчиками. В таких случаях что-либо доказать проблематично, если к отчёту не было прикреплено видео.
Несколько месяцев назад у меня был случай, когда багнутый функционал просто исчез. Естественно, команда безопасности не смогла воспроизвести баг и закрыла репорт. А буквально пару дней назад я заметил, что этот функционал вернулся, так что я снова жду подтверждения от команды безопасности.
Бывали случаи, когда компании не платили за баги, которые ты зарепортил?
Было несколько случаев, когда я отправлял критичные уязвимости, но они относились к проектам, не охватываемым программой. Их фиксили и говорили «спасибо». Но тут нет смысла кого-то винить, ведь заранее было ясно, что баги out of scope.
Как ты относишься к программам, в которых не выплачивают вознаграждений?
Зависит от того, какая компания запустила программу. Если это какой-то стартап или некоммерческая организация, то я постараюсь уделить им время и найти что-то ценное.
Если это компания с огромным доходом, мне кажется, как минимум странно, что они не предлагают вознаграждение.
Хотя, как и любой другой пользователь, я бы хотел, чтобы мои данные оставались в безопасности и не были подвержены риску перехвата злоумышленниками. Поэтому я стараюсь защитить и пользователей тех сервисов, которые по каким-то соображениям не могут выплатить награду. Конечно, я не буду в значительной степени углубляться в продукт, чтобы найти как можно больше уязвимостей. Но какие-то лёгкие лично для меня баги, не требующие много времени, я найду и отправлю.
Многие топовые исследователи не такие альтруисты и вряд ли будут иметь дело с бесплатными программами. Отчасти они правы. Но я считаю, что в конечном итоге нужно думать о пользователях и вносить хотя бы небольшой вклад в защиту их интересов.
Расскажи, пожалуйста, про самые интересные баги в твоей практике.
У меня довольно много интересных багов, но, пожалуй, расскажу про последний раскрытый на HackerOne, который сделал уязвимым около 30 тысяч веб-сайтов (преимущественно корпоративных): hackerone.com/reports/111440.
Я решил поискать баги в Zendesk. Программа стартовала довольно давно, и я тщательно просматривал содержимое главной страницы www.zendesk.com, анализируя детали. Меня заинтересовало видео с неизвестного мне на тот момент источника fast.wistia.com.
Также на странице имелся сторонний скрипт с fast.wistia.com, который управлял видео, манипулировал DOM, подгружал данные о видео. Внимательно изучив действие этого скрипта, я заметил, что могу дополнительно подгрузить и исполнить JS-файл с fast.wistia.com. При этом можно полностью изменить путь, название и расширение исполняемого файла. А если мне удастся загрузить и исполнить свой злонамеренный файл, то получится выполнить произвольный сценарий на стороне Zendesk. И я начал искать такую возможность.
Потратив много времени, я понял, что не смогу загрузить файл именно на fast.wistia.com. Тогда я сосредоточился на запросах к fast.wistia.com и заметил JSONP-запрос, который позволял мне манипулировать ответом от сервера. Объединив этот баг с первым, можно было презентовать JSONP-ответ как вредоносный JS-сценарий. И когда у меня это получилось, я начал понимать, что проблема затрагивает не только Zendesk, но и огромное количество магазинов, размещённых на Shopify, огромное количество WordPress- и Tumblr-блогов, множество корпоративных веб-сайтов, около десяти других компаний, имевших собственные программы Bug Bounty, а также самих Wistia. Почти все, кто размещал у себя на сайте видео от Wistia, добавляли и этот уязвимый скрипт.
Первым делом я сообщил об этом в поддержку Wistia. Прождав день, я написал ещё одно письмо, и где-то через час меня заверили, что информация отправлена разработчикам. Прошло ещё два дня, а баг ещё не был исправлен. Конечно, два дня — небольшой срок, но не для подобных багов, ведь под ударом и репутация других компаний.
Мне стало ясно, что багом никто не будет заниматься (потом оказалось, что я был прав), и я стал сообщать об этом другим компаниям в надежде, что они свяжутся с Wistia. Я отправил отчёт в Zendesk, но мне ответили, что ничем помочь не могут и будут просто ждать, пока Wistia решит этот вопрос… Шок, да и только… Тогда я отправил отчёты в Shopify, Trello и Automattic (WordPress). Команды этих компаний не стали ждать Wistia и начали самостоятельно решать проблему, в том числе контактировать с Wistia по своим каналам. И, о чудо, ровно через час после того, как с Wistia связались, баг был исправлен.
Обязательно ли самые интересные уязвимости — самые дорогие?
Нет. Пожалуй, у каждого исследователя есть такие баги, за которые он получил меньше, чем ожидал, или вовсе ничего, но их оценили по достоинству другие исследователи. Вот один из таких примеров, принадлежащий BlackFan: hackerone.com/reports/14883.
Есть мнение, что программы поиска уязвимостей не помогают найти по-настоящему крутые баги. Ты с ним согласен?
Думаю, такое мнение сформировалось из-за большого количества желающих получить халявные деньги, отправив неадекватные отчёты. Этим особенно славятся индусы (хотя среди них есть очень компетентные ребята). И на фоне большого количества таких мусорных отчётов команды начинают задумываться над эффективностью Bug Bounty. Нередко программы закрывают, так и не дождавшись действительно ценных данных или попросту утонув в огромном количестве отчётов.
Что для тебя на первом месте — интересность бага или деньги? Будешь ли ты возиться с заведомо скучным багом, который точно принесёт тебе какой-то доход?
Я не заостряю внимание только на интересных багах. Но в то же время я бы не стал репортить что угодно в погоне за любой прибылью. Я почти никогда не репорчу кликджекинг и всё, что ниже этого по степени критичности. Во-первых, потому что наверняка нарвусь на дубликат и только зря потрачу время, а во-вторых, не все компании принимают подобные репорты.
Какие советы ты мог бы дать начинающим багхантерам?
Прежде всего нужно понимать, что вероятность быстро найти уязвимость обратно пропорциональна времени, в течение которого функционирует программа. Самая лучшая стратегия — не зависать слишком долго в одной программе, участвовать в разных.
Тем не менее, когда я участвую в Bug Bounty, которые уже довольно долго принимают репорты и вероятность обнаружения уязвимости крайне мала, я стараюсь как можно лучше познакомиться с продуктом, найти функционал, которому, вероятнее всего, другие уделили меньше времени. Или же ищу что-то сложное для понимания, что также, вероятнее всего, будет упущено другими исследователями. Стараюсь не упустить из виду какие-либо мелочи. Всё это требует времени, терпения и упорства.
Начать учиться багхантингу можно так: пересмотреть отдельно каждую типовую ошибку безопасности, начав с простых уязвимостей, вроде CSRF, XSS, SQLi. Накопать материал отдельно по каждой из них. Достаточно вбить в поиск на YouTube, и вывалится куча полезного.
Много хороших статей публикуется на Хабре, и там же можно найти упоминания интересных книг. Например:
- Must-read книги за 2014 год по ИБ и программированию
- Книги по информационной безопасности. Знакомимся ближе с ИБ
- Книги о кибербезопасности: 5+ рекомендаций наших экспертов
Также полезно читать чужие раскрытые отчёты. Но не забывайте, что обучение не должно прекращаться. Технологии меняются, что-то устаревает, на место старого приходит новое, и нужно следить за этим.
А вообще как думаешь, какие тренды сейчас есть в области Bug Bounty? Что нас ждёт в 2016 году?
Ещё несколько лет назад Bug Bounty были редкостью, а сейчас открывать такие программы — тренд, и можно ожидать, что всё больше компаний будут приходить на такие площадки, как HackerOne. Всё более востребованными будут становиться приватные программы. У Bugcrowd появился новый формат приватных программ — Flex-программы с ограниченным бюджетом и призовыми. Мне кажется, они понравились компаниям и будут постепенно набирать популярность.
Автор: Mail.Ru Group