В Steam нашли эксплойт для бесконечного добавления денег на счёт — Valve выплатила скромную сумму за его обнаружение
Исследователь обнаружил эксплойт для накачивания деньгами кошелька в Steam. Valve выплатила скромное вознаграждение.
Исследователь безопасности под ником drbrix обнаружил эксплойт в Steam, который позволял злоумышленникам добавлять неограниченное число средств на счёт.
Valve использует платёжный сервис Smart2Pay. При добавлении средств в кошелёк Steam отправляется запрос (POST) и в нём передаётся число отправляемых средств. Естественно, он защищён, но исследователь нашёл способ, как его отредактировать.
Для эксплойта использовалась новая электронная почта, в адресе которой содержалась строка «amount100», где 100 — сумма, которую начислят на счёт при проведении транзакции.
Потенциальному злоумышленнику достаточно было просто добавлять деньги на счёт, как это делают многие другие пользователи. При этом сумма не важна — использующий эксплойт перехватывал бы запрос POST (данные, отправляемые на сервер), а затем редактировал его и указывал необходимую для зачисления сумму.
Вот оригинальный запрос:
MerchantID=1102&MerchantTransactionID=███&Amount=2000&Currency=
PLN&ReturnURL=https%3A%2F%2Fstore.steampowered.com%2Fpaypal%2Fsmart2pay%2F████%
2F&MethodID=12&Country=PL&CustomerEmail=brixamount100abc%40███████&CustomerName
=_drbrix_&SkipHPP=1&Description=Steam+Purchase&SkinID=101&Hash=██
После редактирования:
MerchantID=1102&MerchantTransactionID=██████&Amount2=000&Currency=PLN&ReturnURL=
https%3A%2F%2Fstore.steampowered.com%2Fpaypal%2Fsmart2pay%2F████%2F&MethodID=
12&Country=PL&CustomerEmail=brix&amount=100&ab=c%40██████████&CustomerName
=_drbrix_&SkipHPP=1&Description=Steam+Purchase&SkinID=101&Hash=█████████
Изменение в запросе Amount=2000 на Amount2=000 не влияло на хэш-подпись, которая использовалась для защиты запроса, но на сервер отправлялась необходимая злоумышленнику сумма.
Затем меняя:
CustomerEmail=brixamount100abc%40████
На:
CustomerEmail=brix&amount=100&ab=c%40█████████
Добавлялось поле с новым значением.
Достаточно было заплатить всего один доллар, чтобы получить крупную сумму средств на счёт в Steam
Такой трюк можно было провернуть только при указанной в имени почты «amount100».
Не известно, использовал ли кто-то ещё такой способ пополнения кошелька в Steam. На данный момент эксплойт исправили.
Valve выплатила за обнаружение эксплойта 7 500 долларов. Для сравнения, средняя годовая зарплата в США порядка 53 950 долларов.