Как я участвовал в bug bounty от Xiaomi и что мне за это было

    — У нас дыра в безопасности.
    — Ну, хоть что-то у нас в безопасности.


    — Айфоны, вон, каждый год ломают, и ничего.

    Я нашел эту ошибку случайно. Уверен, что ни один тестировщик и не подумал бы пойти таким путем — это настолько не очевидно, дико и непредсказуемо, что только случайность помогла мне поучаствовать в bug bounty от Xiaomi. В этом посте расскажу о том, как мне это удалось, что за это было и почему китайские сервисы — зло.


    Предыстория


    В операционке MIUI можно создать два «пространства» (для простоты я буду называть их профилями) — полностью независимых набора настроек, приложений и файлов, недоступных друг из друга (не считая отдельного приложения «Импорт»). Оба профиля можно запаролить и, допустим, пользоваться устройством с кем-то еще.

    В чем, собственно, замес?


    Замес в том, что я нашел способ переходить из второго профиля в первый без ввода пароля. Это было возможно через приложение Google Диска, которое по умолчанию установлено в глобальной прошивке на MIUI 8 и сразу доступно во втором профиле.

    Второй профиль имеет меньше прав, чем первый — в нем, например, нельзя включать-отключать мобильный интернет или управлять резервными копиями в Google Диске. Если попытаться это сделать, приложение предлагает сходить в системный диалог «Manage Users» и выбрать пользователя, от имени которого совершается действие.

    Но что-то пошло не так, и выбор главного профиля в этом окне приводил не к управлению резервными копиями, а к переходу в него без ввода пароля.

    Сомнительная аналитика #1


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

    С другой стороны, я не успел толком исследовать принцип появления экрана «Manage Users». Вероятно, есть системные методы для его вызова и из других приложений, но так далеко я не заходил.

    Как с этим жить?


    Сначала я думал заявить это как баг гуглового приложения (я слышал, что они иногда дают деньги за это). Но здравый смысл все-таки подсказал, что дыра в безопасности операционки может быть оценена дороже (да и фиксить ее нужно быстрее), и я пошел искать программу для баг баунти от Xiaomi.

    Недолгие поиски привели меня в Xiaomi Security Center. Это сейчас туда худо-бедно процентов на 30 добавили английский перевод, а тогда он выглядел примерно так:


    Xiaomi Security Center, sec.xiaomi.com

    С гугл-переводчиком я почитал какие-то общие вещи про программу и понял, что найденная уязвимость тянет на категорию High — к ней относят SQL-инъекции, уязвимости в бизнес-логике, XSS с доступом к cookie, получение информации о пользователях устройства, эскалацию привилегий, обход экранов логина и еще несколько вещей. «Окей», подумал я, методом тыка нашел форму и пошел описывать проблему.


    Форма отправки уязвимости

    Встроенный в хром гугл-переводчик хорош ровно до момента, когда дело доходит до динамически формируемых выпадающих списков. Если поля title, description, proof-of-concept и solution были еще как-то понятны, то, что от меня хотели в списках, я не понимал совсем. Пришлось выковыривать иероглифы из нужных мест страницы через просмотр HTML-кода и переводить вручную.


    Спасибо, теперь все понятно

    Оказалось, что первый список определял тип уязвимости, второй конкретизировал ее, а в третьем нужно было выбрать масштаб проблемы — от low до major.

    Я, естественно, написал что проблема крайне важна и дайте мне скорее денег уже терпеть нет сил я же такой молодец. Для подтверждения намерений я записал пятиминутное видео, где на ломаном английском рассказал, как эксплуатировать уязвимость и легко получить доступ к личным данным. Отправил информацию об уязвимости и способах ее устранения (шестого апреля) и стал ждать.

    Сколько пришлось ждать?


    11 апреля прямо в Security Center я получил сообщение от безымянного сотрудника Xiaomi.
    Оно было таким:
    > Thanks for your submission,this is not miui's issue so this got minor and no reward.Thanks for your support.
    > Спасибо за отправку, это не проблема miui, она помечена незначительной и останется без награды. Спасибо за поддержку.

    «Да как же так? Но это! Же! Дыра! Размером! С! Кимберлитовую! Трубку! В Якутии!» — примерно так я негодовал следующие четыре часа, а потом успокоился и написал ответное сообщение. Вот такое:

    > Miui allows to view «manage users» screen and switch account without pass. anyway, do you have plan to fix this issue?
    > В MIUI можно попасть на экран «Управление пользователями» и переключаться между аккаунтами без пароля. В любом случае, вы планируете устранять проблему?

    Я был морально готов ждать еще пять дней (раз уж я все равно остался без награды), но ответ пришел через час:

    > sorry,my mistake ,I will test again
    > Простите, виноват. Проверю еще раз.

    Сомнительная аналитика #2


    Из-за «ошибки» оператора дыра могла быть закрыта примерно через бесконечность. Не знаю, как это работает в других программах поиска уязвимостей, но такой подход в Xiaomi явно настраивает на удручающие мысли.

    Ошибку, тем не менее, исправили уже через две недели после перетеста — в свежем апдейте системы такой трюк уже не повторялся. По этой же причине сейчас пишу этот пост.



    К счастью, тестирование не заняло много времени и на следующий день я получил вознаграждение в 1000 (тысячу) монет в магазине внутри Security Center.

    Что еще за магазин?


    На sec.xiaomi.com есть каталог вещей, которые можно купить за внутреннюю-безопасностную-валюту-победы (извините, я просто не придумал объяснения проще).


    Ни в чем себе не отказывайте на тысячу призовых монет

    Поняв, что ничего дельного из товаров выбрать не получится, я начал изучать еще одну интересную опцию — можно было «купить» юани за монеты, по курсу 1 юань за 1,5 монеты. Быстрый подсчет показывал, что моя тысяча монет лихо превращалась примерно в 5200 рублей (по курсу на момент написания статьи), и это выглядело очень хорошим вознаграждением за нажатие на пару кнопок в сомнительных местах системы.

    Конечно же, я набил корзину юанями за 900 монет (квантизация по 150).
    Конечно же, нажал на китайскую версию надписи «Оформить заказ».
    И, конечно же, сразу столкнулся с кучей проблем.

    Здесь был бы скриншот формы, если бы я его не потерял

    Они требовали от меня имя, номер банковской карты и CVV номер ID.


    Китайская форма ввода имени

    Ни имя, ни номер российского паспорта не подходили — китайский номер ID содержит от 12 до 16 символов, а для имени отводилось всего от 2 до 6.
    Но после пройденного награду упускать не хотелось, и я решил написать письмо в техподдержку и узнать, как выводят деньги иностранцы (которых, судя по никам ловцов уязвимостей, было много). Окей, с переводчиком ищем нужный раздел, заходим…


    … черт.

    Ладно, пришлось выбирать товары. В тысячу монет вместились умная лампа, умная 360-градусная камера и bluetooth-колонка. Вместе они стоят около 7200 рублей (или 124 доллара).

    Оставшиеся три десятка монет я проиграл в «колесе удачи» там же на сайте.

    Благо с оформлением проще, и пришлось просто придумать, как вместить адрес международной доставки в поле с ограничением в 100 символов, а также сократить имя до шести букв — Evgeny, а полное написать в «Notes».

    Заканчивался июль.

    А долго мне еще ждать?


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

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

    Доставка заняла еще неделю, и я наконец-то получил посылку с наградой за баг баунти в Xiaomi. Приятно, что курьер из EMS доставил ее до двери и не пришлось никуда ехать. Happy end.

    В комментариях готов ответить на ваши вопросы о любых этапах этого растянутого во времени процесса.

    Спасибо за внимание!
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 57
    • 0
      не совсем понял, что случилось с техподдержкой по поводу вывода денег?
      • +23
        Чтобы им что-нибудь написать, нужно ввести китайскую капчу.
        • +10
          надо было уже им заодно и капчу поломать :)
          • 0
            Зря вы сдались. Можно же вводить иероглифы средствами рукописного ввода.
            • +2

              Чтобы получить распознаваемые иероглифы в таком вводе, нужно знать хотя бы порядок радикалов. Иначе получается что-то вообще нераспознаваемое

              • 0
                Есть системы ввода иероглифов, у которых порядок опционален.
                У меня на смартфоне словарь кандзи с отключаемым порядком радикалов, к примеру.
            • +2
              Лайфхак, на гуглотрасляторе можно нарисовать иероглифы и оно их неплохо распознает
              Вот так оно выглядит
              image
          • 0
            В этом посте расскажу о том, как мне это удалось, что за это было и почему китайские сервисы — зло.

            Правильно ли я понял, зло оно потому что оператор накосячил и у них не очень удобный фидбек?
            • +5
              В том числе.
              Еще они, вроде как, позиционируются как глобальная программа, но в целом юзер-френдли только для китайцев.
              • +1
                думаю, что это всё решится со временем
                • +2
                  Потихоньку появляется перевод на английский у основных разделов, но формы ввода пока китайские.
                  Хотя я просто надеюсь, что мне не придется больше пользоваться этим сервисом.
            • –5
              Зачем китайцам делать что-то для кого-то, кроме китайцев? Китай — это как параллельная вселенная, только рядом
              • +7
                Полагаю затем, что они уже давно делают вещи для всего мира?)
                • +9
                  Они делают для себя, а все почему-то думают, что для всего мира
                  • +2
                    Истина! Сталкиваюсь с алибаба — так все и есть. Китай только начинает открывать для себя чудной внешний мир.
              • +2
                Пришлось выковыривать иероглифы из нужных мест страницы через просмотр HTML-кода и переводить вручную.

                Для этого в мобильном Google Translate есть перевод по фото и режим дополненной реальности :)
                • +1
                  Вы знаете, я пробовал какие-то программы в процессе. Но все они работали настолько плохо, что я прям расстроился и решил действовать дедовским методом :)
                  • –3
                    Для этого уже давно есть решение: chrome.google.com/webstore/detail/google-translate/aapbdbdomjkkjkaonfhkkikfgjllcleb
                    Выделяешь текст и он автоматически переводится с любого языка.
                    • +1
                      Спасибо за ответ. Только я не могу придумать, как выделить текст в выпадающем списке. Подскажете?
                      • +4
                        Использовать Google Translate и камеру на телефоне :)
                        Я так удалял китайский антивирус с ПК знакомых.
                        • 0
                          Я понимаю что это не панацея. И с выпадающими списками она поможет только в комплекте с кодом страницы.
                          Данное расширение убирает необходимость ходить и копировать текст в переводчик.
                          Чем экономит кучу времени.
                          • 0
                            Так в хроме уже есть встроенный переводчик по правому клику на странице.
                          • 0
                            Можно открыть список и нажать Ctrl+A :) Не знаю, везде ли сработает, но на хабре работает.
                            • 0
                              То расширение выше умеет переводить весьма ограниченный объем выделенного текста. Не думаю, что «вся страница» — рабочий кейс для него.
                              • 0
                                Выделяете текст и тыкаете в иконку приложения, тогда переводить любой объём.
                                «Локальный» перевод ограничен по длине.
                            • 0
                              Да, конечно. Открываете список, включаете приложение на телефоне, делаете фото и пальцем проводите по нужному фрагменту. Иероглифы выделяются и переводятся. Можно выделить часть предложения, если символы разбиты на группы, либо сразу все — без разницы.
                              Я так сотни раз переводил интерфейсы японских VN. Жаль, только, что нет десктопного приложения, которому можно просто скормить скриншот. Разве что с эмуляторами… Развлекаться.
                              • 0
                                Пардон, вы про расширение, а я про приложение.
                          • 0
                            +1 голос за мобильное приложение Google Translate. Работает даже с выпадающими списками: imgur.com/a/HhCo4
                        • +8
                          • +9
                            Нужно не отрывать кончик, а разламывать пополам!
                            • 0
                              Ну тут инструкции хотя бы не на китайском языке :)
                            • 0
                              В какой версии MIOI был баг и в какой исправили?
                              • 0
                                MIUI 8 Global 7.3.30
                                Исправили в следующем апдейте, который прилетал по воздуху, но извините, я не помню номер.
                              • +4
                                Что еще раз подтверждает что пока не тыкнешь их носом никто не признает ошибку, и изначально будут пытаться «отмазаться» стандартным ответом. Работал в поддержке, знаю суть работы. Везде одинаково.
                                • 0
                                  Так, вроде, не только в поддержке делают :)
                                • 0
                                  Китайские Bug Bounty иногда странные (в том числе, и из-за языка), но мне они обычно платили. Правда иногда любят не признавать уязвимость проблемой и перестать на нее реагировать.

                                  А вот другая история, как я участвовал в Bug Bounty от Telegram: полгода назад отправил несколько уязвимостей (разные проблемы в приложениях), один раз ответили, что «разработчики посмотрят», после этого они не отвечают на мои сообщения вообще. И не посмотрели, уязвимости все еще живы.
                                  • 0
                                    Так проблемы в приложениях или уязвимости?
                                    Не думаю, что если бы там были критические дыры или что-то похожее, они отложили бы это в долгий ящик.

                                    Напишите об этом.
                                    • 0
                                      По классификации OWASP это уязвимости, другие компании подобные вещи закрывают. Хотел написать на этой неделе, но не успел. Надеюсь, что напишу на следующей.
                                      • 0
                                        В твиттере реагируют быстро, даже сам СЕО. Только вот потом награды не будет :)
                                  • 0
                                    Я подумал, что вам не только не досталась награда, но еще и что-то очень плохое вам сделали за обнаружение бага.
                                    Как я участвовал в bug bounty от Xiaomi и что мне за это было
                                    • 0
                                      «кликбейтный» заголовок)
                                    • 0
                                      Да, заголовок заинтриговал.
                                      • 0
                                        Мда,… думаю что здесь даже потраченное время на заполнении различных бюрократических анкет себя не оправдало при такой награде. На черном рынке вы бы однозначно больше получили за находку такой серьезной уязвимости.
                                        • 0
                                          Поделитесь контактами черного рынка?)
                                      • 0
                                        Спасибо Вам за статью! Понравилось описание процесса общения — как будто фантастический рассказ прочёл про общение с инопланетянами. :)
                                        • 0
                                          Спасибо за комментарий!
                                          Как верно заметили выше, это немного другой мир, в котором нам еще разбираться и разбираться :)
                                        • 0
                                          5000 рублей. Меньше 100 баксов за уязвимость на повышение привилегий. Имхо это даже круче, чем вконтактик, который дал всего 3000 баксов за возможность залогиниться любым пользователем. Вот и участвуй после этого в официальных баг баунти. Какой-нить zerodium вполне возможно заплатил бы на порядок больше. Судя по прайсу zerodium.com/program.html можно расчитывать до 15000$ (хотя непосредственно за такую багу врядли).
                                          • +1
                                            Первый блин сразу получился. Стоит продолжить писать. Спасибо ;)
                                            А тема общения с поднебесной и на ее ресурсах тема для многотомной серии в духе Физики шутят. Что не история, то перл
                                            • 0
                                              Ну кстати зря вы лампу взяли =)

                                              У меня такая лампа была привязана к аккаунту, и приложение стояло на старом мобильнике. Когда поменял трубку, поставил на новую приложение, вошёл в аккаунт, сбросил лампу и попытался привязать её к новому приложению. Собственно, на этом моменте лампа перестала быть умной и перестала привязываться куда-либо. Тех.поддержка вообще меня проигнорила с этой проблемой. Так что теперь у меня тупая светодиодная лампа за 1500.
                                              • 0
                                                Наверное, вы сделали что-то не так.
                                                Прошел ту же процедуру (менял телефон практически в самом начале эксплуатации) — полет нормальный.
                                                • 0
                                                  Вы извините, но если в простейшей процедуре что-то можно сделать не так, значит что-то не так с процедурой.

                                                  Если устройство не обеспечивает достаточной повторяемости своих функций в процессе эксплуатации — значит устройство мусор.

                                                  Ну и, к слову, там ошибиться-то особо негде — отвязал в старом приложении, сбросил, привязал к новому. Где тут можно ошибиться?
                                                  • 0
                                                    Сервер, например, не тот выбрать.
                                                    • 0
                                                      А почему на них разные данные? Меня как пользователя почему вообще должно заботить какой там сервер где находится? Неужели как-то синхронизацию настроить было нельзя?

                                                      В любом случае, это не имеет значения — я пробовал оба. Даже пробовал новый акк заводить и с него тоже пробовал оба сервера.
                                                      • 0
                                                        Я вам точно не отвечу на эти вопросы.

                                                        А серверов там восемь. От них (и соответственно, локали) зависит то, как будет выглядеть Mi Home, и какие устройства будут доступны для подключения.
                                                        • 0
                                                          В моём случае речь про YeeLight, и серверов там таки всего два.

                                                          А на вопросы вообще никто отвечать не собирается — поддержка успешно игнорит сообщения на двух языках.

                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.