miércoles, junio 22, 2022

BlockChain & SmartContracts: Herramientas de análisis dinámico

A lo largo de los dos últimos artículos de esta serie de SmartContracts & Blockchain hemos visto diferentes recursos (parte 1, parte 2) que nos pueden ayudar a la hora de auditar SmartContracts. En el artículo de hoy vamos a ver algunas de las más usadas herramientas de análisis dinámico a la hora de auditar SmartContracts, sobre todo para aquellos compatibles con la EVM.

Figura 1: Blockchain & SmartContracts: Herramientas de análisis dinámico

Las herramientas de análisis dinámico son aquellas que nos proporcionan resultados dependiendo de la ejecución del código en runtime. En estas se despliega el bytecode del contrato compilado a una EVM local y se tratará de seguir el flujo del contrato para los inputs que se le den.
La primera herramienta que os muestro es Myth, que analiza, despliega y prueba el bytecode del contrato que le provee ais. Soporta contratos de Ethereum, Hedera, Quórum, Tron… Utiliza ejecución simbólica para detectar parte de las vulnerabilidades. Esta es una de las herramientas más usadas y conocidas para revisar la seguridad de SmartContracts.

Figura 2: Mypth analizando un SmartContract
(clic para ver en grande)

En la imagen tenemos Myth mostrando posibles vulnerabilidades de un SmartContrat. Para instalarlo simplemente tenemos que ejecutar lo siguiente en la consola.
“””
pip3 install mythril
“””
Y para ejecutarlo solo hay que lanzar el comando:
“””
myth analyze [smartContractFiles]
myth analyze -a [address]
“””
Es otra herramienta de ejecución simbólica para SmartContracts y Blockchains. Entre sus posibilidades permite explorar todos los posibles estados que puede alcanzar una función en un contrato, generar inputs conflictivos, detectar malos controles de flujo, acceder al análisis mediante una API de Python, etcétera.

Figura 3: Manticore detectando un overflow  

Puede analizar SmartContracts basados en EVM y WASM (Web Assembly Binaries). Para instalarla solamente tenemos que usar PIP:
“””
pip install manticore
(optional) pip install “manticore[native]”
“””
Y para usarla:
“””
manticore [file]
“”” 
MAIAN se encarga de detectar tres tipos de vulnerabilidades en SmartContracts basados en la EVM: Prodigal, Suicidal y Greedy. Funciona ejecutando el bytecode del contrato y trazando diferentes llamadas para confirmar la presencia de estos bugs. Si quieres entrar en profundidad en cómo funciona la herramienta aquí tienes su whitepaper.


Para instalarla simplemente tenemos que clonar su repositorio e instalar algunas dependencias:
“””
git clone https://github.com/ivicanikolicsg/MAIAN
pip3 install web3
sudo pacman -S ethereum evm solc python-pyqt5
“””
Y para ejecutarla tenemos varias opciones, la primera de ellas es usando el código fuente del contrato por ejemplo un contrato hecho en Solidity:
“””
python maian.py -s [file.sol] [contractName]
“””
La segunda es usando el bytecode del contrato en forma hexadecimal:
“””
python maian.py -bs [file.hex]
“””
Y la tercera y última usando el bytecode compilado:
“””
python maian.py -b [evmCompiledBytecode]
“””
Vertigo es un framework de Mutation testing hecho para testear SmartContracts. Para quien no sepa que es Mutation testing, es una forma de testing en la que se cambian componentes clave de código para asegurarse de que el software será capaz de detectar los errores en tiempo de ejecución. Su filosofía es más un voy a romper partes de tu programa a ver si este se da cuenta.

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

Cabe destacar que este framework está preparado para usarse en proyectos de Solidity como Hardhat o Truffle. Para poder usarlo solo tenemos que usar pip:
“””
pip3 install eth-vertigo
“””
Después dependiendo si tenemos nuestro proyecto con Hardhat(1) o Truffle y de las redes que tengamos configuradas en el proyecto deberemos usar los siguientes comandos:
“””
(1) vertigo run --hardhat-parallel 2
“””
“””
(2) vertigo run --network [configuredNetWorkInTruffle]
“””
Un ejemplo de la información que nos da la herramienta sería:
…
[*] Running analysis on 5 mutants
100%|████████████████████████████████████████████████████| 5/5
[00:17<00:00,  4.38s/mutant]
[*] Done with campaign run
[+] Report:
Mutation testing report:
Number of mutations:    5
Killed:                 4 / 5
Mutations:
[+] Survivors
Mutation:
   File: /Users/chgara/temp/tasks/contracts/Tasks.sol
   Line nr: 19
   Result: Lived
   Original line:
        if (balances[msg.sender] < amount) return false;
Mutated line:
        if (balances[msg.sender] <= amount) return false;
...
Un framework de análisis para Web Assembly y SmartContracts tanto EVM como BTC. Ofrece una sencilla API sobre la que construir herramientas que necesiten decompilar el bytecode de un contrato, trazar la llamada a una función, controlar el flujo de ejecución…

Figura 6: Resultado del código anterior
(Clic para agrandar)

Para instalarla nos basta con lanzar:
“””
pip3 install octopus
“””
Y un ejemplo del uso de la API de manera sencilla para observar el flujo de ejecución podría ser el siguiente:
from octopus.analysis.graph import CFGGraph
from octopus.platforms.ETH.cfg import EthereumCFG

file_name = "temp/tasks/evm_bytecode/Zeppelin_ethernaut0.bytecode"
with open(file_name) as f:
   bytecode_hex = f.read()
cfg = EthereumCFG(bytecode_hex)
graph = CFGGraph(cfg)
graph.view()
Esta ejemplo anterior es una API para usar análisis estático, pero la mayoría de las otras son para realizar análisis dinámico.

Conclusión

Cada poco tiempo suele saltar alguna noticia de un ataque a un SmartContract que hace perder millones a la comunidad y a sus desarrolladores. Con las herramientas y buenas prácticas que hemos visto en estos 4 últimos artículos de la serie de SmartContracts & Blockchain podemos tratar de verificar nosotros mismos la seguridad de los proyectos que usamos o creamos. Nos vemos en el próximo artículo. Más artículos sobre este mundo Web3:
Saludos,

Autor: Chema Garabito. Desarrollador Full-Stack. Ideas Locas Telefónica CDO.


martes, junio 21, 2022

OpenExpo Europe 2022: Las charlas de Cripto-Arte, Hacking, Estafas, Developers, Formación y Metaverso

Ya quedan menos de diez días para que llegue el gran día de OpenExpo Europe 2022 (aún puedes conseguir tu Business Pass con Tempos en MyPublicInbox), y en el post de hoy os quiero hablar de algunas charlas que daremos allí, que pueden ser de tu interés. La agenda completa de actividades, ponencias, y charlas, la tienes en la misma web de OpenExpo Europe 2022, y yo te la iré desgranando poco a poco.

Figura 1: OpenExpo Europe 2022: Las charlas de Cripto-Arte,
Hacking, Estafas, Developers, Formación y Metaverso

Además de las charlas que yo te voy a contar hoy, recuerda que tienes abierto el Programa de Voluntarios de OpenExpo Europe 2022 si quieres ser parte de esta experiencia desde dentro, y además hoy hemos lanzado un concurso para que consigas un portátil gratis.

La primera de las charlas de las que te voy a hablar hoy es la que da Pau García Milà, donde va a hablar de Educación, Futuro y Metaverso. Pau es un gran emprendedor y un gran ponente, y nos vendrá a hablar de cómo han montado en el Metaverso un sistema aplicado a la formación, con resultados impactantes.

Figura 2: Pau García Mila en OpenExpo Europe 2022

La siguiente ponencia será la de Alberto Granados, Country General Manager de Microsoft España, en la que hablará de emprendimiento, de servicios para desarrolladores, de la puesta de GitHub de Microsoft, de los programas de Azure, y en la que yo participaré con él. Hablaremos de, entre otra cosa, el programa de Microsoft MVPs del que yo formé parte durante 14 años.

Figura 3: Alberto Granados, Country General Manager de Microsoft España

Tras la charla de Alberto Granados, podremos disfrutar de una mesa de debate en la que estarán grandes de la ciberseguridad, como son Juan Carlos Galindo - autor de libro de "Ciberestafas: La historia de nunca acabar", Carlos Seisdedos, autor del libro de "Open Source INTelligence (OSINT): Investigar personas e Identidades en Internet", Jorge Coronado y Marta Barrio, donde hablaremos de Estafas.
Yo también daré una charla, aún por configurar el horario, donde hablaré de unos hacks que hemos estado haciendo en el equipo de Ideas Locas, donde hablaré de como Webscrappificar para Weaponizar Features de apps, a ver si os gusta.
También tendremos una charla maravillosa de "Cripto-Arte en la Web3" en la que estará el gran Okuda San Miguel y el gran Nikotxan, dos referentes en el mundo del arte y los NFTs, con un prestigio internacional brutal con sus obras. 

Figura 6: Contactar con Nikotxan, papá de Cálico Electrónico

Otra de las charlas que son destacables es la que dará Javier Pagán, el Country Manager de Twitter en España, que hablará de cómo innovar en la conversación, con ejemplos como el que hemos hecho con MyPublicInbox de Tempos x Tweets o el de la integración de Twitter en Movistar+ como parte de las Living Apps. Te contará cómo lo hemos hecho.

Figura 7: Javier Pagán "La innovación como motor social de la conversación social"

También, en la sala Google Cloud estará Peter de Imascono, una de las empresas referentes en este país en la creación de experiencias de realidad extendida en el mundo del Metaverso. Una charal espectacular con ejemplos reales de negocio y experiencias con soluciones de Realidad Virtual, Realidad Aumentada y Realidad Mejorada, para mostrar casos de uso de la llamada Realidad Mixta o Realidad Extendida. ¿Qué de realidades, no?


Pero estas son solo algunas de las charlas, que tendremos, dentro del ciclo de conferencias, esta semana os iré contando más sesiones, exposiciones, las entrevistas que podrás ver en directo, y muchas más cosas. De momento, si no quieres perdértelo, no te olvides de conseguir tu Business Pass para OpenExpo.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares