miércoles, mayo 24, 2023

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.

Figura 8: Latch Web3: Un pestillo de seguridad para SmartContracts (Parte 2)

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.

Figura 10: Arquitectura de una Dapp

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.

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.

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.


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:
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.

No hay comentarios:

Publicar un comentario