En Steam encontraron un exploit para añadir dinero infinito a la cuenta - Valve pagó una suma modesta por su descubrimiento
Un investigador descubrió un exploit para inflar con dinero el monedero de Steam. Valve pagó una modesta recompensa.
Исследователь безопасности под ником 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 долларов.