Piratage de ponts

Les ponts TL;DR jouent un rôle de plus en plus important en permettant à diverses chaînes de blocs de communiquer entre elles. Partageant leur expérience à la fois du piratage manuel et de leur nouveau leadership dans le domaine de l'audit Web3, les frères et fondateurs de Sayfer Nir Duan (PDG) et Or Duan (CTO) ont présenté à Israel Crypto Community (ICC) le 22/9/ 2022 sur les raisons pour lesquelles les ponts sont si sensibles aux attaques, comment ils sont piratés et quelles sont les meilleures approches pour un audit de contrat intelligent réussi sur un pont.

Pourquoi un pont devrait-il être audité ?

Les ponts sont une cible extrêmement lucrative pour les pirates informatiques. Plus de 1.6 milliard de dollars ont été volés en 2022 seulement. Ceci, combiné à la complexité inhérente au codage d'un pont, fait de l'audit un élément indispensable du processus de déploiement. L'audit de contrat intelligent est une partie spécialisée de l'audit de sécurité conçue pour le code faisant face à la blockchain d'une application Web3 moderne, décentralisée ou dapp. Le processus d'audit vise à s'assurer qu'une fois le contrat immuable déployé sur la blockchain, il ne peut faire que ce pour quoi il est destiné. Les ponts présentent un cas encore plus spécialisé pour les auditeurs, car ils contiennent des composants de code dans les deux chaînes, ainsi qu'un composant hors chaîne. Si approprié mentalité de sécurité et l'audit ne sera pas mis en œuvre dans ce domaine du développement Web3, il est très probable que des millions de dollars en jetons continueront d'être drainés par des ponts mal conçus.

Guide étape par étape pour l'audit d'un pont

En savoir plus sur l'architecture

Naturellement, l'audit nécessite d'invoquer l'état d'esprit des pirates informatiques qui recherchent les vulnérabilités et les moyens d'attaquer le contrat de la même manière que le ferait un pirate informatique. La partie la plus importante avant de décider comment aborder l'attaque d'un pont est de comprendre son modèle de sécurité. Dans le sens le plus général, les ponts peuvent être confianceou sans confiance. Le modèle de confiance, ou le centralisée pont, s'appuie sur un élément de gouvernance qui peut finalement décider combien d'argent passe d'une chaîne à l'autre. Dans un environnement sans confiance ou Décentralisé pont, il existe un mécanisme de consensus distinct, qui valide chaque demande de transfert d'argent entre les chaînes. Cette partie est extrêmement importante lorsque nous décidons comment nous allons pirater, ou pour nos besoins, auditer ce pont. Alors qu'un pont centralisé peut être considéré comme indigne par de nombreux membres de la communauté crypto, en raison de sa dépendance à une seule entité, les complications de sécurité qui accompagnent le maintien d'un mécanisme de consensus entièrement séparé ne laissent pas les ponts sans confiance sans leurs propres mises en garde.

Gestion des clés

Qui contrôle les clés ? Parce que si ce n'est pas sûr, rien ne l'est, comme nous l'avons vu avec le Ronin pirater. Même si le consensus est partagé entre plusieurs entités différentes, nous devons considérer à quel point il serait facile de prendre le relais et jusqu'où quelqu'un serait prêt à aller pour le faire.

Architecture du validateur

En ce qui concerne les ponts décentralisés, il n'y a pas une ou quelques entités gouvernementales, donc l'accent est uniquement mis sur la qualité des validateurs, qui ils sont, quel est le mécanisme de consensus, qui peut le rejoindre, comment la communication entre pairs entre les validateurs est fait, etc.

Comprendre la base de code

Après avoir creusé dans l'architecture de base, qu'elle soit fiable ou non, et qui contrôle les clés du protocole, nous pouvons examiner les composants de la base de code. La première étape consiste à lire la documentation fournie par les développeurs. Une bonne équipe de développement de ponts doit documenter chaque changement en raison de la complexité inhérente de la tâche. Si possible, parlez avec l'équipe et essayez de réduire la boucle de rétroaction plus tard en obtenant des réponses aux questions en direct.

Les scripts de déploiement de contrat sont peut-être l'une des parties les plus importantes de l'audit ; lisez-les attentivement, car parfois les vulnérabilités ne proviennent que des scripts de déploiement, plutôt que directement du contrat intelligent. Si vous avez les outils, exécutez les scripts localement sur votre ordinateur, mais n' déployer quoi que ce soit sur un réseau principal public ou un réseau de test lors d'un audit.

Ensuite, regardez les tests fournis par les développeurs. Ils peuvent vous aider à mieux comprendre la base de code, mais aussi plus tard à essayer vos propres tests d'exploit et de vulnérabilité. Vous n'avez pas à réinventer la roue ! Si vous avez des tests avec des configurations et des démontages, vous pouvez simplement copier un test, le modifier et créer le vôtre.

Enfin, et le plus important lors de l'examen d'un pont, vient l'examen du flux de transaction de bout en bout - comprendre comment exactement l'argent circule de la chaîne A à la chaîne B. C'est là que se trouvent les véritables vulnérabilités des ponts, et où les yeux du pirate sont aussi bien. Cela nécessite bien sûr un examen plus approfondi du code des contrats eux-mêmes ainsi que l'utilisation de divers outils open source pour aider à énumérer le code et rechercher les vulnérabilités.

Outils d'audit

Tracer un graphe d'appel de fonction peut être d'une grande aide pour comprendre la structure des contrats et les fonctions qu'ils contiennent. surya by ConsenSys offre cette fonctionnalité.

Les outils qui offrent une analyse différentielle sont également très utiles pour l'audit des contrats, en partant du principe que bon nombre des projets de blockchain les plus populaires et les plus fiables basent leur code sur d'autres projets open source. Si une base de code majeure qui a été auditée plusieurs fois par des leaders de l'industrie est utilisée dans un autre projet, bien que cela ne signifie pas qu'elle ne peut pas être piratée, nous pouvons supposer qu'elle est relativement sûre et concentrer nos efforts d'audit sur les parties du code qui changé entre les deux projets. De plus en plus, Sayfer voit des clients où ils ne trouvent de graves vulnérabilités que dans le diff. C'est pourquoi ils ont développé un outil maison appelé Différence intelligente, qui compare le code source des contrats intelligents et s'appuie sur les API d'Etherscan et de Diffchecker.

Les scanners automatisés sont nos amis en tant qu'auditeurs pour trouver le «fruit à portée de main». L'outil le plus couramment utilisé est slither. Ou souligne l'importance de l'approche d'exécution du scanner de vulnérabilité : ne vous contentez pas d'exécuter l'outil et d'espérer qu'il n'y aura pas d'avertissements rouges. Traitez-le exactement comme tel – un outil. Pour aider à réduire le bruit de votre sortie, utilisez des indicateurs pour exclure des chemins, des dépendances ou des détecteurs spécifiques de votre analyse. Vous pouvez également utiliser l'option de sortie au format .json, ce qui facilite le filtrage et la création d'une liste de tâches spécifique pour votre audit.

Un autre domaine à vérifier concerne les événements et les erreurs en chaîne. Analyser ces journaux d'événements sur un explorateur de blocs comme Etherscan est un excellent moyen de comprendre les cas extrêmes dans le code de contrat intelligent. Souvent, un seul code d'erreur n'est pas une raison de s'inquiéter, mais si la même erreur se reproduit encore et encore, vous devez commencer à étudier le modèle et comprendre pourquoi il se comporte mal.

La dernière étape du processus est l'audit manuel. Passez en revue toutes vos notes et toutes les informations recueillies jusqu'à présent. Lorsque vous examinez un grand système de contrats comme un pont, essayez d'éviter d'aller trop loin dans l'analyse de chemins spécifiques, car vous risquez de passer des jours à rechercher des vulnérabilités dans ce qui finit par être une impasse. Essayez d'aller plus loin et de trouver tous les exploits possibles dans le laps de temps dont vous disposez plutôt que d'aller en profondeur.

Même après la phase d'audit, il est important de surveiller les contrats pour les événements après le déploiement afin de détecter et de répondre à toute attaque, et de s'assurer que les événements en général correspondent au comportement attendu.

Après avoir appris ces méthodologies, regardez la partie où Nir et Or ont démontré un défi en direct à l'ICC sur la façon de trouver réellement la vulnérabilité dans un code :

Résumé

Nous espérons que cet article vous donnera une meilleure compréhension des raisons pour lesquelles les ponts sont attaqués en premier lieu, un aperçu de notre méthodologie et de la façon dont nous auditons le contrat intelligent d'un pont spécifique, et vous fournira un exemple concret d'exploit. Regardez la dernière partie de la vidéo pour les questions-réponses :

Écrit par: Zoé Ronen


Écrit Par
Anna Shreder

Anna est chercheuse en sécurité chez Sayfer. Elle est passionnée par la compréhension et la recherche des vecteurs d'attaque et de défense qui apparaissent dans les nouvelles technologies émergentes.

Passer au contenu