Сложность: Средняя
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 создаст определенный тра-
фик и постарайтесь избегать постоянных попы-
ток забросать сайт тестовыми запросами.
#42571 в Разное
#1027 в Бизнес-литература
#5056 в Развитие личности
хакер, хакинг, основы этичного хаки...
16+
Отредактировано: 08.03.2019