Найти в Дзене
Dev.by

$15 000 за ошибку. Как минский программист ушёл с работы в топ-5 багхантеров Facebook и топ-20 Google

Оглавление

«1 dmitry» — так с некоторых пор в Google в шутку именуют выплату в 1337 долларов по bug bounty program. Android-разработчику Дмитрию Лукьяненко, в честь которого её так назвали, эта сумма в прошлом году приходила на счёт не менее 12 раз.

Год назад Дмитрий превратил своё хобби в бизнес — и теперь зарабатывает тем, что ищет уязвимости в продуктах Google и Facebook, работает с площадками HackerOne и BugCrowd. В рейтинге багхантеров Facebook за прошлый год он в первой пятёрке, в рейтинге Google — в топ-20.

dev.by поговорил с Дмитрием о том, как превратить поиск «дыр» в безопасности приложений в регулярный источник дохода.

​​КСТАТИ, НЕОЖИДАННЫЕ УЯЗВИМОСТИ МОЖНО НАЙТИ ВЕЗДЕ — ДАЖЕ В КОДЕ ЭТОЙ СТАТЬИ.

С чего всё началось?

4 года назад в «Яндексе» я работал над библиотекой, которая отвечала за авторизацию в приложениях, — чтобы, авторизовавшись, к примеру, в «Яндекс.Картах», пользователь больше не проходил эту процедуру в «Яндекс.Музыке». В ходе работы мне нужно было решать задачи, относящиеся к межпроцессному взаимодействию, и мне стало интересно, как другие приложения обмениваются данными и работают с аккаунтами. Я скачал Android-клиент Vkontakte, хотел что-то посмотреть — и случайно обнаружил, что он позволяет моему приложению включать пользователей в любые группы даже без их ведома.

И что вы сделали — сообщили в службу поддержки Vkontakte об уязвимости?

Нет, я погуглил (Cмеётся), хоть и работал в «Яндексе». И нашёл bug bounty сервис HackerOne: он соединяет бизнес в лице Vkontakte, Mail.ru, DropBox, Yahoo, Twitter, Slack и багхантеров. С помощью этой площадки можно заявить об уязвимости — и получить компенсацию от компании-клиента. На сайте HackerOne есть программа каждой компании, в ней список требований к отчётам и перечень продуктов, которые участвуют в bug bounty.

Я всегда прилагаю к отчёту мини-Android-проект, чтобы те, кто его принимает, не тратили время на создание своего такого модуля. Просто скачали, нажали на кнопочку — и всё увидели сами.

Это считается «хорошим тоном»?

В мобильном багхантиге — да: все исследователи, с которыми я общаюсь, так делают. Сейчас я пришёл к тому, что в каждый отчёт помимо описания — самого proof of concept — включаю ещё видеоролик, вроде этого.

15 000 долларов за баг: «Подумал, что один нолик мне просто мерещится»

Сколько вам заплатили за первую найденную уязвимость?

Тысячу долларов. Если честно, я думал, будет больше.

Почему? Такие баги стоят больше?

Так мне тогда казалось…

Как скоро вы пришли к тому, что на поиске уязвимостей можно делать бизнес?

Я долго рассматривал это как хобби: у меня ведь была работа. Тем не менее, искать баги стал чаще — в Mail.ru, Dropbox, Uber: на HackerOne начали накапливаться деньги. Тогда я пошёл и оформил ИП. Мы с женой начитались «страшилок», как в Беларуси тяжело оформить ИП, и даже думали, не сделать ли это в Литве. Но потом решили попробовать «по упрощёнке» поработать. В итоге за два дня я получил документы и дал отмашку HackerOne отправить платёж.

Я стараюсь делать всё правильно. Вот почему я работаю с HackerOne, Facebook и Google — у них есть публичный договор: акты по нему подписываются в одностороннем порядке.

Почему это является плюсом?

Потому что вряд ли вы доберётесь до второй стороны. И вообще, отправляя отчёт, вы не знаете, получите ли деньги. Всегда есть опасение, что придёт ответ: «Спасибо! Мы уже знаем об этой уязвимости». Также никто заранее не оговаривает сумму вознаграждения. Поиск багов, по сути — та же рыбалка: смотришь, изучаешь, цепляешься за что-то глазом и давай «разматывать удочку». А что дальше, никто не знает: может щука, а может и старый башмак.

У меня был случай: я тестировал мессенджер Facebook на Android, потом открыл его веб-версию и увидел среди своих изображения от случайных пользователей — сервер почему-то «выплёвывал» эти участки памяти. В итоге за эту уязвимость я получил приличную сумму — можно год жить.

А в чём случайность?

В том, что тестировал-то я Android-приложение, и нежданно-негаданно нашёл проблему на сервере Facebook.

Если использовать вашу же метафору, на сколько потянула самая крупная ваша «рыба»?

На 15 000 долларов и тоже от Facebook: если честно, я даже подумал тогда, что один нолик мне просто мерещится. DropBox когда-то за аналогичный баг заплатила 4 000, и я был счастлив безмерно. Мне казалось, что и Facebook заплатит примерно столько же…

В чём заключалась уязвимость?

В том, что стороннее приложение могло без действий пользователя получить доступ к приватным данным мессенджера Facebook. Например, к базе данных с сообщениями или файлу с авторизованными токенами. Кстати, раньше я о ней никому не рассказывал.

Почему?

Говорят, деньги любят тишину: можно купаться в лучах славы, а можно тихо зарабатывать. Метод, с помощью которого я нашёл уязвимость в Facebook, точно такой же, как тот, что я использовал, чтобы обнаружить проблему в DropBox. Расскажи я о нём раньше и, возможно, до Facebook первым добрался бы кто-то другой.

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

Конкуренция в вашем бизнесе высока?

В вебе очень. Один раз я нашёл XSS — это когда JS-код можно вставить в тело страницы, и он выполнится. Я был рад и горд неимоверно: ещё бы — «моя первая веб-уязвимость»! Но оказалось, меня опередили — пришёл ответ о «дубликате».

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

А как часто вам сообщают о «дубликате»?

К счастью, не часто — в 5-7% случаев.

Благодаря гранту Google я стал багхантером на постоянной основе

-2

Почему вы сконцентрировались в основном на Google и Facebook? Ведь есть ещё Apple, Adobe, Microsoft и другие.

Я в основном работаю с Android-приложениями: декомпилирую их, а затем изучаю структуру, ищу компоненты, доступные для других приложений. Я пытался сделать всё то же и на iOS, но не преуспел: приложение с iPhone непросто даже скачать на компьютер — нужен, как я понимаю, рутованный телефон.

Что же до Google и Facebook, у них огромное количество больших сложных приложений под Android, в которых могут быть ошибки — это раз. Два — у этих компаний хорошие выплаты: минимум 500 долларов.

Почему не Microsoft, ведь у них вроде тоже есть Android-приложения — ответ прост: bug bounty на них не распространяется. В Microsoft платят только за уязвимости в Windows, а также в их браузере.

Помимо Google я отправляю уязвимости также в подразделение Android: у меня уже 11 официальных CVE (Common Vulnerabilities and Exposures. — прим. dev.by).

Ещё я хотел бы отметить, что уязвимости, которые я нахожу, — не критические. У нас разработчики могли бы и подзабить на такие: «Ой, да ладно! Это мелочь, да и вообще маловероятно…», но Facebook и Google даже низковероятные баги принимают за уязвимости и выплачивают вознаграждение в 1000-1300 долларов.   

Правда ли, что кроме вознаграждения Google также даёт исследователям гранты?

Да, благодаря такому гранту я и стал багхантером на постоянной основе (Смеётся.).

В 2018 году у меня сложилась безвыходная ситуация: неожиданно уволили из стартапа.

Увольнение одним днём стало для меня шоком: «соломки» никто не подстелил, падать было больно. У меня ведь семья, кредит на машину — ещё порядка 15 000 долларов  нужно было выплатить.

Неужели не было «подушки безопасности» в виде выплат с программ bug bounty?

Нет, мы никогда не складывали деньги под матрас — они уходили на строительство дома в Смолевичах. И я брался тогда за любые уязвимости, даже те, которым сегодня не стал бы уделять время.

Почему не стали бы?

Сейчас мне неинтересно искать уязвимости на проектах, где выплаты, прямо скажем, невысоки: в Mail.ru, к примеру, могли платить 150-300 долларов за уязвимость. Сегодня я понимаю, что уделяя столько же времени работе, можно получить больше только в Google и Facebook.

Как вы получили первый грант от Google?

Я знал, что Google даёт гранты на исследование уязвимостей. Написал руководителю программы — мы с ним раньше переписывались, он как-то спрашивал, не интересуют ли меня вакансии в Google. Тогда я отшутился: «Если вы откроете офис в Минске».

Прошло пару недель, и я получил перевод на сумму 1337 долларов — «1 dmitry». Снял офис, и работа пошла. Я подсчитал тут на досуге: за год Google назначил выплаты по 16 моим уязвимостям, из них 12 — «1 dmitry», и ещё несколько других.

Я искал баги также у Facebook и Telegram, а вот для HackerOne совсем перестал смотреть: в прошлом году они подключили сервис для отправки платежей, и он не работал с Беларусью. Только недавно мне удалось справиться с этой проблемой.

Каким образом?

У меня накопилась сумма, соизмеримая с двумя зарплатами разработчика в Беларуси, и я попросил прислать ее как раньше — по реквизитам.

Они ни в какую: «Не можем. Не получается», стали предлагать варианты: в биткоинах, через PayPal… К счастью, я познакомился в Лас-Вегасе с CEO HackerOne Мортеном Микосом, написал ему. И хоть он и говорит, что это «не его заслуга», через неделю служба поддержки разобралась и включила Беларусь в список стран, куда доходят платежи.

Business Insider отмечает, что вы получили несколько грантов от Google.

Да, пару в начале года по моей просьбе, и один совсем недавно — уже по инициативе Google. Если честно, мне самому уже неудобно просить: всё же небольшая подушка безопасности у меня есть. Но если дают, не отказываюсь.

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

-3

Какие обязательства накладывает на багхантера получение гранта?

Есть разные гранты: чаще всего ты волен выбирать, что исследовать, но в ряде случаев тебе не оставляют выбора: «Надо это посмотреть!»

Я всегда выбирал Android-приложения. И, к счастью, преуспел. Что приятно, грант — не предоплата, если ты нашёл уязвимости, за них ты получишь отдельно. Но если ты не найдёшь ничего, никто не потребует вернуть деньги.

Google не требует отчётов, но я всё же прикладываю миниотчёт, чтобы было видно, чем я занимался в этот период. Ведь это работа!

Вы не единожды участвовали в закрытых конференциях по безопасности от HackerOne, BugCrowd и Google. Как багхантеры на них попадают?

Честно говоря, до того, как в мае прошлого года HackerOne позвали меня в Лондон, я  ничего о них не знал. Исследователей отбирает команда HackerOne — чем выше рейтинг, тем больше шансов. Примерно за две недели до события им сообщают имя заказчика — отсчёт пошёл: за это время багхантерам нужно постараться найти уязвимости в продуктах заказчика и подготовить отчёты.

Эти отчёты исследователи отправляют на самом мероприятии, а команда по безопасности принимает их и обрабатывает, выставляя на табло суммы и баллы. В Лондоне я занял четвёртое место из 20 возможных, а также попал в категорию Show&Tell. Как я понял, это очень круто.

Почти по такому же принципу работает и конкурент HackerOne — BugCrowd. Я был на их мероприятии в Майами и занял там первое место. Но неделю спустя уязвимость, обнаруженную одним из участников пересмотрели, и он переместился на первую строчку, а я получил «серебро».

Один раз я сам напросился на такой live hacking event. Facebook пригласили меня в Лас-Вегас в то время, когда там проходили конференции по безопасности Black Hat и DefCon. Я узнал, что в Вегасе будет проводить своё мероприятие и HackerOne,  и написал им.

Значит ли это, что почти любой желающий может попасть на соревнования такого рода?

Думаю, не любой: всё же мероприятия закрытые. Бывает, в новостях на hackerone.com и bugcrowd.com проскакивают анонсы, но кто заказчик, никогда не раскрывается. «Охотнику» с рейтингом, полагаю, не откажут: я же написал — и бинго, мне разрешили участвовать. Однако в таком случае все расходы лягут на ваши плечи.

Кстати, есть ещё вариант: у вас может быть знакомый из тех, кто точно едет на такую конференцию. На мероприятие от HackerOne мне тоже предлагали взять с собой «+1», если мой попутчик самостоятельно оплатит дорогу.

Сейчас я надеюсь, что моего друга из Латвии позовут ещё на одно мероприятие от HackerOne, и он возьмёт меня «+1». У него очень высокий рейтинг — он входит в двадцатку лучших исследователей на HackerOne.

«Вернуться в найм было «планом Б»

Россиянка Алиса Шевченко «взламывает» компьютерные системы крупных компаний по их заказу и зарабатывает около 160 000 долларов в год. Вы для себя не думали над похожим развитием «карьеры»?

Думал, и как раз около двух месяцев назад ко мне обратилась одна белорусская компания с просьбой помочь улучшить безопасность их продукта.

Как они узнали о вас?

Сотрудники компании были у меня в друзьях в Facebook. Видели фото с мероприятия от Google.

То самое, на котором вы держите в руках огромный чек на 2337 долларов (Дмитрий получил сумму в 500 + 500 + 1337прим. dev.by)?

Оно. С чеком, кстати, вышла забавная история: когда я возвращался из Лас-Вегаса, рядом со мной сидел парень со здоровенным чеком на 25 000 долларов, который загораживал весь проход. Мы потом познакомились — оказалось, это киберспортсмен Никита Марчинский, в позапрошлом году он выиграл в Quake Champions ещё больше — 175 000 долларов.

-4

И вот когда мне вручили такую же по размеру табличку, я подумал: «Теперь побываю сам в его шкуре. Но оказалось, что наклейку можно с пластины аккуратно снять — я так и сделал.

За год у вас не появлялось желание всё бросить и вернуться в «найм»?

Нет, хотя изначально это был «план Б».

Никогда не жалели, что отказались от предложения менеджера Google?

Нет, мне комфортно на родине. Когда Google купил AIMatter, я искренне говорил, что не хотел бы уезжать из Беларуси.

​«ПАМЯТКА» ОТ ДМИТРИЯ ЛУКЬЯНЕНКО, КАК НАЧАТЬ ЗАРАБАТЫВАТЬ НА ПОИСКЕ БАГОВ:Не у всех компаний есть программы bug bounty — не стоит искать уязвимости там, где вас не просят.
И уж тем более не советую эти уязвимости где-то публиковать, высказывая «праведный гнев», что вам не заплатили ни копейки.
Воспользуйтесь проверенными ссылками:
HackerOne, BugCrowd, Google, Facebook, Yandex.
Выбирайте компании, у которых есть публичные договора. И не забудьте оформить ИП.
Перед тем, как отправить баг, обязательно прочтите условия участия в bug bounty program.
Не расстраивайтесь, если узнаете, что у вас «дубликат». На встрече в Google мне рассказывали, как в один день им пришло три отчёта об одной и той же уязвимости.
В нашей гонке банк «срывает» первый, поэтому если вы что-то нашли — не тяните с отправкой отчёта.
Читайте об уязвимостях, просматривайте открытые отчёты. Возможно, уязвимость уже закрыли, но у вас появится своя идея, как обойти защиту.​

​ХОТИТЕ ПОЧУВСТВОВАТЬ СЕБЯ БАГХАНТЕРОМ — НАЙДИТЕ В КОДЕ ЭТОЙ СТАТЬИ УЯЗВИМОСТЬ, КОТОРАЯ СТАНЕТ ПОДСКАЗКОЙ, ЧТО ДЕЛАТЬ ДАЛЬШЕ.​

Материал подготовлен при поддержке ООО «Винокурня Нарочь»