Ethereum : faille critique sur Arbitrum, 400 ETH de récompense pour la corriger
Une récompense qui en vaut la chandelle – La plupart des cryptomonnaies disposent d’un code open source. Ainsi, cela permet à n’importe qui de vérifier ou de contribuer au code source des projets. Dans certains cas, cela permet également à des utilisateurs de déceler une faille et d’aider à sa correction. C’est ce qui vient d’arriver sur Arbitrum, où un hacker a décelé une faille critique.
Une faille critique découverte sur Arbitrum Nitro
Arbitrum est une solution de seconde couche du réseau Ethereum, développée par Offchain Labs. Lancé en septembre 2021, le layer 2 Arbitrum a subi une mise à jour d’envergure avec le déploiement d’Arbitrum Nitro.
Malheureusement, cette mise à jour comportait une faille critique qui aurait pu mettre en péril des millions de dollars.
Ainsi, mardi 20 septembre, 0xriptide a dévoilé avoir décelé une faille critique dans le code de la solution Arbitrum Nitro. En parallèle, ce dernier a dévoilé les étapes de sa trouvaille dans une publication Medium.
« C’est l’histoire d’emplacements de stockage effacés et d’optimisations de gaz bien intentionnées qui ont conduit à une vulnérabilité de plusieurs millions de dollars. Celle-ci affectait tout déposant potentiel tentant d’envoyer des fonds entre Ethereum et Arbitrum Nitro. »
Dans sa publication, 0xriptide se présente comme un hacker white hat. En effet, celui-ci chasse les récompenses de bug bounty offertes par divers protocoles sur ImmuneFi. Ainsi, notre protagoniste explique être particulièrement intéressé par les solutions cross-chain, dont les ponts DeFi.
Quelques semaines avant de découvrir la faille, 0xriptide avait mené des recherches approfondies sur les solutions de seconde couche Optimism et Arbitrum. Son objectif étant « d’acquérir une solide compréhension du fonctionnement des protocoles et de la manière dont chacun avait choisi de mettre en œuvre son cadre de sécurité ».
Retour sur la découverte de la faille
Après avoir bien étudié les deux protocoles, notre hacker bienveillant est allé explorer le code d’Arbitrum à la recherche d’une faille.
Celui-ci est alors allé inspecter l’implémentation du pont permettant d’envoyer des fonds d’Ethereum vers Arbitrum. En pratique, les transactions entre Ethereum et Arbitrum sont gérées par un smart contract intitulé DelayedInbox.
Sans entrer dans les détails, ce contrat utilise une méthode pour initialiser les contrats qui composent le système. Celui-ci initialise deux variables :
- Bridge
- SequencerInbox
C’est à ce niveau qu’un point a attisé la curiosité de 0xriptide. En effet, après avoir regardé sur Etherscan, notre hacker a pu confirmer l’initialisation du bridge. Cependant, il a découvert que le SequencerInbox n’était quant à lui pas initialisé.
« J’ai scanné les deux premières cases mémoires du contrat pour voir ce qui se passait pendant l’exécution du modificateur d’initialisation. Bien sûr, les deux slots 0 et 1 étaient vides, ce qui signifie que le contrat était dans un état de vulnérabilité totale alors qu’il acceptait des milliers de dépôts ETH chaque jour ! Comment cela était-il possible étant donné que le contrat avait été initialisé auparavant ? »
Après de plus amples recherches, celui-ci a découvert une fonction intitulée « postUpgradeInit » qui était à l’origine de l’effacement de certaines cases mémoires. En effet, celle-ci efface les valeurs des trois premières cases mémoires, et met à jour plusieurs données. Cependant, cette fonction manque de remettre à jour la valeur de sequencerInbox.
Fonctionnement de la faille et bug bounty
Maintenant que 0xriptide a découvert un potentiel vecteur d’attaque, celui-ci doit mettre au point une méthode pour tester sa vulnérabilité.
Pour ce faire, il a appelé la fonction publique initialize() en lui passant en paramètre l’adresse d’une copie vérolée du pont d’Arbitrum.
Et voilà, une fois la manœuvre finalisée, notre hacker est en mesure de dérober l’ensemble des ETH qui sont déposés via le pont d’Arbitrum.
« Maintenant que nous avons initialisé le contact avec notre propre adresse de contrat de bridge, nous pouvons détourner tous les dépôts ETH des utilisateurs qui tentent de faire un bridge vers Arbitrum via la fonction depositEth(). »
Une faille critique qui aurait pu entraîner la perte de centaines de millions de dollars. En effet, d’après la publication, le plus important dépôt enregistré par le contrat était de 168 000 ETH, soit environ 250 millions de dollars.
De surcroît, ce sont en moyenne 1 000 à 5 000 ETH qui sont déposés quotidiennement sur Arbitrum via cette méthode.
Évidemment, notre hacker au grand cœur a rapidement contacté les équipes d’Arbitrum pour leur dévoiler ses trouvailles. Ces dernières ont alors pu corriger la faille avant que celle-ci ne soit exploitée et ont offert une juteuse récompense de 400 ETH, soit 535 000$ à 0xriptide.
En février dernier, un hacker white hat avait sauvé le layer 2 d’Optimism. Ainsi, celui-ci avait découvert une faille critique qui lui a valu une généreuse récompense de 2 millions de dollars.
Luna est terrassée… Besoin de retrouver un environnement serein pour trader vos bitcoins ? Courez vous inscrire sur Binance, LA référence absolue des plateformes crypto. Vous économiserez 10% sur vos frais de trading en suivant ce lien (lien commercial).