Основы этичного веб-хакинга (перевод)

2. Starbucks Race Conditions

Сложность: Средняя 
Url: Starbucks.com 
Ссылка на отчет: http://sakurity.com/blog/2015/05/21/starbucks.html¹⁷ 
Дата отчета: 21 мая 2015 
Выплаченное вознаграждение: $0 
Описание: 
Если вы не знакомы с race condition, то, в общих чертах, эта 
уязвимость становится возможной, когда два потенциальных

процесса соревнуются друг с другом за скорость выполне- 
ния в ситуации, когда они становятся невалидными уже в 
процессе выполнения. Другими словами, это ситуация, когда 
два процесса, которые должны быть уникальными, не могут 
завершиться, но из-за того, что они происходят практически 
одновременно, они имеют возможность завершиться. 
Вот пример: 
1. Вы входите на сайт своего банка со своего телефона и 
запрашиваете перевод $500 с одного счета, остаток на 
котором равен всего $500, на другой счет. 
2. Запрос выполняется слишком долго (но все еще выпол- 
няется), так что вы входите на сайт банка уже со своего 
ноутбука и совершаете тот же самый запрос на перевод 
денег еще раз. 
3. Запрос, созданный с ноутбука, завершается почти мгно- 
венно, но в этот же момент завершается и запрос, создан- 
ный с телефона. 
4. Вы обновляете ваши банковские счета и видите $1000 
на счету, куда пытались перевести деньги. Это значит, 
что процесс выполнился дважды, чего не должно было 
произойти, поскольку у вас изначально было лишь $500. 
Хотя это очень упрощенный пример, идея остается неизмен- 
ной, некоторые условия существуют лишь для того, чтобы 
начать запрос, который, будучи завершенным, больше не су- 
ществует. 
Возвращаясь к этому примеру, Егор протестировал перевод 
денег с одной карты Starbucks и обнаружил, что он может 
успешно воспроизвести race condition. Запросы создавались 
почти одновременно при помощи программы cURL.

Выводы 
Race conditions являются интересным видом уяз- 
вимостей, иногда присутствующие в приложе- 
ниях, которые работают с каким-либо видом ба- 
ланса, например, деньгами, кредитами, и так 
далее. Эту уязвимость не всегда можно обнару- 
жить с первой попытки и может потребоваться 
совершить несколько повторных одновременных 
запросов. В нашем примере Егор сделал 6 за- 
просов, прежде чем сумел воспроизвести уязви- 
мость. Однако помните, что тестирование на на- 
личие race condition создаст определенный тра- 
фик и постарайтесь избегать постоянных попы- 
ток забросать сайт тестовыми запросами.



Отредактировано: 08.03.2019





Понравилась книга?
Отложите ее в библиотеку, чтобы не потерять