Latch Web3: Un pestillo de seguridad para SmartContracts (Parte 2)
Visto en la primera parte de este artículo cómo funciona Latch y Latch Cloud TOTP, así como todas las posibles integraciones que se pueden hacer, llegamos a la siguiente parte, en la que nos planteamos poner Latch en la infraestructura de una DApp al igual que lo ponemos en una WebApp o una App, con el objetivo de securizar la infraestructura.
Para ello, primero tenemos que tener en cuenta los elementos de una arquitectura Web3 distribuida, donde tentemos una estructura similar a esta que vamos a analizar a continuación
Arquitectura de una DApp en Web3
Esta arquitectura, que vamos a ver a continuación, es similar, por ejemplo, a la que tenemos en el Market de NFTs de Telefónica, donde contamos con una serie de elementos que van a ser similares en infraestructuras basadas en Ethereum, así que más vale que te la conozcas al dedillo. Si quieres profundizar en ella, empezando desde cero, te recomiendo los cursos de la Bit2Me Academy, donde tienes todo este tipo de formaciones.
Como veis, tenemos un almacenamiento de datos basado en una cadena Blockchain, donde no solo tendremos Tokens, sino además datos que queramos anclar en la cadena. Por supuesto, el uso de la cadena de bloques está sometido al consumo de Tokens, porque la construcción, mantenimiento y uso de cualquier cadena de BlockChain está basado en Tokenomics.
La lógica de la aplicación, que se ejecuta en la máquina del ledger, está construida en forma de SmartContracts que se anclan en la cadena de bloques. Estos SmartConracts son ejecutados para realizar las acciones necesarias en la DApp que es la que coordina el flujo y ejecución de SmartContracts en función de los usuarios conectados, las acciones que estos hagan, y los datos que aporten, consuman o generen. Cada SmartContrat tiene una dirección pública dentro de la cadena de bloques, y un dueño, en forma de usuario, que es identificado por la clave pública de su Wallet.
Figura 11: Modelo de Tokenomics 101
Por supuesto, la identificación de los usuarios, se mantiene con las Wallets, que tienen una clave pública que se usa en las cadenas de bloques para identificar las acciones que este haga, y para recibir las entregas de tokens que se hagan en la Blockchain. Así, cuando un usuario genera una Wallet con su identidad – a partir de una semilla – tiene una clave privada almacenada en el dispositivo, y una clave pública, que lo representa en la cadena de bloques.
Figura 12: Libro dedicado a “Bitcoin: La tecnología Blockchain y su investigación” de Yaiza Rubio y Félix Brezo |
Cuando un usuario se autentica en una DApp, ésta le pide acceso a la Wallet, para poder realizar acciones de acceso a su clave pública, e incluso hacer transacciones de tokens dentro de la cadena Blockchain, lo que genera también entornos de ataque de los que hay que protegerse, como veremos. Si además, cada uno de los elementos que interfieren en una o varias DApp que forman una solución Web3 pertenecen a diferentes organizaciones, empresas o individuos, tenemos una Organización Autónoma Distribuida o DAO.
Hacking y Seguridad en Web3
Vista la arquitectura anterior, tenemos ahora que darnos cuenta de que el modo en que se atacan estas arquitecturas son diferentes a cómo se atacaban las arquitecturas de Web, donde hemos hablado muchas veces de Hacking Web Technologies, de Client-Side Attacks o de Hacking Web Aplications: SQL Injection. Ahora en el mundo Web3 y las DApp, los ataques son diferentes, y hay que conocer las técnicas de hacking, de pentesting y de auditoría. Y como vamos a ver en este artículo de Latch Web3, de fortificación.
Figura 13: Retos de Level_UP!
Para aprender y conocer estas técnicas, desde el equipo de Ideas Locas hemos lanzado la plataforma de entrenamiento Level_UP!, donde tienes retos de hacking Web3, y de los que hemos ido publicando ya algunos solucionarios.
Y esto hay que aprenderlo bien, porque los atacantes ya se conocen las vulnerabilidades, e incluso las pueden encontrar utilizando herramientas como ChatGPT, que permite localizar bugs que explotar en SmartContracts creados en Solidity solo con darle el código .sol del contrato.
Figura 14: ChatGPT encuentra el bug de Reentrancy Attack
Nosotros, a lo largo del último año hemos ido enumerando muchas de estas técnicas, utilizando para ello ejemplos de incidentes que han ido pasando – y que hemos ido incorporando a nuestra plataforma de Level_UP! -, para aprender las técnicas de Hacking Web3 y buscar formas de solucionarlas. Algunos de estos ataques a SmartContracts de los que hemos hablado son:
- Ataque de Ice Phishing: Dapp maliciosa pide acceso a tu wallet para robarte los tokens.
- Reentrancy Attack: Robo de tokens a SmarContrat que no controla bien los saldos.
- Ataque D.o.S.: Bloqueo de SmartContracks por fallos en la lógica.
- Ataque Phishing tx.origin: Suplantación de wallet por phishing.
- Wallet Multi Signature: Mala gestión a la hora de desplegarlo en diferentes cadenas.
- RO-reentrancy attack: Se utiliza un SmartContract tercero para leer los datos.
- MEV Bots Attacks: Bots que interceptan las transacciones en la Mempool.
- Bridgeds multi-cadena: Transacciones multicadena usando bridges no controladas.
- …
Y también os hemos dejado algunas herramientas de auditoría usando análisis de código estático, código dinámico y dando recomendaciones de arquitecturas de seguridad.
Si quieres saber el impacto que tienen estas vulnerabilidades en términos económicos para las empresas que han sido vulneradas, puedes visitar la web https://defillama.com/hacks donde puedes ver las grandes cantidades de dinero robado, la fecha, y la técnica utilizada.
Figura 15: Incidentes Web3 en https://defillama.com/hacks
Así que, como podéis ver, esto es poca broma, y hay que tomarse en serio cómo auditar y fortificar las arquitecturas DApp. En la próxima entrada comenzaremos con este proceso, hasta llegar al Latch Web3.
¡Saludos Malignos!
*******************************************************************************************
*******************************************************************************************
Autor: Chema Alonso (Contactar con Chema Alonso)
Powered by WPeMatico