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.
● 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 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:
- Blockchain & SmartContracts: Una serie para aprender
- Blockchain & SmartContracts: Primer SmartContract con Solidity
- Blockchain & SmartContracts: Cómo probar y desplegar un SmartContract en Ethereum
- WWW, Web 1.0, Web 2.0, Web 3.0, Web3 y ¿Web 4.0?
- Metaverso, multiverso y las tierras digitales en que vivimos en forma de avatar
- Los Fan Tokens vs. las Criptomonedas y los NFTs: Level 101
- Tokenomics: Las criptomonedas y las "Proof-of-work": Level 101
- Los NFTs y el registro mundial de los dueños de activos digitales en el Metaverso
- El-Italiano.docx: Las obras de arte únicas en el mundo digital y el expolio de los maestros
- BitCoin: Blockchain y su investigación
- Cada día nuevas Criptomonedas: Cada día nuevos Ups & Downs
- BlockChain & SmartContrats: El Internet descentralizado y el almacenamiento off-chain en IPFS
- Reentrancy Attack: Cómo te roban criptomonedas por un bug en tu SmartContract
- BlockChain & SmartContract: Bugs que pueden dejar tu SmartContrat "fuera de juego"
- Blockchain & SmartContracts: Patrones y buenas prácticas de seguridad
- Blockchain & SmartContracts: Herramientas de Auditoría de Seguridad de SmartContracts
- Blockchain & SmartContracts: Herramientas de análisis de código estático
- BlockChain & SmartContracts: Ataques de Ice Phishing
Saludos,
No hay comentarios:
Publicar un comentario