HACONTI: Desafíos de Ciberseguridad en Smart Contracts

07/11/2024

HACONTI: Desafíos de Ciberseguridad en Smart Contracts

Escrito por Juan Schällibaum, Application Security Engineer en Ualá

Introducción

Los contratos inteligentes (o smart contracts) están transformando la manera en que realizamos transacciones y gestionamos activos digitales en la blockchain de Ethereum. Sin embargo, como cualquier producto de software, no están exentos de problemas de seguridad. Un claro ejemplo de esto fue el DAO Hack en 2016, donde un atacante aprovechó una vulnerabilidad para robar 3,54 millones de ether, destacando la importancia de mantener una seguridad robusta en estos contratos.

En este artículo, exploraremos algunas de las vulnerabilidades más comunes que afectan a los contratos inteligentes. También presentaremos HACONTI, una plataforma gratuita que ofrece desafíos de ciberseguridad en smart contracts, diseñada para ayudar a los desarrolladores a mejorar la seguridad de sus contratos y a los especialistas en seguridad a entrenarse en la evaluación de estos sistemas críticos.

Vulnerabilidades en Smart Contracts

Existen numerosos tipos de vulnerabilidades que afectan a los smart contracts. Entre las más importantes se encuentran las siguientes:

  • Reentrancy: Permite a un atacante ejecutar repetidamente una función dentro del contrato antes de que la primera ejecución termine, manipulando el comportamiento del contrato.
  • Desbordamiento de Enteros: Ocurre cuando una operación aritmética excede el rango de un tipo de dato, causando comportamientos inesperados.
  • Denegación de Servicio (DoS): Un ataque de DoS puede bloquear el acceso a funciones críticas o agotar el gas del contrato, impidiendo su correcto funcionamiento.
  • Fallas en Controles de Acceso: Permite que usuarios no autorizados accedan a funciones que deberían estar restringidas, comprometiendo la integridad del sistema.
  • Información Privada en la Blockchain: La información almacenada en la blockchain es pública y se puede comprometer la confidencialidad si no se cifra adecuadamente.

  • Llamadas Inseguras a Contratos Externos: El uso de delegatecall() con contratos no confiables puede permitir que se manipule el estado interno del contrato que realiza la llamada.
Leer también:

HACONTI – Desafíos de Ciberseguridad

HACONTI (Hackeá Al Contrato No Tan Inteligente) es una plataforma web que brinda desafíos de ciberseguridad basados en smart contracts desarrollados en Solidity. Cada nivel o desafío de la plataforma consta de un contrato inteligente con alguna vulnerabilidad que debe ser explotada para su resolución.

La plataforma cuenta con un total de treinta niveles, agrupados en tres categorías distintas, cada uno con una dificultad asociada. Dos de las características más destacables de HACONTI son la abundante información contextual que se proporciona sobre las vulnerabilidades de los niveles y el novedoso sistema de puntos que presenta.

Menú principal de HACONTI

Categorías de los Desafíos

  • Categoría 1 (Introductoria): Niveles diseñados para familiarizar a los jugadores con Ethereum y smart contracts, y proporcionar habilidades básicas para desplegar e interactuar con contratos en Solidity sin experiencia previa.

  • Categoría 2 (Vulnerabilidades Simples): Niveles enfocados en enseñar sobre vulnerabilidades específicas, asociadas a un SWC (Smart Contract Weakness Classification) y/o SCSVS (Smart Contract Security Verification Standard) particular.

  • Categoría 3 (Vulnerabilidades Complejas y Encadenadas): Niveles más difíciles que combinan diversas vulnerabilidades simples, las cuales deben ser explotadas en cadena para completarlos, poniendo a prueba las habilidades adquiridas al resolver niveles previos.

Información Contextual de los Desafíos

Cada nivel indica su estado (resuelto o no), su dificultad y categoría asociada, e incluye una lista de objetivos de superación y el código fuente del contrato vulnerable con el que se debe interactuar para superar el nivel.

Vista del nivel “Reentrada”

Además, los niveles de la Categoría 1 incluyen un tutorial detallado para su resolución, y los niveles de las Categorías 2 y 3 incluyen:

  • Descripción: Detalles sobre el desafío.
  • Hints: Pistas desbloqueables con puntos.
  • Hints Adicionales: Pistas extra que requieren más puntos.
  • SWC y SCSVS: Información sobre vulnerabilidades y checklists asociados, desbloqueables con puntos adicionales.

Información del nivel “Puntero”

Por otra parte, tras resolver un nivel también se desbloquea:

  • Información Adicional: Detalles técnicos sobre la resolución del nivel.
  • Casos Reales: Ejemplos de incidentes del mundo real en los que atacantes robaron millones de ether debido a vulnerabilidades similares a las del nivel resuelto.
  • Código Corregido: Código fuente corregido del contrato, demostrando cómo remediar la vulnerabilidad. Puede haber más de una versión de la remediación.
  • Las Hints, Hints Adicionales y la información de SWC y SCSVS asociadas al nivel resuelto se desbloquean automáticamente sin importar la cantidad de puntos del jugador.

Información desbloqueable del nivel “NombreConstructor”

Sistema de Puntos de HACONTI

Los puntos se otorgan al resolver niveles. La distribución de puntos según la dificultad de los niveles es la siguiente:

  • Muy Fácil: 50 puntos
  • Fácil: 100 puntos
  • Normal: 150 puntos
  • Difícil: 200 puntos
  • Muy Difícil: 300 puntos

Estos puntos permiten a los jugadores ascender en un ranking público y son necesarios para desbloquear hints, hints adicionales, y detalles sobre vulnerabilidades (SWC y SCSVS). Además, se pueden usar para personalizar el perfil del jugador, como establecer un nick (200 puntos), elegir una bandera (500 puntos), y agregar información de contacto como email, sitio web, y redes sociales, con más puntos acumulados.

Ranking de HACONTI

Las opiniones expresadas por los autores de este blog son propias y no necesariamente reflejan las opiniones de LACNIC.

Subscribe
Notify of

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments