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.

>> Plantez vos petites cryptos et aidez-les à pousser grâce aux 8% d’intérêts composés sur FTX Earn (lien commercial) <<

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

Tweet d'annonce de la faille sur Arbitrum.
Tweet d’annonce de la faille sur Arbitrum.

« 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
Fonction initialize() qui permet d’initialiser le bridge et le sequencerInbox d'Arbitrum.
Méthode initialize() qui permet d’initialiser le bridge et le sequencerInbox d’Arbitrum.

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. 

Fonction postUpgradeInit() qui oubli d'initialiser le sequencerInbox.
Fonction postUpgradeInit() qui oubli d’initialiser le 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

La finance décentralisée (DeFi) offre des nombreuses opportunités, mais celles-ci peuvent être risquées. Vous pouvez aussi faire le choix de la tranquillité et vous immerger dans le monde des cryptomonnaies en douceur en venant échanger vos premiers bitcoins sur la plateforme FTX. En vous inscrivant sur FTX via ce lien commercial au JDC, vous bénéficierez en outre d’une réduction à vie sur les frais de trading.

Renaud H.

Ingénieur en software et en systèmes distribués de formation, passionné de cryptos depuis 2013. Touche à tout, entre mining et développement, je cherche toujours à en apprendre plus sur l’univers des cryptomonnaies et à partager le fruit de mes recherches à travers mes articles.

Recevez un condensé d'information chaque jour