
SharkTeam : Analyse de l'incident d'attaque contre Hedgey Finance
TechFlow SélectionTechFlow Sélection

SharkTeam : Analyse de l'incident d'attaque contre Hedgey Finance
La cause fondamentale de cet incident réside dans une vulnérabilité de validation des jetons présente au niveau de la logique de mise en œuvre du contrat intelligent du projet.
Rédaction : SharkTeam
Le 19 avril 2024, Hedgey Finance a subi plusieurs transactions malveillantes, entraînant une perte supérieure à 2 millions de dollars.
SharkTeam a réalisé immédiatement une analyse technique de cet incident et résumé des mesures préventives en matière de sécurité, espérant que les projets futurs pourront s'en inspirer afin de renforcer collectivement la sécurité du secteur blockchain.
I. Analyse des transactions d'attaque
Hedgey Finance a été attaqué à plusieurs reprises par divers assaillants qui ont exploité une vulnérabilité dans l'autorisation de jetons pour dérober une grande quantité de jetons depuis le contrat ClaimCampaigns.
Prenons comme exemple la transaction impliquant le montant le plus élevé, environ 1,3 million de dollars :
Transaction d'attaque : 0x2606d459a50ca4920722a111745c2eeced1d8a01ff25ee762e22d5d4b1595739
Attaquant : 0xded2b1a426e1b7d415a40bcad44e98f47181dda2
Contrat malveillant : 0xc793113f1548b97e37c409f39244ee44241bf2b3
Contrat cible : 0xbc452fdc8f851d7c5b72e1fe74dfb63bb793d511 (ClaimCampaigns)
Cette transaction a directement transféré 1 303 910,12 USDC depuis le contrat ClaimCampaigns. Détail de la transaction :

La transaction ayant réellement lancé l'attaque est
0xa17fdb804728f226fcd10e78eae5247abd984e0f03301312315b89cae25aa517 (notée ci-après 0xa17f)
Le processus d'attaque est le suivant :

1 Emprunter 1,305 million d'USDC via un prêt flash sur Balancer.
2 Appeler la fonction createLockedCampaign du contrat ClaimCampaigns. Dans cette fonction, le contrat malveillant dépose 1,305 million d'USDC dans le contrat ClaimCampaigns, puis ce dernier autorise le contrat malveillant à utiliser ces 1,305 million d'USDC.
3 Appeler la fonction cancelCampaign du contrat ClaimCampaigns. Cette fonction permet au contrat malveillant de retirer les 1,305 million d'USDC déposés, mais l'autorisation accordée au contrat malveillant lors de createLockedCampaign n'est pas annulée.
4 Rembourser le prêt flash à Balancer.
Dans cette transaction, après que le contrat malveillant a retiré les 1,305 million d'USDC du contrat ClaimCampaigns, l'autorisation de 1,305 million d'USDC accordée au contrat malveillant par ClaimCampaigns n'a pas été annulée. Ainsi, le contrat malveillant peut directement appeler la fonction transferFrom du jeton USDC pour transférer à nouveau 1,305 million d'USDC depuis le contrat ClaimCampaigns. C’est précisément ce que réalise la transaction 0xa17fdb804728f226fcd10e78eae5247abd984e0f03301312315b89cae25aa517.
Grâce à ces deux transactions, l'attaquant a dérobé 1,305 million d'USDC depuis le contrat ClaimCampaigns.
Outre l'USDC, cet attaquant a également utilisé cette vulnérabilité pour dérober une grande quantité de jetons NOBL depuis le contrat ClaimCampaigns. Avec l'USDC, la valeur totale dépasse 2 millions de dollars.
II. Analyse de la vulnérabilité
La cause fondamentale de cet incident réside dans une vulnérabilité logique liée à l'autorisation de jetons dans le contrat intelligent du projet, permettant à un attaquant de transférer plusieurs fois les jetons que le contrat cible a autorisés au msg.sender.
La fonction createLockedCampaign du contrat intelligent ClaimCampaigns dépose les jetons du msg.sender dans le contrat cible, puis autorise ces jetons au profit du msg.sender.

La fonction cancelCampaign retire les jetons déposés, mais n'annule pas l'autorisation accordée aux jetons.

L'attaquant exploite cette vulnérabilité en appelant directement la fonction transferFrom du jeton pour transférer à nouveau les jetons autorisés depuis le contrat cible.
III. Recommandations de sécurité
Face à cet incident, nous devrions respecter les recommandations suivantes lors du développement :
(1) Lors de la conception et du développement du projet, il est essentiel de maintenir une logique complète et rigoureuse, notamment dans les processus impliquant le transfert d'actifs. Il convient de garantir une synchronisation entre le transfert des jetons et l'ajustement de leurs autorisations, afin d'éviter les situations où les jetons sont transférés sans que leur autorisation soit annulée.
(2) Avant son lancement, le projet doit faire l’objet d’un audit de contrat intelligent par une société tierce spécialisée et professionnelle.
Bienvenue dans la communauté officielle TechFlow
Groupe Telegram :https://t.me/TechFlowDaily
Compte Twitter officiel :https://x.com/TechFlowPost
Compte Twitter anglais :https://x.com/BlockFlow_News










