Критикую bug bounty программу Apple и наглядно показываю, почему не стоит туда репортить баги
Небольшая история о том, как я зарепортил баги в Apple BugBounty Program
Эта история началась 18 января 2022 года. У компании Apple есть платная API для разработчиков Apple Developer Program
С помощью этого API можно получать информацию об артистах, альбомах, треках, видео, плейлистах, чартах, музыкальных жанрах, и другая информация, которая может вам помочь в разработке собственных музыкальных сервисов.
Более подробно ознакомиться с методами, доступными через API можно здесь.
Для доступа к Apple Developer API вы должны быть участником программы Apple Developer. Стоимость регистрации составляет 99 долларов США (или в местной валюте, если она доступна) за год членства.
Для ознакомления я выбрал метод, который отдавал информацию о плейлистах.
Пока у меня не было валидного токена для авторизации я решил настроить среду разработки, внести необходимые url в Advanced REST плагинчик для Chrome, чтобы в будущем не тратить время на чтение документации на предмет необходимых параметров. Естественно не удержался и сделал парочку запросиков с неверным токеном.
Прежде всего, я делаю запрос без токена доступа и получаю ответ: 401 Unauthorized
Я думаю, что мне нужно пойти сделать валидный токен доступа, но пока я искал, как его сгенерировать, я решил попробовать произвольный токен. Поскольку не было никакой информации о длине токена, то я сгенерил обычный JWT токен, абсолютно случайный и подставил его хедера запроса: Authorization: Bearer ZrtCDYwfcen0G6ODNMr2x34uGeiEzo Сделал запрос и уже хотел закрыть REST клиент, и тут внезапно я получил данные из API. Был очень удивлен, что без валидного токена я стал получать валидные данные из платного API.
Ранее у меня был опыт работы в отделе тестирования Почта@Mail.Ru Group (на данный момент VK и на текущий момент там не работаю), я решил более детально изучить работу авторизации API.
Я начал пробовать разные запросы с разными токенами.
Попробовал другие произвольные токены разной длины и состоящие из разных символов.
К примеру, авторизационный токен, который длинее или короче на один символ, токена указанного выше, не приводило к успешному выполнению запроса.
Дальше стало понятно, что в Apple не проверят токен на валидность, а тупо чекают длинну токена:
Проверил остальные методы из API, все они не чекали правильность токена, а проверяли только соотвествие длины токена лишь какой-то определенной длинне.
Конечно же был наслышан о багбаунти программе, которая обещала, что за обход авторизации щедро отсыплют денег:
По привычке пошел на HackerOne платформу, чтобы зарепортить найденный баг. Однако, как выяснилось компания Apple не регистрирует баги через платформу HackerOne и просит написать о найденных уязвимостях на почту product-security@apple.com Были сомнения, но все-таки я решил зарепортить.
После этого письма пришла автоматическая отбивка, что они приняли мое обращение.
Обращению был присвоен номер: 791460310
Далее мне написал специалист из сесурити тим Apple, просил, чтобы я уточнил все нюансы.
После нескольких дней после репорта зарепорченный баг был исправлен и обход авторизации был исправлен.
Была переписка, где просили подтвердить, что баг заправлен. Ее выкладывать смысла не вижу.
Спустя достаточно долгое время мне прислали письмо, где сесурити тим Apple спрашивали как меня закредитовать в бюллетене
информационной безопастности. Ну и естественно написали, что если решат прислать денег, то уведомят меня об этом в следующем письме.
С тех пор прошел примерно месяц и от компании Apple не было никаких новостей. Позавчера я написал им письмо, с просьбой уточнить собираются ли они меня отблагодарить за мой репорт и в ответ получил вот такое письмо:
Как выяснилось, что я не один такой. На хабре я нашел статьи Denis Tokarev(illusionofchaos), в которой он пишет о проблемах с выплатами по программе BugBounty. Денису точно так же как и мне ничего не выплатили. Статья Дениса доступна на habr по ссылке тыц.
Я бы хотел обратить внимание остальных исследователей информационной безопастности, что наверно нам не стоит писать в компанию Apple информацию о найденных уязвимостях до тех пор, пока они не приведут в порядок свою программу BugBounty. Мое личное мнение такое, что надо быть честными со всеми и не иметь двойных стандартов, вне зависимости от политической ситуации на мировой арене. По своей глупости я имел неосторожность написать им еще об одном баге, но там менее интересная история, хотя они и по второму багу молчат до сих пор.
P.S. Я очень надеюсь, что в комментах под этой статьей не будут публиковать политические лозунги и выяснять отношения, в любой ситуации надо оставаться проф. пригодными коллегами.
P.S.S. Решение о репорте багов в компанию Apple каждый принимает сам, но имейте в виду статьи с Хабра. Так же я предполагаю, что возможно, моя статья окажет кому-то подспорье в поиске более серьезных уязвимостей.
Сегодня с утра мне снова пришло письмо от сесурити тим Apple:
Оказывается сила хабра и других пабликов по информационной безопастности, которые разместили ссылку на эту статью, творит чудеса. Я очень рад, что был услышан, рад что специалисты Apple читают данные ресурсы и реагируют.
Пример из комментариев к данной статье от Лука Сафонов LukaSafonov:
После выхода данной статьи ко мне в личные сообщения и телеграм постучалось несколько человек с разными вопросами, и были люди, которые оказались точно в такой же ситуации как и я — зарепортили bug и тишина.
Как пример, могу привести мое второе обращение с номером: 792781241. По нему так же отсуствует обратная связь, а так же у меня на данный момент нет никакой информации о состоянии на текущий момент.
Информацию по второму обращению в данной статье не раскрываю, оно на другую тему.
Эта история началась 18 января 2022 года. У компании Apple есть платная API для разработчиков Apple Developer Program
С помощью этого API можно получать информацию об артистах, альбомах, треках, видео, плейлистах, чартах, музыкальных жанрах, и другая информация, которая может вам помочь в разработке собственных музыкальных сервисов.
Более подробно ознакомиться с методами, доступными через API можно здесь.
Для доступа к Apple Developer API вы должны быть участником программы Apple Developer. Стоимость регистрации составляет 99 долларов США (или в местной валюте, если она доступна) за год членства.
Для ознакомления я выбрал метод, который отдавал информацию о плейлистах.
Пока у меня не было валидного токена для авторизации я решил настроить среду разработки, внести необходимые url в Advanced REST плагинчик для Chrome, чтобы в будущем не тратить время на чтение документации на предмет необходимых параметров. Естественно не удержался и сделал парочку запросиков с неверным токеном.
Прежде всего, я делаю запрос без токена доступа и получаю ответ: 401 Unauthorized
Я думаю, что мне нужно пойти сделать валидный токен доступа, но пока я искал, как его сгенерировать, я решил попробовать произвольный токен. Поскольку не было никакой информации о длине токена, то я сгенерил обычный JWT токен, абсолютно случайный и подставил его хедера запроса: Authorization: Bearer ZrtCDYwfcen0G6ODNMr2x34uGeiEzo Сделал запрос и уже хотел закрыть REST клиент, и тут внезапно я получил данные из API. Был очень удивлен, что без валидного токена я стал получать валидные данные из платного API.
Ранее у меня был опыт работы в отделе тестирования Почта@Mail.Ru Group (на данный момент VK и на текущий момент там не работаю), я решил более детально изучить работу авторизации API.
Я начал пробовать разные запросы с разными токенами.
Попробовал другие произвольные токены разной длины и состоящие из разных символов.
К примеру, авторизационный токен, который длинее или короче на один символ, токена указанного выше, не приводило к успешному выполнению запроса.
Дальше стало понятно, что в Apple не проверят токен на валидность, а тупо чекают длинну токена:
Проверил остальные методы из API, все они не чекали правильность токена, а проверяли только соотвествие длины токена лишь какой-то определенной длинне.
Конечно же был наслышан о багбаунти программе, которая обещала, что за обход авторизации щедро отсыплют денег:
По привычке пошел на HackerOne платформу, чтобы зарепортить найденный баг. Однако, как выяснилось компания Apple не регистрирует баги через платформу HackerOne и просит написать о найденных уязвимостях на почту product-security@apple.com Были сомнения, но все-таки я решил зарепортить.
После этого письма пришла автоматическая отбивка, что они приняли мое обращение.
Обращению был присвоен номер: 791460310
Далее мне написал специалист из сесурити тим Apple, просил, чтобы я уточнил все нюансы.
После нескольких дней после репорта зарепорченный баг был исправлен и обход авторизации был исправлен.
Была переписка, где просили подтвердить, что баг заправлен. Ее выкладывать смысла не вижу.
Спустя достаточно долгое время мне прислали письмо, где сесурити тим Apple спрашивали как меня закредитовать в бюллетене
информационной безопастности. Ну и естественно написали, что если решат прислать денег, то уведомят меня об этом в следующем письме.
С тех пор прошел примерно месяц и от компании Apple не было никаких новостей. Позавчера я написал им письмо, с просьбой уточнить собираются ли они меня отблагодарить за мой репорт и в ответ получил вот такое письмо:
Почему я написал эту статью сюда?
Как выяснилось, что я не один такой. На хабре я нашел статьи Denis Tokarev(illusionofchaos), в которой он пишет о проблемах с выплатами по программе BugBounty. Денису точно так же как и мне ничего не выплатили. Статья Дениса доступна на habr по ссылке тыц.
Я бы хотел обратить внимание остальных исследователей информационной безопастности, что наверно нам не стоит писать в компанию Apple информацию о найденных уязвимостях до тех пор, пока они не приведут в порядок свою программу BugBounty. Мое личное мнение такое, что надо быть честными со всеми и не иметь двойных стандартов, вне зависимости от политической ситуации на мировой арене. По своей глупости я имел неосторожность написать им еще об одном баге, но там менее интересная история, хотя они и по второму багу молчат до сих пор.
P.S. Я очень надеюсь, что в комментах под этой статьей не будут публиковать политические лозунги и выяснять отношения, в любой ситуации надо оставаться проф. пригодными коллегами.
P.S.S. Решение о репорте багов в компанию Apple каждый принимает сам, но имейте в виду статьи с Хабра. Так же я предполагаю, что возможно, моя статья окажет кому-то подспорье в поиске более серьезных уязвимостей.
UPD:
Сегодня с утра мне снова пришло письмо от сесурити тим Apple:
Оказывается сила хабра и других пабликов по информационной безопастности, которые разместили ссылку на эту статью, творит чудеса. Я очень рад, что был услышан, рад что специалисты Apple читают данные ресурсы и реагируют.
Мне бы очень хотелось, чтобы служба безопастности Apple правильно меня поняла и приняла к сведению пожелания по улучшению вашей программы BugBounty.
- Необходимо принимать bug репорты и производить фиксацию зарепорченных багов более четко.
- Сократить время реакции специалистов по уточнению деталей, с момента первого обращения.
- Использовать в программе BugBounty гранта (третью сторону), которая будет фиксировать изначальные договоренности.
- Быть более дружелюбными: для нас, тех кто на белой стороне важно получить благодарность, важно быть услышенными. А если это подкрепляется еще и денежной компенсацией — так это вообще супер.
- Более отвественно подходить к описанию баги, которую прислали и информации, которая отражена в HoF
Пример из комментариев к данной статье от Лука Сафонов LukaSafonov:
После выхода данной статьи ко мне в личные сообщения и телеграм постучалось несколько человек с разными вопросами, и были люди, которые оказались точно в такой же ситуации как и я — зарепортили bug и тишина.
Как пример, могу привести мое второе обращение с номером: 792781241. По нему так же отсуствует обратная связь, а так же у меня на данный момент нет никакой информации о состоянии на текущий момент.
Информацию по второму обращению в данной статье не раскрываю, оно на другую тему.