«1 dmitry» — так с некоторых пор в Google в шутку именуют выплату в 1337 долларов по bug bounty program. Android-разработчику Дмитрию Лукьяненко, в честь которого её так назвали, эта сумма в прошлом году приходила на счёт не менее 12 раз.
Год назад Дмитрий превратил своё хобби в бизнес — и теперь зарабатывает тем, что ищет уязвимости в продуктах Google и Facebook, работает с площадками HackerOne и BugCrowd. В рейтинге багхантеров Facebook за прошлый год он в первой пятёрке, в рейтинге Google — в топ-20.
Посмотреть код страницы и найти там скрытую от глаз информацию — не это ли настоящая социальная инженерия, которая без взлома открывает путь к цели? Настоящие легенды не брутфорсят миллионы паролей — иногда нужно замечать непривычное в привычных вещах. И раз ты читаешь этот абзац — возможно, в тебе есть тот самый талант, который присущ старым легендам хакерства? Давай проверим. Если ты окажешься одним из нас — получишь заслуженный приз. Он будет твой, если сможешь отыскать дальнейшие шаги этого импровизированного «квеста» в дневнике хакера, который мы оставили тут — https://vk.cc/99LDMA </p
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 я стал багхантером на постоянной основе
Почему вы сконцентрировались в основном на 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. Если честно, мне самому уже неудобно просить: всё же небольшая подушка безопасности у меня есть. Но если дают, не отказываюсь.
Конечно, бывают дни, когда я думаю: а вдруг не найду ничего в этом месяце, и в следующем — жить станет не на что. Но потом успокаиваю себя тем, что я и раньше думал, что уязвимости скоро закончатся, но всегда что-то находится.
Какие обязательства накладывает на багхантера получение гранта?
Есть разные гранты: чаще всего ты волен выбирать, что исследовать, но в ряде случаев тебе не оставляют выбора: «Надо это посмотреть!»
Я всегда выбирал 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 долларов.
И вот когда мне вручили такую же по размеру табличку, я подумал: «Теперь побываю сам в его шкуре. Но оказалось, что наклейку можно с пластины аккуратно снять — я так и сделал.
За год у вас не появлялось желание всё бросить и вернуться в «найм»?
Нет, хотя изначально это был «план Б».
Никогда не жалели, что отказались от предложения менеджера Google?
Нет, мне комфортно на родине. Когда Google купил AIMatter, я искренне говорил, что не хотел бы уезжать из Беларуси.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.