Version populaire : Une simple « traduction » pour interpréter l’analyse du @CetusProtocol hacker par le patron de la tech :
Cette attaque met en évidence un problème classique de dépassement d’entier, qui se manifeste par une troncature des données lors de la conversion de type.
Détails techniques démontés :
1) Emplacement de la vulnérabilité : le problème se produit dans le mécanisme de conversion de type de la fonction get_amount_by_liquidity, et la conversion de cast de U256 à U64 entraîne une perte de données de haut niveau.
2) Processus d’attaque :
1. L’attaquant transmet une grande quantité de paramètres de liquidité via la fonction add_liquidity ;
2. Le nombre de jetons B requis pour le calcul de l’appel système get_delta_b de la fonction ;
3. Dans le processus de calcul, les deux données de type U128 sont multipliées et le résultat théorique doit être de type U256 ;
Défaut clé : Le résultat u256 est converti en u64 lorsque la fonction est renvoyée, ce qui entraîne la troncature des données de haut niveau 128 bits.
3) Effet d’utilisation : Le quota de liquidité qui nécessitait à l’origine un grand nombre de jetons pour être frappé peut désormais être complété avec seulement un très petit nombre de jetons. L’attaquant obtient une énorme part de liquidité à très faible coût, puis réalise l’arbitrage du pool en détruisant une partie de la liquidité.
Analogie simple : tout comme l’utilisation d’une calculatrice qui ne peut afficher que 8 chiffres pour calculer 1 milliard × 1 milliard, le résultat d’un calcul à 20 chiffres ne peut afficher que les 8 derniers chiffres, et les 12 premiers chiffres disparaissent directement. L’attaquant exploite cette vulnérabilité.
Pour être clair : cette vulnérabilité n’a rien à voir avec l’architecture de sécurité sous-jacente de @SuiNetwork, et la « gloire » de la sécurité du langage Move est encore crédible pour le moment. Pourquoi?
Le langage Move présente des avantages significatifs en termes de gestion des ressources et de sécurité des types, et peut prévenir efficacement les problèmes de sécurité de bas niveau tels que les doubles dépenses et les fuites de ressources. Cependant, cette fois-ci, le protocole Cetus est une erreur mathématique au niveau de la logique de l’application, et non un défaut de conception dans le langage Move lui-même.
Plus précisément, le système de type de Move, bien que rigoureux, repose toujours sur le bon jugement du développeur pour un casting explicite. Lorsqu’un programme effectue activement une conversion de type de U256 à U64, le compilateur ne peut pas dire s’il s’agit d’une erreur intentionnelle ou d’une erreur logique.
De plus, cet incident de sécurité n’a rien à voir avec les fonctions sous-jacentes de Sui telles que le mécanisme de consensus, le traitement des transactions et la gestion de l’état. Sui Network n’exécute fidèlement que les instructions de transaction soumises par le protocole Cetus, et la vulnérabilité provient des défauts logiques du protocole de couche applicative lui-même.
Pour le dire crûment, aucun langage de programmation avancé ne peut éliminer complètement les erreurs logiques au niveau de la couche application. Move peut prévenir la plupart des risques de sécurité sous-jacents, mais il ne peut pas remplacer les développeurs par la vérification des limites de la logique métier et la protection contre les débordements des opérations mathématiques.
Après avoir enquêté sur la transaction d’exploitation de Cetus, je pense avoir identifié la cause profonde du bogue. Le problème provient d’un moulage de type de u256 à u64 dans la fonction get_amount_by_liquidity.
151
53,51 k
Le contenu de cette page est fourni par des tiers. Sauf indication contraire, OKX n’est pas l’auteur du ou des articles cités et ne revendique aucun droit d’auteur sur le contenu. Le contenu est fourni à titre d’information uniquement et ne représente pas les opinions d’OKX. Il ne s’agit pas d’une approbation de quelque nature que ce soit et ne doit pas être considéré comme un conseil en investissement ou une sollicitation d’achat ou de vente d’actifs numériques. Dans la mesure où l’IA générative est utilisée pour fournir des résumés ou d’autres informations, ce contenu généré par IA peut être inexact ou incohérent. Veuillez lire l’article associé pour obtenir davantage de détails et d’informations. OKX n’est pas responsable du contenu hébergé sur des sites tiers. La détention d’actifs numériques, y compris les stablecoins et les NFT, implique un niveau de risque élevé et leur valeur peut considérablement fluctuer. Examinez soigneusement votre situation financière pour déterminer si le trading ou la détention d’actifs numériques vous convient.