Опыт разработчика: как получить 15600$ от Google за найденные баги

Пересказываем историю разработчика, который обнаружил баги в баг-трекер Google и смог получить значительную сумму за уведомление об их наличии.

Вы когда-нибудь слышали про Google Issue Tracker? Вряд ли, если вы не находитесь в кругах, близких к разработчикам Google. Я и сам не знал о нём, пока не обратил внимание, что для моего отчёта об уязвимости была создана тема в Issue Tracker.

И тут я решил сломать его.

Что это за сайт? Согласно документации, Issue Tracker (рабочее название − Buganizer System) − это инструмент, используемый компанией Google для отслеживания ошибок и уязвимостей в процессе разработки продуктов. Он доступен также сторонним компаниям, разрабатывающим расширения и интеграции для Google, а простые пользователи не могут узнать о проблемах.

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

Попытка №1: Получение статуса сотрудника Google

Одной из первых вещей, которую я заметил, стала возможность участия в обсуждениях разработчиков, если попасть в базу рассылки электронных писем. Адрес выглядит примерно так:

buganizer-system + componentID + issueID @ google.com

(componentID − это число, представляющее категорию, а identID − уникальный идентификатор для потока)

Это напомнило мне историю про взлом службы поддержки Ticket Trick, который позволил хакерам проникнуть в системы чатов организаций, используя подобную ​​систему электронной почты.

Учитывая, как оканчивается адрес электронной почты @google.com, я пытался присоединиться к команде Google в Slack. Поначалу это было многообещающе:

Увы, письма от Slack я так и не получил.

Затем я попробовал просто зарегистрировать учётную запись с окончанием в @google.com:

Но и это не привело к успеху. Тем не менее я нашел метод обхода фильтра: если при регистрации с любым другим поддельным адресом письмо с подтверждением не пришло, то можно изменить этот электронный адрес. Используя данный метод, я изменил адрес электронной почты новой учетной записи Google на buganizer-system+123123+67111111@google.com.

Вскоре я получил письмо с подтверждением:

Да! Я кликнул по ссылке и вошёл в систему баг-трекинга.

И почти сразу был перенаправлен на другую страницу, где снова нужно было войти. Там мои данные не сработали. Тем не менее я продолжил поиски возможных путей обхода. Кстати, за эту уязвимость я получил $3 133: ей был установлен критический приоритет. В течение 11 часов проблему устранили.

Попытка №2: Получение уведомлений о новых тикетах

Еще одна функция, которая привлекла мое внимание − возможность следить за открытыми тикетами, добавив их в избранное. Когда состояние проблемы обновится или появится новый комментарий, приходит уведомление.

Ещё одна любопытная проблема, на которую я обратил внимание, − это плохая регуляция доступа. Ограничения прав будто вообще никак не применяются к этому сервису.

Например, я попробовал добавить баг в избранное, не имея к нему доступа (подменив в запросе Issue ID на идентификатор из другого своего аккаунта). И этот запрос выполнился успешно:

Я решил проверить, поймут ли другие, что я посторонний, и опубликовал следующее сообщение:

Снова не получилось. Я не отчаялся и решил побаловаться с последними полученными Issue ID (скорее всего, они совпадают с номерами в базе данных), после чего все эти проблемы я добавил в избранное.

Проверив почту через несколько минут, увидел следующее:

Но нет, все новые записи оказались бессмысленными обсуждениями. Я даже сначала решил попытаться найти решение проблем самостоятельно, но в итоге сдался и просто отправил информацию в Google. За это я получил $5 000.

Попытка №3: Игра окончена

Когда обычный пользователь заходит в Tracker Issue, большинство функций блокируются или глубоко скрываются.

Разработчик ограниченной версии Tracker Issue оставил возможность удаления из списка рассылки обновлений по проблеме. Нужно отправить запрос POST:

POST / action / issues / bulk_edit HTTP / 1.1
{ 
   "issueIds": [ 
      67111111, 
      67111112 
   ], 
   "действия": [ 
      { 
         "fieldName": "ccs", 
         "value": "test@example.com", 
         "actionType": "REMOVE" 
      } 
   ] 
}

И тут я обнаружил серьёзные баги:

  1. Система не проверяет, имел ли пользователь доступ к рассматриваемой проблеме ранее.
  2. Если вы указали адрес электронной почты, который ещё не был включен в список рассылки, то вылезает сообщение об успешном удалении из списка.
  3. Все детали бага в ответе: если ошибок не произошло во время выполнения действия, то остальная часть системы подразумевает, что у пользователя достаточно прав. Поэтому абсолютно вся информация по заданному issue ID будет возвращена в теле HTTP ответа.

Я смог просмотреть сведения о каждой проблеме в базе данных, заменив issueIds в запросе выше: подробности отчетов об уязвимостях, всё, что есть в Buganizer. Более того, система никак не ограничивала скорость обработки данных пользователем, то есть я смог получить информацию о нескольких тикетах одним запросом.

Быстро заполнив данные о проблеме, я получил 7500$. К слову, решение проблемы командой Google заняло всего час.

Понравилась статью о том, как разработчик обнаружил баги и получил вознаграждение? Возможно, вам понравится следующее:

Источник: Как я взломал систему баг-трекинга Google и получил $15 600 за обнаруженные баги on freeCodeCamp

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

eFusion
29 сентября 2019

20 рабочих советов от Junior Front-end developer

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