Британский исследователь Пол Прайс (Paul Price) обнаружил ошибку в местном приложении Domino’s Pizza. Баг позволял исследователю заказывать пиццу бесплатно, но будучи сознательным white hat хакером, Прайс не стал умалчивать об уязвимости в личных целях.

API британской версии приложения Domino’s Pizza для Android оказалось дырявым: Прайс заметил, что информация о платежах обрабатывается не совсем корректно. Как правило, обработка платежей происходит на стороне сервера, однако приложение Domino обрабатывало платежи самостоятельно, прямо на стороне клиента. Когда исследователь решил изучить проблему детальнее, он выяснил, что приложение можно обмануть и заставить его поверить, что недействительный платеж на самом деле прошел.

Для теста Прайс ввел в приложение номер карты Visa 4111111111111111 и получил предсказуемый ответ с ошибкой.

1

Затем исследователь попытался подменить значение атрибута <reason> на ACCEPTED и <status> на 1 (это означает, что транзакция прошла успешно). К удивлению Прайса, его тестовый заказ был успешно принят, а платеж отмечен как осуществленный. Исследователь по-прежнему не верил, что всё так просто, он решил, что информацию о заказе проверят, и тогда точно раскроется подмена. Однако вскоре статус заказа в приложении изменился, а через 30 минут Прайсу как ни в чем не бывало доставили еду, общей стоимостью £26.

«Первой моей мыслью было – класс! Второй мыслью было — черт», — пишет Прайс в своем блоге.

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

Оказалось, что логика приложения примерно такова:

2

Значение placeOrder() отправляется Domino API как HTTP-запрос, где order_id это номер, который присваивается заказу в процессе создания, а <merchantreference> получается из XML-запроса выше. По идее Dominos стоит перепроверять эти данные на стороне сервера, однако этого не происходит, ведь клиент никогда не врет. В результате, приложению можно было скормить практически любую информацию о платежах.

Фото: Scott Bauer 

2 комментария

  1. Лена

    07.10.2016 at 11:17

    Да, вкусная у них пицца! Я сама у них на сайте частенько заказываю. Такую пиццу как у них и гостям подать не стыдно. Как-то пришла вечером подружка, она в соседнем доме живет. Мы с мужем решили ничего не готовить, обойтись пиццей и чайком. Заказали, только сели за стол — звонок в дверь. Открываю — подруга стоит. Муж смеется и говорит: «Ты, наверно, курьера увидела в окно». В общем, пришлось вдогонку еще один заказ в dominos pizza делать)) Подруге больше всего «Экстравагантная» понравилась, она маслины любит. А мы с мужем «Роял Чизбургер» 20 см заказывали, там огурчики маринованные неплохо сочетаются с говядиной.

  2. Михаил071

    18.10.2016 at 12:53

    Какой честный хакер! Сам не воспользовался такой возможностью и другим не дал. Российские взломщики систем ни за что бы так не поступили! Я бы тоже не отказался от бесплатной пиццы из dominos pizza! Заказал бы себе парочку мясных, а третья у них там вообще акционная, как подарок прилагается. Вот бы погуляли с пацанами! А под пиво и «Русская» бы хорошо пошла. Классная закуска! Там картошечка с мясом запеченным и тертым сыром. Необычное сочетание, но на самом деле это очень вкусно, особенно для голодной мужской компании! В общем, нужно мне, наверно, профессию менять, из менеджера переквалифицироваться в хакера.

Оставить мнение