¿Qué son las auditorías de Smart Contract y por qué son importantes?

  • Las auditorías de los Smart Contracts  analizan los códigos que conforman el Smart Contract para detectar vulnerabilidades y problemas de seguridad y, con ello, determinar si el proyecto es o no seguro para el uso del público.
  • A medida que el ecosistema cripto crece y, con ello, se maneja más dinero, la auditoría de los Smart Contracts adquiere mayor relevancia.
  • La auditoría es la única herramienta que puede proporcionar cierta garantía a los usuarios de que el Smart Contract es seguro y que su dinero no se perderá.

Uno de los mayores temores que pueden existir en el ecosistema cripto es ser víctima de un hackeo o de un exploit, que pueda poner en riesgo nuestros activos digitales, y  es que si bien el ecosistema cripto señala a la tecnología blockchain como una herramienta segura e inmutable, hay que tener en cuenta que existe un factor que puede generar vulnerabilidades, y este es el factor humano.

Ninguna construcción humana es perfecta y menos al principio, y en el caso de proyectos cripto podemos encontrarnos errores  o vulnerabilidades derivadas tanto de los programadores, (por ejemplo errores de programación o vulnerabilidades de software), así como de como de los propios usuarios (contraseñas débiles o car en un ataque de phishing)

Justo los errores por parte de los programadores son los que pueden llevar a que se creen vulnerabilidades en los Smart Contracts, o Contratos Inteligentes,  las cuales pueden ser aprovechadas por los hackers, los que puede conducir a un exploit.

Si bien estos errores no pueden evitarse, sí pueden prevenirse, justo para esto sirven las auditorías a los contratos inteligentes las cuales pueden prevenir que millones de dólares en activos digitales sean robados. Tal es la importancia de estos que empresas como Uniswap, uno de los exchanges descentralizados más importantes del mercado, tienen programas de recompensas para aquellos que puedan  identificar posibles vulnerabilidades en sus contratos inteligentes.

Conozcamos más sobre los smart contracts y sus auditorías.

¿Qué son los Smart Contracts?

Al igual que otros contratos los “smart contracts” o “Contratos Inteligentes”.  establecen  acuerdos que encierran una serie de condiciones las cuales deben cumplirse por las partes participantes para que una determinada acción se lleve a cabo.

La diferencia con los contratos tradicionales, es que los smart contracts son ejecutados en la blockchain, lo que significa que son seguros, transparentes e inmutables y son programados en lenguajes de programación específicos que luego son cargados a una cadena de bloques específica. Cuando el Smart contract ya está en la blockchain las partes interesadas pueden interactuar con él  para cumplir con las condiciones predefinidas.

Las acciones de un Smart Contract pueden incluir la liberación de fondos a las partes que corresponda, la emisión de una multa, el envío de notificaciones, entre otros; y, una vez se ha cumplido con las condiciones predeterminadas, el contrato se ejecuta automáticamente,sin necesidad de intermediarios. Una vez ejecutado, la transacción se registra en la blockchain y, por ende, no se puede cambiar, en embargo , en caso de que las condiciones no se cumplan, el contrato no se ejecuta y se revierte automáticamente.

Auditorías, una herramienta para prevenir exploits

Si bien anteriormente señalamos que los smart contracts son seguros, transparentes e inmutables, recordemos que existe el factor humano involucrado en el proceso. Dado que los Smart Contracts funcionan por largas líneas de código conformados por condicionales, en ellos se pueden esconder muchas vulnerabilidades, desde errores de programación o fallas en el diseño, hasta malas prácticas intencionales.

Estos errores pueden ser explotados por los atacantes, provocando un exploit lo cual podría llevar a la pérdida de fondos, la interrupción de los servicios y la pérdida de confianza en el proyecto afectado; justo para prevenir, o detectar estos errores es importante auditar los smart contracts.

Una auditoría consiste en una inspección o verificación profunda realizada por un tercero, en el ecosistema cripto básicamente se analizan los códigos que conforman el Smart Contract para detectar vulnerabilidades y problemas de seguridad y, con ello, determinar si el proyecto es o no seguro para el uso del público.


¿Por qué los Smart Contracts requieren de auditorías?

Específicamente, hay varias razones por las cuales un proyecto debería de realizar auditorías a sus Smart Contracts. Aquí algunas de ellas:

  • Identificar cualquier posible error que se encuentre en el código.
  • Asegurarse que el código es seguro para que los usuarios puedan transferir fondos.
  • Es una manera a través de la cual los desarrolladores le pueden proporcionar seguridad a los usuarios que utilizarán el proyecto. Así como los códigos pueden tener errores no intencionales, pueden haber algunos Smart Contracts que escondan en su código trampas para robar a sus usuarios.
  • En consecuencia, la auditoría brinda, en cierta medida, un grado de profesionalidad al proyecto y garantiza, hasta cierto punto, la seguridad de los fondos.

En cualquier caso, las vulnerabilidades de los Smart Contracts representan un problema tanto para los desarrolladores como para los usuarios que los utilizan, y a medida que el ecosistema cripto crece y, con ello, se maneja más dinero, la auditoría de los Smart Contracts adquiere mayor relevancia.

En caso de producirse fallas de seguridad o exploits de un Smart Contract, se corre el riesgo de perder todos los activos que conformen en contrato y, por ende, los costos son extremadamente elevados. Una empresa debe preocuparse genuinamente por la seguridad del Smart Contract que es la base de todo su proyecto, especialmente por la naturaleza irreversible de estos.

Como hemos recalcado  a lo largo del artículo, las auditorías a los smart contract son importantes, pero además le trae beneficios a los desarrolladores de un proyecto ya que los errores en un Smart Contract pueden ser costosos y por eso auditar el código desde el comienzo puede evitar grandes pérdidas a futuro.

También  poseer una auditoría a un smart contract otorga mayor seguridad a los desarrolladores de un proyecto que su código es seguro y, en consecuencia, los fondos, esto a su vez son una especie de garantía para los usuarios de las buenas intenciones de los desarrolladores

¿Cómo se realizan las auditorías?

Las auditorías de los Smart Contracts consisten en encontrar posibles vulnerabilidades en el código así como evaluar que no hayan problemas lógicos y de control de acceso.

No obstante, los estándares para las auditorías de seguridad de los Smart Contracts varían, ya que no es posible aplicar los mismos estándares para distintos proyectos, y por lo general, las auditorías suelen ser realizadas por entidades de terceros con el objetivo de que no haya conflictos de interés.

Esencialmente hay dos tipos de auditorías para los Smart Contracts, manuales y automatizadas.

  • Auditoría Automatizada: Se hace uso de un Software de detección de errores. Básicamente le brinda a los auditores una ayuda al localizar la ubicación exacta en dónde se encuentra el error. Esto no quiere decir que este tipo de auditoría garantice al 100% que el código se encuentre libre de errores. La realidad es que es posible que el software no comprenda el contexto del código y pase por alto ciertas vulnerabilidades.
  • Auditoría Manual: Como se puede imaginar por su nombre, este método consiste en expertos examinando línea por línea el código en busca de ciertos problemas. Particularmente este tipo de auditorías es clave para detectar posibles malas prácticas del proyecto. De hecho, actualmente este es el método más importante, preciso y, por ende, que brinda mayor seguridad.

Proceso de una auditoría a un Smart Contract

La auditoría a un Smart Contract puede variar por especificidades del código o del proyecto, no obstante, hay un procedimiento relativamente estándar, aunque también puede diferir dependiendo del auditor.

Elegir un auditor

El primer paso es elegir a un auditor, es necesario que este tenga conocimiento del ecosistema blockchain. Algunas compañías de auditoría más reconocidas son:

  • Certik:organización de seguridad web y blockchain. Esta compañía ha auditado el código de BNB Smart Chain, Bancor y Huobi.
  • Chainsulting: Inició en 2017 y realiza auditorías de código a blockchains como Algorand, Ethereum y Solana.
  • OpenZeppelin: Esta compañía le ha brindado servicios de auditoría a Coinbase y a la Fundación Ethereum.
  • ConsenSys Diligence:la empresa ofrece auditorías de contratos inteligentes de Ethereum. También brindan un servicio automatizado que verifica los contratos de Ethereum Virtual Machine (EVM) en busca de errores comunes.

Determinar el alcance de la auditoría

Para poder tener mejores resultados y mayor claridad, tanto para el proyecto cripto como la empresa auditora, es necesario definir  tanto el contrato inteligente que se estará analizando, así como  las especificaciones del proyecto. Esto le ayudará al auditor a comprender los objetivos del proyecto dentro de la auditoría.

Este primer paso es fundamental porque les permite a los auditores comprender qué hace realmente el código y, con ello, podrán evaluar si funciona o no según el proyecto.

Algunos de los documentos que se podrían requerir son whitepaper, la especificación del código y documentación sobre la arquitectura del proyecto, las opciones de diseño y el proceso de construcción.

Teniendo definido esto el auditor elegirá las herramientas que usarán para escanear el código en busca de posibles vulnerabilidades y errores y las pruebas que pondrán a prueba el contrato. Algunas de estas herramientas incluyen Mythril, Oyente, Slither y Securify, estas pueden cambiar dependiendo del tipo de auditoría, sus herramientas de análisis y sus métodos.


Realización de pruebas

Los auditores deberán decidir si tener un enfoque manual o automatizado. No obstante, hasta el  momento, el enfoque manual es el que garantiza una mayor tasa de descubrimiento de errores y vulnerabilidades.

Algunas de pruebas que los auditores pueden llevar a cabo son

  • Pruebas unitarias: Los auditores ponen a prueba cada función del Smart Contract dependiendo precisamente de sus especificaciones y evalúan el comportamiento del mismo en busca de puntos débiles.
  • Pruebas de penetración: también conocidas como "ataques de sombrero blanco", el proceso incluye la recopilación de información sobre el objetivo antes de la prueba (reconocimiento), la identificación de posibles puntos de entrada, los intentos de intrusión (ya sea virtualmente o en vivo) y el informe de los resultados.
  • Análisis de dependencias: los auditores revisan las dependencias del contrato para asegurarse de que todas las bibliotecas utilizadas sean seguras y confiables.
  • Revisión manual de código: los auditores revisan manualmente el código para identificar posibles errores y vulnerabilidades que las herramientas de análisis de código pueden haber pasado por alto.
  • Pruebas de estrés: los auditores realizan pruebas de estrés para ver cómo se comporta el contrato en diferentes condiciones de carga y para asegurarse de que no se produzcan errores bajo condiciones extremas.

Informes

Realizadas las pruebas los auditores redactan dos informes, un informe inicial que se realiza una vez que los los auditores han examinado el código en el cual se redactan las fallas del código descubiertas junto con una serie de recomendaciones al equipo del proyecto para corregir dichos problemas.

Realizadas las correcciones pertinentes, se redacta un Informe final donde se aclara lo descubierto junto con las acciones realizadas para resolver el problema.


Vulnerabilidades más comunes

Las vulnerabilidades que se pueden presentar en un Smart Contract son:

  • Errores de programación: Al igual que en cualquier software, los errores de programación son una causa común de vulnerabilidades en los smart contracts. Incluso pequeños errores pueden ser explotados por los atacantes para acceder a vulnerabilidades en el código.
  • Ataques de reentrada: Este tipo de ataque se produce cuando un contrato inteligente se llama a sí mismo durante su ejecución, lo que permite que un atacante acceda al mismo varias veces y haga uso de los recursos limitados del contrato, lo que lleva a la ejecución inesperada del contrato.
  • Oportunidades de ejecución anticipada: el código del Smart Contract mal estructurado puede proporcionar una advertencia previa de las compras o ventas del mercado. Es decir, brinda información que le otorga una ventaja a aquél que la recibe para comerciar a su favor.
  • Poca eficiencia de Gas: El Gas es la comisión que se cobra por transar en la blockchain y algunos Smart Contracts no están optimizados de tal forma que reduzcan este gasto, y, si los costos son muy altos, es posible que el Smart Contract no se ejecute.
  • Parámetros no validados: Si los parámetros de entrada del contrato no se validan adecuadamente, puede permitir que un atacante introduzca información maliciosa o dañina, lo que puede llevar a la ejecución inesperada del contrato.
  • Problemas de seguridad de la red subyacente: Los smart contracts se ejecutan en una red blockchain subyacente, y las vulnerabilidades en esta red pueden afectar también a los contratos inteligentes.
  • Ataques de denegación de servicio (DoS): Los ataques de denegación de servicio pueden ser realizados mediante la realización de múltiples llamadas al contrato con datos maliciosos, lo que hace que el contrato consuma más recursos de los que debería y deje de funcionar.
  • Problemas de diseño: Un diseño de contrato inteligente defectuoso puede permitir que un atacante acceda a vulnerabilidades en el código, incluso si no hay errores de programación explícitos.

Pensamientos finales

Es importante tener en cuenta que los smart contracts son inherentemente complejos y pueden ser difíciles de entender completamente, lo que puede llevar a errores y vulnerabilidades. Por esta razón, las auditorías de seguridad son una parte importante del desarrollo de smart contracts y pueden ayudar a identificar y solucionar posibles vulnerabilidades antes de que se conviertan en problemas de seguridad graves, si un proyecto no ha realizado ninguna auditoría de su código, esto puede ser considerado como una gran señal de alerta o red flag.

La auditoría es la única herramienta que puede proporcionar cierta garantía a los usuarios de que el Smart Contract es seguro y que su dinero no se perderá.  La palabra “cierta garantía” es clave porque una auditoría no garantiza al 100% que no hayan problemas en el código, es precisamente por ello que, por lo general, los proyectos suelen hacer varias auditorías a lo largo del tiempo incluso con distintos auditores para reducir los riesgos.

Las auditorías de smart contracts son esenciales para garantizar la seguridad y confiabilidad de los contratos inteligentes, y deben ser una parte integral de cualquier proyecto de blockchain o criptomoneda.

Te podría interesar: