Как парень Starbucks взломал (3 фото)

19407
+63
Один парень нашел способ, как обойти защиту известной американской компании Starbucks, владеющей сетью кофеен по всему миру, и решил поделиться этой информацией со всеми желающими. Правда, сделал он это уже после того, как сообщил об этом упущении представителям компании, которые, кстати, даже не поблагодарил его за оказанную помощь.

Далее авторский тест.

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

Итак, не так давно мне в голову пришла идея купить 3 карты Старбакса по $5 каждая.

Как парень Starbucks взломал (3 фото)

На сайте компании есть личный кабинет, где можно добавить эти карты, смотреть баланс и даже переводить деньги между картами.

Есть такой малоизвестный класс уязвимостей «race condition». Могу с уверенностью заявить, что большинство приложений, которые могут быть уязвимы, к этой атаке скорее всего уязвимы, ведь далеко не каждый программист при проектировке программ учитывает такие факторы, как параллельность выполнения кода и его последствия.

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

Перевод строился из нескольких stateful запросов. Схематично — первый запрос POST /step1?amount=1&from=wallet1&to=wallet2 закладывал все эти значения в сессию на сервере, и лишь второй POST/step2?confirm переводил данные уже заложенные в сессии и очищал ее.

Это существенно усложняет эксплуатацию относительно классической гонки, где нужно лишь повторить один и тот же запрос несколько раз одновременно. Ведь как только первый запрос очищает сессию, второй уже натыкается на пустую сессию! И чтобы как-то заставить это работать, пришлось бы делать сложную композицию запросов, записывающую в сессию сразу после ее очищения первым запросом и перед выполнением второго запроса. Такое могло бы сработать раз из миллиона попыток, или вообще не сработать.

Но всегда есть обход для таких «полу защит» — можно залогиниться в один и тот же аккаунт с двух разных браузеров / сессий. Тогда эксплуатация выглядит приблизительно так:

#закладываем параметры перевода в обе сессии
curl starbucks/step1 -H «Cookie: session=session1» --data «amount=1&from=wallet1&to=wallet2»
curl starbucks/step1 -H «Cookie: session=session2» --data «amount=1&from=wallet1&to=wallet2»
#одновременное одобрение перевода $1 с карты 1 на карту 2.
curl starbucks/step2?confirm -H «Cookie: session=session1» & curl starbucks/step2?confirm -H «Cookie: session=session2» &

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

На 6-ой запрос произошло чудо — перевод был произведен два раза и у меня стало две карты с 15 и 5 долларами, 20 в сумме. Чтобы считать это за proof of concept, осталось убедиться, что магазин примет эти карты.

Я пошел в ближайший работающий Cтарбакс на market st.

— Дайте мне чего-нибудь на $16.
— O_o.
— Ну что у вас самое дорогое?
— Вон те сэндвичи.

Как парень Starbucks взломал (3 фото)

Вышло $16.70.

Как парень Starbucks взломал (3 фото)

Итак, в нашу маленькую операцию Ы было инвестировано 15 долларов, а закупок сделано на 16.70. Зная отношение самого гуманного суда США к хакерам, я вернувшись домой, сразу зачислил еще $10 с кредитки на карту Старбакса, чтобы не быть должным корпорации целых $1.70, мало ли.

Дальше самое сложное — процесс репорта. Саппорт честно ответил, что не может связать меня с технической командой, ну вообще никак, и им очень жаль, что я feel this way. Написал на [email protected] 23 марта, тишина (ответили, кстати, аж 29 апреля). Пришлось через знакомых знакомых находить людей, которым не все равно и лишь через 10 дней уязвимость была исправлена.

Спасибо никто не сказал, зато был сделан не двусмысленный намек, что я совершил «fraud» и «malicious actions» и что они еще подумают, что со мной сделать.

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


Отсюда

Топ комментарии

22 мая 2015 00:42
Пользователь offline
Голосов:  +14
Не, ну компания тут ведёт себя как типичный наглый жадный, обидчивый и всегда уверенный в своей правоте америкос. Хотя айтишникам нагоняй был, по-любому.
А могли бы и "спасибо" сказать.
Если всё описанное действительно правда.
22 мая 2015 08:35
Пользователь offline
Голосов:  +12
Цитата: PLUT-SAN
И зачем здесь так много этих букав не о чём?

Может ты просто не шаришь нихрена?

Комментарии (11) 

Показать сначала комментарии:
  1. 21 мая 2015 23:02
    Пользователь offline

    -18

    #
    И зачем здесь так много этих букав не о чём?
           
  2. 22 мая 2015 00:42
    Пользователь offline

    +14

    #
    Не, ну компания тут ведёт себя как типичный наглый жадный, обидчивый и всегда уверенный в своей правоте америкос. Хотя айтишникам нагоняй был, по-любому.
    А могли бы и "спасибо" сказать.
    Если всё описанное действительно правда.
           
  3. 22 мая 2015 07:18
    Пользователь offline

    +4

    #
    Парниша, делай выводы!
    И из происшедшего, и со счетов фирм дерьмократического пиндостана..

    drinks
           
  4. 22 мая 2015 08:35
    Пользователь offline

    +12

    #
    Цитата: PLUT-SAN
    И зачем здесь так много этих букав не о чём?

    Может ты просто не шаришь нихрена?
           
  5. 22 мая 2015 09:36
    Пользователь offline

    +2

    #
    blink а надо было просто наказать эту амеровскую фирму
           
  6. 22 мая 2015 10:20
    Пользователь offline

    +2

    #
    Если карты именные, и как-то привязаны хотя бы к чему-то, то скорее всего потом бы его нашли, и жестко покарали, лет так на 7-мь общего режима. Но если привязки никакой нет, не палился на камеры получая карты, делал грамотные но фейковые аккаунты и сильно не жадничал, я бы взгрел эту контору в пределах ляма, и подчистил все за собой.
           
  7. 22 мая 2015 13:24
    Пользователь offline

    +1

    #
    Цитата: MonSTARik
    Если карты именные,

    Карты не именные. Приходи, покупай, обманывай.
    Цитата: wolflarcen
    Если всё описанное действительно правда.

    Описанное правда, взято с хабры, где фейк бывает очень редко и люди там действительно толковые.
           
  8. 22 мая 2015 17:29
    Пользователь offline

    0

    #
    чо за хуйня?
           
  9. 22 мая 2015 20:24
    Пользователь offline

    0

    #
    тут все так отзываются, будто в нашей стране было бы иначе
           
  10. 10 июня 2015 12:30
    Пользователь offline

    0

    #
    ачюметь 35
           
  11. 13 июня 2015 12:29
    Пользователь offline

    0

    #
    Реально много букв не для средних умов....я даже дочитать не смог!!!
           
Информация
Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы оставлять комментарии на сайте.