Audit Smart Contract

Quand la sécurité devient une priorité

« Build unstoppable application » telle est la première phrase lisible sur le site officiel du projet Ethereum. Le smart contract est un programme informatique sur la Blockchain ne pouvant pas voir son algorithme modifié au cours du temps, comme le serait une application standard.

C’est le principe même de cette technologie. Elle garantit que le code publié sera à jamais celui qui vaudra foi : « code is law » comme le disent certains puristes d’Ethereum. C’est ce système de pensée qui permet de décentraliser la confiance.

On ne programme pas un smart contract comme on programme une application standard. Aucune mise à jour de sécurité, aucun patch ne pourra, contrairement à une application traditionnelle, venir corriger un éventuel problème. Beaucoup de stratégies de programmation aujourd’hui ne prennent plus en compte ce type de facteur critique. En effet, tous les logiciels viennent se mettre à jour régulièrement sur nos machines ! De plus, les programmes de nos jours sont trop complexes pour pouvoir les garantir sans erreurs ou failles critiques.

Or, une fois détectée par une personne (chercheur, pirate, amateur), cette dernière peut être exploitée rapidement. Les transactions, une fois publiées, ne peuvent pas être contestées. On assiste à une perte totale de confiance sur le smart contract et la société/développeur qui en est à l’origine.

À quoi servent les audits ?

Le principe

C’est dans ce contexte d’applications que l’on peut qualifier de « critique » que l’audit est une partie de la solution. Le but d’un audit est de faire relire le code source d’un smart contract à un ou des autre(s) développeur(s) solidity. On assiste ensuite à une analyse poussée du code afin de pouvoir décrire concrètement le comportement du smart contract face à toutes les éventualités.

Il s’agit à la fois d’analyser le comportement attendu par rapport au cahier des charges et de rechercher les failles de sécurité potentielles dans le code.

Contrairement à des développements standards où beaucoup d’algorithmes différents peuvent permettre d’accéder au même résultat, coder en Solidity demande de suivre des règles précises de développement afin d’adopter des algorithmes « sécurisés ». Elles concernent par exemple les algorithmes récursifs ou faisant appel à d’autres smart contracts. De plus, certaines notions n’existent pas (ou sont très complexes à mettre en place) en Solidity, comme le hasard.

Les livrables

Un document confidentiel est ensuite remis à la société qui a commandé l’audit. À l’intérieur y sont exprimés les points à problèmes, qui peuvent être de différents niveaux de dangerosité. On y met aussi les stratégies de programmations portant à débat, en expliquant les différentes solutions possibles et les arguments pour/contre de chacun.

Libre à la société d’appliquer des corrections sur le code, et de refaire un audit. Elle peut utiliser ses propres programmeurs ou faire réaliser les réparations chez la société auditrice.

Un document public peut aussi  être commandé sur demande qui permet, au nom de la société auditrice, de certifier son audit auprès du public.

Il n’existe pas de norme de certification internationale reconnue concernant la qualité des auditeurs. Elle est uniquement dépendante de sa réputation. N’importe qui peut ainsi proposer de l’audit smart contract.

Dans ce document y est expliqué le fonctionnement attendu du code présenté, et les failles de sécurité découvertes. Ce rapport peut permettre à  quelqu’un de non initié au  langage ou  ne disposant pas du  code source d’accorder une confiance supplémentaire au projet.

Il est recommandé de faire auditer son smart contract auprès de plusieurs sociétés d’audit différentes, afin  de recevoir  plusieurs avis sur le code et ainsi être sûr de limiter les failles qui n’auraient pas encore été découvertes.

La certification publique est donnée pour le code de l’application spécifique envoyé par le demandeur. La modification du code invalide la certification publique. Afin de connaître précisément le code certifié, le numéro de commit de github ou un hash du code source peut être présenté.

Compléter sa solution d’audit

Le code étant relu par des hommes, il existe toujours des risques pour que votre smart contract conserve des failles non découvertes par les auditeurs. Vous pouvez décider de compléter les audits avec un programme de bug bounty.

Quelles solutions propose Blockchain Élite ?

Blockchain Élite vous propose l’audit de code smart contract en Solidity. Nos développeurs sont à même de vous remettre tous les livrables.

Si vous faites développer vos smart contract chez Blockchain Elite, vous bénéficiez d’une réduction conséquente pour la commande des rapports.

Bien sûr, il savoir que le rapport d’audit réalisé par la même entreprise que le celle chargée du développement ne vaut pas du tout la même chose qu’un rapport effectué par une autre entreprise !

Quels sont les prix d’un Audit ?

Les prix des audits ne sont pas réglementés. Il est laissé libre à chaque entreprise de procéder à son calcul. Il dépend néanmoins fortement de quelques facteurs : la réputation de l’entreprise, la complexité de l’algorithme, le nombre de lignes.

Chez Blockchain Élite, le prix calculé est très fortement lié à la complexité de l’algorithme et de la qualité du code. Si ce dernier n’est pas « propre », à comprendre : non indenté, non commenté, mal nommé, très compact, le prix de son audit sera beaucoup plus cher qu’un code lisible et documenté.

Plus un smart contract est complexe, plus le nombre de failles et la difficulté de lecture augmentent.

N’hésitez pas à nous contacter pour un devis sur un audit Blockchain Élite.