Overflow du multiplicateur de frais Velocore
Les pools CPMM de Velocore sur zkSync et Linea ont perdu 6,8 M$ : un overflow du multiplicateur de frais a permis de minter une énorme offre LP via un retrait.
- Date
- Victime
- Velocore
- Chaîne(s)
- Statut
- Fonds dérobés
Le 2 juin 2024, la plateforme d'échange décentralisée Velocore — déployée sur zkSync Era et Linea — a été drainée d'environ 6,8 millions de dollars en ETH via un bug de précision/overflow dans la logique du multiplicateur de frais de son contrat de pool CPMM style Balancer.
Ce qui s'est passé
Les pools CPMM (Constant Product Market Maker) de Velocore utilisaient un paramètre multiplicateur de frais qui mettait à l'échelle avec la taille des retraits pour décourager le siphonnage de liquidité. Comportement prévu : les gros retraits paient des frais plus importants.
L'attaquant a trouvé que le calcul de frais n'avait aucune vérification de borne supérieure et pouvait déborder en valeurs absurdes :
- L'attaquant a invoqué
velocore__execute()directement, simulant un énorme retrait pour pousser lefeeMultiplierà une valeur artificiellement gonflée. - Avec le multiplicateur défini,
effectiveFee1e9(le paramètre de frais par transaction, mis à l'échelle à 1e9) a débordé au-delà de 100 % — en territoire d'enroulement où le calcul s'effondrait. - Utilisant un flash loan, l'attaquant a initié le retrait réel. Le calcul de frais cassé a fait que le contrat a calculé la sortie du swap incorrectement.
- Un petit retrait sur un seul jeton ultérieur a déclenché un underflow ailleurs dans la logique de mint des jetons de liquidité, permettant à l'attaquant de minter une quantité énormément disproportionnée de jetons LP.
- Le flash loan a été remboursé et l'attaquant est parti avec ~1 807 ETH, qu'il a bridgés vers le mainnet Ethereum et blanchis via Tornado Cash.
Conséquences
- Velocore a tendu la main via des messages on-chain offrant une prime white-hat de 10 % ; la deadline est passée sans réponse.
- Le protocole avait précédemment été audité par Zokyo, Hacken et Scalebit — aucun n'avait signalé le chemin d'overflow du multiplicateur.
- Velocore a mis en pause les opérations sur zkSync et Linea et a effectivement été démantelé.
Pourquoi c'est important
Velocore fait partie d'un petit ensemble d'exploits post-audit qui mettent en évidence les limites de l'audit comme défense en profondeur : trois cabinets d'audit réputés ont examiné le code et le bug a quand même été livré. La raison probable est que la portée d'audit inclut rarement le fuzzing avec des plages d'entiers arbitraires sur chaque fonction mutant l'état — et le chemin spécifique qui a fait déborder feeMultiplier n'était atteignable que par une séquence particulière d'appels simulate + execute qu'aucun outil d'analyse statique n'a signalé.
La réponse de l'industrie a été de superposer les audits avec des tests d'invariants économiques (Echidna, invariants Foundry) qui vérifient les propriétés de logique métier sous des séquences aléatoires d'appels, pas seulement le gantelet standard « cette branche revert-elle ? ».
Sources & preuves on-chain
- [01]immunebytes.comhttps://immunebytes.com/blog/velocore-finance-exploit-june-2-2024-detailed-analysis/
- [02]theblock.cohttps://www.theblock.co/post/298032/decentralized-exchange-velocore-addresses-7-million-hack-in-postmortem-offers-bounty-to-hacker
- [03]rekt.newshttps://rekt.news/velocore-rekt/