Хакер знайшов спосіб замовляти безкоштовну піцу в domino і успішно його перевірив

Хакер знайшов спосіб замовляти безкоштовну піцу в domino і успішно його перевірив

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

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

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

Хакер знайшов спосіб замовляти безкоштовну піцу в domino і успішно його перевірив

Потім дослідник спробував підмінити значення атрибута на ACCEPTED і на 1 (це означає, що транзакція пройшла успішно). На подив Прайса, його тестовий замовлення було успішно прийнятий, а платіж відзначений як здійснений. Дослідник як і раніше не вірив, що все так просто, він вирішив, що інформацію про замовлення перевірять, і тоді точно розкриється підміна. Однак незабаром статус замовлення в додатку змінився, а через 30 хвилин Прайсу як ні в чому не бувало доставили їжу, загальною вартістю # XA3; 26.

#xAB; Першою моєю думкою було - клас! Другий думкою було - чорт # xBB ;, - пише Прайс в своєму блозі.

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

Виявилося, що логіка додатка приблизно така:

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