Conseils de sécurité ViaWallet|Transit Swap subit un piratage de 28,9 millions de dollars : comment prévenir les autorisations de contrat excessives ?
Tout récemment, Transit Swap, une plateforme d’agrégation de swaps inter-chaînes, a annoncé qu’elle avait été victime d’un piratage. Selon l’annonce officielle du 12 octobre, le piratage a entraîné une perte de 28,9 millions de dollars de fonds. À la demande de Transit Swap, le hacker whitehat a rendu des fonds d’une valeur de 24 millions de dollars, et 4,9 millions de dollars des fonds volés ne sont toujours pas rendus.
Les raisons du piratage
Selon l’annonce officielle, Transit Swap a examiné le piratage et a confirmé qu’il était dû à un bug dans les codes. Plus tard, SlowMist a publié un rapport, qui comprend une analyse détaillée de l’incident.
Essentiellement, Transit Swap est un agrégateur DEX inter-chaînes qui regroupe les données DEX principales pour fournir des services aux utilisateurs. Lorsqu’ils échangent des cryptomonnaies sur la plateforme, les utilisateurs doivent passer par un contrat de pont de routage et lui accorder une autorisation. Une fois autorisé, le contrat pont de routage sera en mesure d’appeler le token à utiliser pour l’échange.
Cela dit, la conception du code de Transit Swap souffre d’une faille fatale. Selon SlowMist, le contrat de proxy de routage, le contrat de pont de routage et le contrat de gestion des autorisations de Transit Swap n’ont pas vérifié les données entrantes qui comprennent les paramètres reçus, les données d’appel et l’adresse du contrat d’échange pendant l’échange de jetons, ce qui a conduit au piratage.
Après avoir découvert la faille, le pirate a téléchargé les données qu’il a construites et a appelé le contrat de pont de routage. Enfin, l’adresse du contrat d’échange du pirate a été désignée comme adresse du contrat de gestion des permissions, ce qui lui a permis de drainer les jetons de tous les utilisateurs qui avaient accordé une permission.
Risques d’une autorisation excessive
Bien que le pirate ait restitué plus de 80 % des fonds volés, les fonds volés restants ont encore durement touché les utilisateurs. En examinant le piratage, nous pouvons voir que le hacker a ciblé ceux qui avaient accordé l’autorisation de Transit Swap.
Lorsque nous utilisons une DApp, nous recevons souvent des demandes d’autorisation de la part de la DApp. Les DApp doivent être autorisées avant que nous n’interagissions avec le contrat, car notre autorisation permettra au contrat DApp de déplacer nos actifs crypto pour des opérations telles que l’échange ou le prêt.
Pour réduire le nombre d’autorisations nécessaires, la plupart des développeurs demandent aux utilisateurs d’autoriser le contrat intelligent correspondant à déplacer une quantité considérable de jetons. Par exemple, dans le cas de PancakeSwap, comme le montre la figure ci-dessous, lorsqu’une transaction USDC est autorisée, le montant approuvé est de 1071. Cette approche évite aux utilisateurs d’avoir à demander des autorisations répétées et réduit le montant des frais de gaz requis. Par exemple, si l’USDC est à nouveau nécessaire pour un échange, aucune approbation ne sera requise, et l’utilisateur n’aura pas à payer de frais de gaz pour une autre autorisation.
Cependant, comme l’autorisation implique un montant énorme de jetons (10^71), tout en vous faisant gagner du temps et en vous faisant économiser un petit montant de frais, le contrat obtient une autorisation illimitée de transférer des USDC de votre portefeuille. Dans l’éventualité d’un piratage comme celui de Transit Swap, le pirate serait également en mesure de vider votre USDC. Après tout, personne ne possède réellement 10^71 USDC.
Comment se prémunir contre les risques liés à une autorisation excessive ?
1/ Ne gardez pas tous vos actifs dans un seul portefeuille.
Lorsque nous interagissons avec les DApps, nous pouvons classer nos actifs dans différentes catégories, le plus grand nombre étant le meilleur. Par exemple, nous pouvons placer les cryptos que nous souhaitons conserver sur le long terme dans un portefeuille et stocker une petite quantité de cryptos dans un autre portefeuille pour les interactions avec les DApps. De cette façon, nous serons en mesure de minimiser nos pertes même si le contrat est exploité par des pirates informatiques.
2/ Accorder des autorisations de faible montant
Bien que l’octroi d’autorisations impliquant une grande quantité de jetons nous permette d’économiser du temps et des frais de gas, cette approche crée plus de risques en cas de piratage. Pour éviter de plus grandes pertes, nous devrions essayer de minimiser le montant de jeton autorisé. Par exemple, si 100 USDC sont nécessaires pour l’échange dans une transaction, changez le montant autorisé de 10^71 à 100 en modifiant la permission, qui correspond au montant nécessaire. De cette façon, le contrat n’utilisera plus vos actifs après la transaction, et les pirates ne pourront pas vider votre solde USDC même si le contrat est piraté.
3/ évoquer les autorisations sur une base régulière
Lorsqu’il s’agit de contrats autorisés, nous pouvons retirer nos autorisations régulièrement pour garder nos portefeuilles en sécurité. Ici, nous allons vous montrer comment révoquer vos autorisations en utilisant les outils disponibles sur Etherscan.
Tout d’abord, allez sur etherscan.io/tokenapprovalchecker et cliquez sur “Connect to Web3”.
Une fois votre portefeuille connecté à Etherscan, vous pourrez vérifier les approbations (autorisations) accordées concernant vos tokens (ERC-20) et NFTs (ERC-721 & ERC-1155). Pour retirer votre approbation, il vous suffit de cliquer sur “Revoke” dans la dernière colonne.
Ensuite, les informations spécifiques à la révocation de votre approbation apparaîtront, et vous pourrez cliquer sur “Révoquer” pour passer à l’étape suivante.
Enfin, vous devrez confirmer la révocation et payer les frais de gaz. Dans la page “Modifier l’autorisation”, vous constaterez que la révocation d’une autorisation revient à modifier la limite d’autorisation proposée en la fixant à 0, ce qui interdit au contrat d’utiliser vos biens.
En plus d’Ethereum, d’autres explorateurs de chaînes de blocs permettent également aux utilisateurs de révoquer des autorisations. Les sites Web courants pour la révocation des autorisations sont les suivants :
Révoquer une autorisation sur ETH : etherscan.io/tokenapprovalchecker
Révoquer une autorisation sur BSC : bscscan.com/tokenapprovalchecker
Renoncer à l’autorisation sur Polygon : polygonscan.com/tokenapprovalchecker
Renoncer à l’autorisation sur AVAX : snowtrace.io/tokenapprovalchecker
Renoncer à l’autorisation sur HECO : www.hecoinfo.com/tokenapprovalchecker
Révoquer l’autorisation sur Solana : solscan.io/account/
Dans le monde crypto, il est impossible d’examiner la sécurité de tous les contrats, et nous pouvons seulement essayer de nous protéger et d’être plus conscients de la sécurité de nos actifs. En accordant moins d’autorisations, nous pouvons réduire les pertes d’actifs découlant de failles de sécurité externes et garder nos actifs en sécurité.