Auditer de Projets sur la Blockchain NEAR : de Zéro à Héros

6 min read
To Share and +4 nLEARNs

Salutations chers lecteurs !

Aujourd’hui, nous allons examiner quelques conseils professionnels sur l’audit des contrats intelligents sur la blockchain NEAR. Dans cette série, nous allons nous concentrer sur les aspects qui peuvent être vraiment utiles pour auditer des projets basés sur NEAR. Tout ce que vous trouverez ci-dessous est basé sur notre expérience personnelle ! 

Tout d’abord, nous voudrions exprimer nos sincères remerciements aux créateurs de NEAR et aux projets de son écosystème, à tous ses supporters, aux auteurs des supports d’information et bien sûr, à nos brillants auditeurs qui nous ont aidés à révéler beaucoup – avaient besoin d’informations et ainsi lever le rideau du secret. Et aujourd’hui, chers lecteurs, il sera à votre disposition.

Nous pouvons dire avec confiance que ces conseils peuvent être lus publiquement à divers endroits, et notre blog  c’est l’un de ces endroits ! Voici notre point de vue : des faits indéniables pour les testeurs, des astuces et les meilleurs hacks partagés par nos meilleurs testeurs. On va commencer !

Au fait, en ce moment nous avons des postes vacants, donc si votre projet a besoin d’un audit, escrivez-nous, visitez notre page de rapports public ici.

I — C’est quoi NEAR ?

NEAR est une plate-forme de développement, construite sur une blockchain de couche un, fragmentée ou sharded et de preuve de participation . Grâce à la technologie de partitionnement, NEAR propose des solutions à des problèmes tels que la lenteur de la vitesse de traitement, la congestion du réseau et les charges de gaz élevées, permettant une évolutilité significative de la plate-forme sans sacrifier la sécurité du protocole.

Il est important de garder à l’esprit que NEAR est une blockchain fragmenée évolutive, ce qui signifie que les contrats intelligents déployés sont compilés en WebAssembly (WASM) et peuvent être écrits dans des langages :

  • Rust
  • AssemblyScript (un langage de type TypeScript pour WebAssembly)
  • Solidity (vía Aurora EVM)c
  • Javascript (vía JS-VM)

L’utilisation de WASM se traduit par une limite et une efficacité de gaz élevées, une génération de blocs rapide et des frais de transaction réduits. Les contrats intelligents dans NEAR peuvent être considérés comme des micro-services contenant des données et du code exécutable. Les interactions entre contrats sont effectuées de manière asynchrone.

Cela dit, de notre point de vue, NEAR Ecosystem est principalement basé sur Rust !

https://github.com/rust-in-blockchain/awesome-blockchain-rust

La plateforme rassemble des milliers de membres de la communauté pour offrir la meilleure expérience, ainsi qu’un vaste écoyisteme multifonctionnel :

La plataforme se base sur plusieurs fonctionnalités clés :

En termes de sécurité de production de blocs, il utilise un mécanisme connu sous le nom de Doomslug. Le Doomslug, malgré son nom inquiétant, est très simple et suppose que différents validateurs produisent à tour de rôle des blocs en fonction du nombre de jetons NEAR stakés.

Nous n’entrerons pas dans les détails dans cet article car nous supposons que vous, cher lecteur, avez déjà une compréhension suffisante de l’écosystème NEAR, nous vous recommandons donc de visiter leur base de connaissances et d’étudier la documentation du projet pour une meilleure compréhension :

https://docs.near.org/

II — Procédure d’examen du Projet NEAR par l’équipe Pessimistic.io :

Parce que les principaux obstacles qu’un auditeur peut rencontrer lors de l’audit de projets dans NEAR sont logiques ; La première suggestion pour toute entreprise sera un développement compétent, résultant en une documentation solide et des tests fiables. Cela semble trop simple pour être vrai, mais assurez-vous que cela fonctionne et fait ses preuves au fil du temps !

Notre brillante équipe d’audit souhaite donc vous présenter notre ensemble de règles, accumulées au fil de nombreux mois et années de travail, dans lesquelles nous essaierons d’éviter les redondances et de tout transmettre de manière concise et professionnelle. Compte tenu de ce qui précède, nous avons effectué nos audits selon les procédures suivantes :

Analyse Automatisée :

  • Nous collectons les contrats;
  • Nous exécutons les tests fournis et examinons la couverture du code ;
  • Nous exécutons des outils d’analyse et vérifions manuellement (rejetons ou confirmons) tous les problèmes signalés (voir ci-dessous).

Vérification Manuelle :

  • Nous examinons manuellement les codes et évaluons leur qualité ;
  • Nous vérifions le code pour les vulnérabilités connues ;
  • Nous vérifions si la logique du code est conforme à la documentation livrée ;
  • Nous suggérons des optimisations possibles de gaz et de stockage ;

Problèmes :

Nous recherchons activement :

  • Problèmes de contrôle d’accès (identification/autorisation incorrecte des administrateurs ou des utilisateurs) ;
  • Problèmes d’actifs perdus/volés (actifs bloqués dans un contrat ou expédiés nulle part ou sur un mauvais compte) ;
  • DoS dû à des problèmes logiques (blocage, erreur de machine d’état, etc.) ;
  • DoS dû à des problèmes techniques (errour de manque de gaz, autres limitations) ;
  • Problèmes d’interaction avec le contrat (réentrance, appels non sécurisés, hypothèses d’appelants);
  • Problèmes arithmétiques (débordement, sous-débit, problèmes d’arrondi);
  • Utilisation incorrecte de Near SDK;
  • D’autres problèmes.

Gaz:

Nous vérifions si les opérations intensives en gaz sont réalisées efficacement :

  • Collections: les collections de std :: collections sont toutes lues ensemble, ce qui gonfle la consommation de gaz. Vous devez utiliser near_sdk::collections ou near_sdk::store ;
  • Les collections sont liées à un stockage et vous pouvez accidentellement oublier de les synchroniser ;
  • Cartes: LookupMap / UnorderedMap / TreeMap – il faut choisir selon la fonctionnalité recherchée (la première est la moins chère, la dernière est la plus puissante) ;
  • LazyOption: para los « big data » raramente utilizados (solo se pueden usar en el constructor);
  • pour les « big data » rarement utilisés (ne peut être utilisé que dans le constructeur) ;
  • Borsh/JSON pour la sérialisation des messages (paramètres/valeurs de retour) — affecte la consommation de gaz ;
  • Examinez attentivement l’attaque «million d’adjouts de données bon marché» pour éviter des problèmes similaires.

Outils :

Examinons les outils d’analyse automatique que vous pouvez utiliser dans votre travail et leurs fonctionnalités :

  • Valgrind : Peut être utilisé si votre code comprend des blocs non sécurisés avec une allocation de mémoire dangereuse. Cependant, une telle pratique lève un drapeau rouge pour l’audit. En général, exécuter valgrind n’a pas beaucoup de sens.
  • Cargo Geiger : est un outil qui affiche des statistiques sur l’utilisation non sécurisée du code Rust, dans une boîte Rust et toutes ses dépendances. Votre capacité à vous concentrer sur les problèmes potentiels est un trait bénéfique. L’existence d’un code dangereux est déjà un problème dans de tels projets, et ces entrées doivent être vérifiées une deuxième fois.
  • Cargo Audit : Vérifie les fichiers pour les boîtes qui contiennent des vulnérabilités de sécurité. Autrement dit, il affiche les bibliothèques obsolètes qui sont toujours utilisées. Cependant, vous devez l’utiliser à des fins d’audit.
  • Clippy : est un filtre de code incroyable pour détecter les erreurs courantes et améliorer votre code Rust.
  • Cargo Tarpaulin : pour la couverture des tests, un outil très utile qui révèle le nombre de lignes de code qui ne sont pas couvertes par les tests.

III —Audit des Rapports Publics

Nos audits des rapports publics des projets de l’écosystème NEAR sont structurés selon le schéma de flux d’audit présenté ci-dessus, nous vous recommandons donc de comparer ces rapports, en particulier leurs résultats, avec les éléments suivants :

Nous espérons que cet article a été informatif et utile ! Merci pour la lecture ! Quels instruments devrions-nous revoir? Qu’aimeriez-vous lire sur notre blog ?

Si vous avez encore des questions, n’hésitez pas à demander ! Nous serons heureux de répondre à toutes vos questions ! Les meilleures questions et réponses peuvent être incluses dans le prochain article du blog !

Au fait, il y a des créneaux vacants en ce moment, donc si votre projet a besoin d’un audit, n’hésitez pas à nous écrire, visitez notre page de rapport public ici.

4

Laisser un commentaire


To leave a comment you should to:


Retour haut de page