Vulnerabilidades en smart contracts y el rol de las criptomonedas en los delitos informáticos
Tiempo de lectura estimado: 11 minutos
Esta conferencia magistral de C1b3rWall Academy 2021 pertenece a la sección 3, "Criptomonedas y blanqueo de dinero", y está dividida en dos ponencias. La primera, "Vulnerabilidades en smart contracts", versa sobre cómo funciona un smart contract, cómo se desarrolla y la ciberseguridad en este ámbito. En la segunda ponencia, "El rol de las criptomonedas en los delitos informáticos", se explica por qué se usan criptomonedas para pedir el rescate ante ciberataques y profundiza en los distintos tipos de ataques.
Vulnerabilidades en smart contracts
Introducción a los smart contracts
Un contrato inteligente es un código informático que facilita verificar y hacer cumplir un contrato de manera automática. Este código se ejecuta de manera descentralizada, es inmutable y transparente. Los smart contracts tienen validez sin depender de autoridades porque el código es público y no puede cambiar al ser desplegado sobre tecnología blockchain. A continuación se señalan algunos casos de uso:
- Coches autónomos y el carsharing.
- Seguros.
- Trazabilidad alimentaria.
- Sistema de votación.
- Transacciones económicas.
Funcionamiento y desarrollo
Se desarrolla un código y se almacena en la cadena de bloques. Este código fija las condiciones que rigen el contrato, pero a veces entra en juego lo que se define como oráculo (fuente externa de datos que determina variables del contrato inteligente) para obtener la información de las condiciones.
Hay varias tecnologías que cuentan con soporte para smart contracts:
En la ponencia se ha utilizado Ethereum para desarrollar el contrato inteligente de prueba. Esta tecnología soporta la ejecución de los smart contracts sobre la EVM (Ethereum Virtual Machine). La ejecución de los contratos y la validación de los bloques con nueva información la realiza un conjunto de nodos que reciben recompensa. Además, el lenguaje de programación que se usa para desarrollar los contratos es Solidity, un lenguaje parecido a Java en la sintaxis, pero que incorpora conceptos de programación orientada a objetos. Para desarrollar un smart contract se necesita:
- Metamask: monedero donde se guardan los tokens y puente de enlace entre el navegador y la blockchain Ethereum.
- Redes de prueba: redes blockchain para desarrolladores donde los Ethers no tienen valor real.
- Remix: entorno de desarrollo para el navegador que permite escribir el código y desplegarlo en la red.
En la ponencia se realiza un ejemplo de desarrollo de smart contract vulnerable:
Registro, activación y depósito en Metamask
Despliegue y prueba en el entorno de desarrollo
¿Son seguros los smart contracts?
En general sí, la mayoría de agujeros de seguridad son derivados de errores en la programación.
1. Vulnerabilidad de reentrada
2. Desbordamiento aritmético
Se produce con las operaciones con tipos de tamaño fijo, ya que se comportan de forma cíclica. Para un uint8 (entero sin signo de 8 bits), se establece un valor mínimo de 0 y uno máximo de 255, siendo así 256 = 0, moviéndose siempre en ese rango entre 0 y 255.
3. Coma flotante y la precisión
Los smart contracts no cuentan con tipos de datos con coma flotante, no hay decimales. Esto obliga a definir los datos basándose en números enteros, derivando en posibles errores de programación, aunque hay muchas librerías desarrolladas que de por sí tienen en cuenta esta problemática y están muy probadas.
En la ponencia se realiza un ejemplo de explotación de smart contract. Hay herramientas como Ethernaut, Capture the Ether o Security Innovation Blockchain CTF para realizar ejercicios similares.
Soluciones y prevención
Como se ha visto, la mayoría de estas vulnerabilidades llegan desde fallos de diseño o desarrollo. Para poder evitarlos, conviene contar con:
- Desarrolladores expertos en tecnología específica.
- Metodologías de desarrollo seguro.
- Realización de auditorías.
- Actualización de las tecnologías en uso.
El rol de las criptomonedas en los delitos informáticos
Las criptomonedas se están estableciendo como una moneda ideal para la ciberdelincuencia. Se estima que, solo en 2019, en Europa se blanquearon 5.200 millones de dólares a través de criptodivisas.
El uso de criptomonedas como pago de bienes y servicios ilegales en la Dark Web
La Dark Web y las criptomonedas constituyen la fórmula ideal para el blanqueo rápido, anónimo y relativamente fácil de los ingresos procedentes de servicios y ventas ilegales. La Dark Web es un corpus de sitios web que son visibles para el público, pero las direcciones IP están veladas con anonimato. Las transacciones en este ámbito siguen una serie de pasos:
- Encontrar un mercado web como Silk Road o Alphabay.
- Utilizar redes privadas virtuales con TOR para ocultar ubicación e identidad.
- Instalar software de encriptación para cifrar la comunicación.
- Adquirir bitcoin u otras criptomonedas y almacenarlas en un monedero.
- Crear y configurar la cuenta en el portal web y hacer el pedido.
Ejemplo de portal de Dark Web, facilitador de actividad delictiva
Criptomonedas como herramienta para la delincuencia
Blanqueo de dinero
Además del comercio de productos ilegales, en la Dark Web también existen servicios específicos de blanqueo de criptomonedas, sobre todo servicios de blanqueo de bitcoins conocidos como tumblers o mixers. Estos servicios permiten a los usuarios transferir sus criptodivisas a un conjunto de criptodivisas existentes. La transferencia "mezcla" los fondos y desordena las direcciones de las transacciones del remitente y el receptor. Como resultado, los usuarios terminan con direcciones de criptodivisas recién generadas, ocultando así aún más el rastro financiero.
Aplicaciones de minería
El proceso de minería requiere grandes cantidades de potencia de cálculo. A cambio, los mineros reciben un pago en criptomonedas. Para generar este tipo de potencia informática, los piratas informáticos infectan redes de ordenadores para "minar".
Ransomware
El ransomware es un tipo de malware que obtiene acceso a archivos o sistemas y bloquea el acceso del usuario. Estos suelen comenzar con un ataque de phishing que convence a un usuario para que abra un correo electrónico comprometido y haga clic en un enlace malicioso, concediendo al hacker acceso a la red. Una vez dentro de la red, los atacantes pueden desviar información, cifrarla y exigir un rescate por su descifrado. En algunos casos, el rescate se pide en criptomoneda.
El famoso ataque WannaCry de 2017 fue uno de los mayores ataques de ransomware de la historia, afectando a sistemas Windows de todo el mundo. Los piratas informáticos detrás del ataque a muchas empresas exigieron el pago de un rescate en forma de bitcoins. Se cree que el primer ransomware que utilizó una criptomoneda fue CryptoLocker en 2013.
Autores: Pablo Plaza Martínez y Manuel López Pérez
Ambos son ingenieros informáticos por la Universidad de Salamanca y analistas de seguridad en el Grupo de Investigación BISITE. Además, son miembros de la selección española de ciberseguridad y juntos fundaron el blog ironhackers.es.
¿Cuál es tu reacción?