viernes, mayo 13, 2022

Blockchain & SmartContracts: Herramientas Visuales de Auditoría de Seguridad de SmartContracts (y BlockChains)

A la hora de auditar la seguridad de SmartContracts y su BlockChains en búsqueda de vulnerabilidades o debilidades, podemos utilizar distintos tipos de herramientas con entornos gráficos más o menos visuales, y tanto de  de análisis de código estático o dinámico, además de clasificación. En este artículo vamos a ver algunas de ellas para que puedas probarlas y comenzar a trabajar en la auditoría de seguridad de estas tecnologías.

Figura 1: Blockchain & SmartContracts: Herramientas Visuales
de Auditoría de Seguridad de SmartContracts (y BlockChains)

Vamos a comenzar con las herramientas visuales, que son las que nos ayudan a entender de una manera gráfica el flujo de estado y las llamadas que un contrato puede llegar a tener. Esto es muy útil sobre todo para ver qué estados pueden ser afectados dependiendo de la llamada que se lleve a cabo en un instante determinado.

Sūrya

Sürya es una herramienta para inspeccionar de manera visual contratos escritos en Solidity. Para instalarla simplemente tenemos que tener un gestor de paquetes como Npm o Yarn y escribir en una consola:

“””
npm install -g surya
“””

Esta herramienta utilizará graphviz para dibujar los resultados del análisis, luego debemos tenerla instalada también para poder utilizar el comando dot. Con esta herramienta podremos tener.
  • Gráficos de control de flujo: esta parte de la herramienta nos permite visualizar con un grafo, que conexión tienen las funciones en el contrato, el “import flow” y si el contrato llama a otro externo. Se puede observar la imagen que se genera si lanzamos el siguiente comando en este repositorio.
“””
npx surya graph contracts/**/*.sol | dot -Tpng > MyContract.png
“””


Figura 2: Ejemplo de Flujo de un contrato usando Surya.

  • Rastreo de llamadas de una función: nos muestra todas las llamadas a funciones que pueden ocurrir y si el estado que se accede en estas llamadas es accesible para todos. Si lanzamos este comando en el anterior reporte, obtendremos.
“””
npx surya ftrace HackathonWeb3::claimToken all contracts/NFT.sol -i
“””
Figura 3: Ejemplo de como Surya clasifica el acceso a funciones.

  • Control de herencia: nos muestra de manera visual en un grafo como es el sistema de herencias de un contrato o de varios. Basta con usar el siguiente comando.
“””
npx surya inheritance -i contracts/NFT.sol | dot -Tpng > MyContract.png
“””
Figura 4: Flujo de herencia en un contrato NFT.

Además de estos ejemplos, tenéis otros comandos que generan otros gráficos de análisis que pueden ayudar a detectar problemas en el SmartContract. Tenéis todos los comandos de esta herramienta en su repositorio.

EVMLAB

EVMLAB es un onjunto de herramientas para interactuar con la máquina virtual de Ethereum. Esto significa que estas herramientas son compatibles con cualquier Blockchain que use la EVM. Algunas de sus utilidades son:
  • Opviewer: un Trace-Viewer que nos muestra información sobre la cadena de Blockchain y el rastro de una transacción
Figura 5: Consola de EVMLab para acceder a datos de Blockchains basadas en EVM.
  • Reproducer: una herramienta que puede reproducir de manera exacta una transacción en la blockchain de manera local en una Blockchain privada. Ejemplo reproducer.py
PIET

Piet es una aplicación web para crear y editar arquitecturas de SmartContracts. Genera una representación gráfica sobre arquitecturas de contratos, inspector para observar outputs para cada input dado, leer estado del contrato en la Blockchain, propiedades, métodos, generar documentación automática, historial de transacciones del contrato… 

Figura 6: Dashboard de PIET para generar y visualizar arquitecturas de SmartContracts

Estas son algunas de las herramientas más populares para visualizar todos los detalles más importantes del diseño general y particular de un SmartContracts y su BlockChain y así tener más clara su arquitectura, accesos, flujos de llamadas, clases de herencia, etcétera. Información crítica para mejorar su seguridad, que puedes complementar con lecturas como la de este libro donde vas a aprender qué rastros buscan los investigadores en tus actividades.

Figura 7: Libro dedicado a "Bitcoin: La tecnología Blockchain y su investigación"
de Yaiza Rubio y Félix Brezo en 0xWord

Vamos a dejar las herramientas de análisis estático y dinámico para los artículos siguiente, pero os puedo adelantar que algunas de ellas parece que hacen magia. Más artículos sobre este mundo Web3:
Saludos,

No hay comentarios:

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares