Faille majeure corrigée sur district0x (DNT)
Ox, le célèbre protocole d’échange P2P permettant d’échanger des tokens ERC-20 de façon intégralement décentralisée a été contraint à l’arrêt le 12 juillet, en raison d’une faille de sécurité majeure, patchée depuis.
Cette faille malicieusement exploitée aurait permis le dévoiement du système et potentiellement la validation de n’importe quelles transactions par des acteurs malveillants.
Le protocole 0x : l’échange de tokens totalement décentralisé
Bitconseil en avait fait une review à l’occasion de l’ICO mi-2017, le protocole OX permet l’échange à faible coût et de manière fluide des tokens ERC-20, de manière complètement décentralisée, en faisant rentrer en jeu une combinaison d’acteurs (makers, takers et enfin relayeurs).
Cette architecture construite sur la blockchain Ethereum met en place un ensemble de smart contract ayant vocation à automatiser et sécuriser les ordres des participants au réseau. Le protocole est dit « non-dogmatique », traitant chaque acteurs, Dapps et transactions de manière égale, selon une gouvernance établie par consensus. C’est pas le biais de transactions off-chain et d’une volonté de découpler la couche applicative de celle touchant au protocole, que 0x fonctionne sans friction.
Du moins était-ce le cas jusqu’au 12 juillet 2019, à 07h30 GMT.
Houston, on a un problème
L’entreprise reprend le déroulé des événements sur son blog : 0x est avisé vendredi matin par un consultant en sécurité de la présence d’une faille critique dans le contrat V2 de 0x. Si les tokens ZRX de l’architecture ne sont pas menacés, cette vulnérabilité ne permet rien moins que de remplir certains ordres sans signature numérique.
0x just deauthorized their Exchange contract about an hout ago. It can't access the ERC20 or 721 pools
something's going on
Check the event args 👇https://t.co/FtnIHU9Kv0
— James Prestwich (@_prestwich) July 13, 2019
Rapidement, l’équipe déclenche le fonctionnement du smart contract AssetProxyOwner ce qui a pour effet immédiat d’empêcher toute exploitation de la vulnérabilité.
Conséquence collatérale : l’ensemble des transactions en cours deviennent invalides. L’exchange est alors mis en stand by et tous les contrats annulés. Moment de solitude devant le PC si vous étiez en train de procéder à la transaction de votre vie. La conviction en l’immuabilité de la blockchain et en l’infaillibilité des contrats intelligents en tant que saintes croyances en prend un coup sur le museau.
Dans la communauté de la cybersécurité, ça s’agite forcément tant on sait qu’il est difficile à chaud d’appréhender la réalité de l’impact d’une vulnérabilité critique sur la cohésion d’un système, et plus prosaïquement s’agissant de l’intégrité des fonds. Et ce sans même parler bien entendu d’une tendance des équipes à dissimuler des informations capitales. On se souviendra à cet égard du petit moment de sidération dans la soirée du hack de 7000 BTC de Binance en mode « on a un petit problème technique, mais tout va bien… DON’T PANIC ! ».
Au final, les nouvelles transmises par Ox se révèlent plutôt rassurantes : dès le 13 juillet, lendemain donc de ce gros coup de chaud, l’équipe indique avoir patché dans tous les coins et relancé les outils principaux et packages permettant l’exécution du protocole : 0x smart contract, 0x Instant, et 0x Launch Kit. Aucun fonds ne semble avoir été compromis, tout le monde pousse un gros ouf de soulagement.
L’heure est également à la contrition :
« Au nom de l’équipe de base de 0x, je m’excuse sincèrement. Depuis le début, nous avons placé la barre très haut s’agissant de la qualité du code, l’hygiène des tests et le niveau de tous les auditeurs de sécurité indépendants avec lesquels nous travaillons. (…). Nous continuons d’offrir une généreuse prime aux pirates éthiques et aux membres de la communauté qui identifient les vulnérabilités potentielles. » Will Warren, co-fondateur d’Ox Project
Que c’est-il passé ?
Vous pouvez retrouver par ici une autopsie détaillée du film des événements par samczsun, l’expert à origine de la détection de la vulnérabilité critique de 0x (et qui en tant que hacker éthique n’en a pas profité pour l’exploiter, mais a prévenu la société ; Big up à des gars comme lui qui doivent pleurer des larmes de sang à la vue de la réputation de semi-criminels de la communauté crypto).
On retiendra que l’intéressé en auditant le code a constaté que les approches d’authentification et de signature sont fondées sur les standards EIP712 et EthSign basés sur les signatures ECDSA et sont sécurisées cryptographiquement, alors même que les signatures « Wallet » et « Validateur » ne requièrent qu’une adresse pour permettre une validation. Le problème central se situe dans le fait que l’EVM (Ethereum Virtual Machine) a un mode de fonctionnement de nature à ouvrir une brèche exploitable par quiconque enverrait une série de commandes volontairement fausse, cette action créant des exceptions exploitables de manière très concrète : valider des transactions sans signature légitime.
Formellement, c’est ainsi la fonction STOP encodée dans le smart contract qui apparaît avoir créé cette vulnérabilité.
Les amateurs de verre à moitié plein loueront la réactivité de l’équipe d’Ox qui en moins de 24h, a été à même d’apporter des correctifs tout en conservant le lien avec sa communauté. Les moins optimisme songeront avec un frisson à la chance que ladite communauté a eu de tomber sur un white hat, plutôt que sur un hacker avec moins de sens moral. Ces derniers lèveront également un sourcil circonspect s’agissant du constat suivant : Ox, présenté comme le protocole décentralisé par excellence, se révèle en réalité aussi simple à éteindre qu’un vulgaire NAS…
[es_tradingview symbol= »binance:dntbtc » interval= »D » height= »500″ colors= »Light »]