126 millions de dollars en danger : une faille corrigée de justesse sur l’IBC de Cosmos
Un sauvetage in extremis. Cosmos est un écosystème de blockchains interconnectées via le Cosmos Hub. En pratique, Cosmos dispose d’un protocole de messagerie cross-chain permettant de transmettre des fonds et des messages appelé Inter-Blockchain Communication (IBC). Celui-ci a récemment été l’objet d’une faille, qui a pu être corrigée avant qu’elle ne soit exploitée.
Une faille découverte dans l’IBC de Cosmos
Le 23 avril, les équipes de Assymetric Research ont dévoilé une affaire qui aurait pu tourner à la catastrophe.
Ainsi, ces derniers ont découvert une faille qui impactait l’IBC de Cosmos. Celle-ci mettait en péril plus de 126 millions de dollars.
Après avoir découvert la faille, Assymetric a communiqué ses trouvailles aux équipes de Cosmos via le programme HackerOne Bug Bounty. Pour rappel, ce programme de Bug Bounty vise à récompenser les développeurs qui découvrent des failles dans le code source de Cosmos.
« Bien que cette vulnérabilité existe dans ibc-go depuis le début, elle n’est devenue exploitable qu’en raison de développements récents dans l’écosystème Cosmos SDK, en particulier l’intergiciel IBC basé sur CosmWasm. »
Heureusement, la faille a été découverte puis corrigée à temps. Ainsi, celle-ci n’a jamais été exploitée par un hacker.
Détail de la faille
En pratique, cette faille touchait le programme ibc-go, à savoir l’implémentation de IBC dans le langage de programmation GoLang.
De surcroît, comme précisé par Assymetric, cette faille a toujours été présente, mais n’est exploitable que depuis peu. Notamment suite à l’intégration de l’IBC dans CosmWasm.
Pour rappel, CosmWasm est un moteur d’exécution de smart contracts basé sur WebAssembly. Sans trop entrer dans les détails, il permet de compiler des smart contracts écrits dans d’autres langages en Wasm, facilitant leur intégration.
Pour comprendre la faille, il faut comprendre le processus de communication entre différentes chaînes Cosmos via l’IBC. Lors d’une communication, il existe une étape où un message doit être renvoyé si le temps imparti pour le recevoir est écoulé.
Normalement, une fois ce message traité, il est supprimé pour éviter toute répétition. Cependant, à cause de cette faille, le message n’était pas toujours supprimé correctement après son traitement, ce qui permettait à un attaquant de le réutiliser encore et encore pour créer de nouveaux jetons IBC de manière illimitée.
En utilisant des fonctionnalités spécifiques de CosmWasm et d’autres parties de l’écosystème Cosmos, un attaquant pouvait exploiter cette faille pour voler des fonds ou créer une quantité infinie de jetons IBC.
De son côté, l’écosystème Cosmos poursuit son développement. Ce dernier vient notamment d’accueillir Saga, une nouvelle chaîne qui vient tout juste de lancer son mainnet. En parallèle, Saga a également distribué un airdrop massif aux stakers de Cosmos.