Logotipo de Zephyrnet

Análisis de las prácticas de seguridad de los contratos inteligentes por parte de los desarrolladores 

Fecha:

Tiempo de lectura: 5 minutos

Desde que DeFi comenzó a dispararse, ha surgido una nueva ola de ataques de contratos inteligentes que conducen a la pérdida de cientos de millones de dólares. Está claro a partir de las crecientes cifras de piratería que la seguridad es fundamental para los contratos inteligentes. 

La mayoría de las vulnerabilidades se pueden evitar en la etapa de desarrollo de los contratos si se siguen las mejores prácticas. Los proyectos DeFi a veces tienen prisa por llegar al mercado, por lo que la seguridad es la segunda prioridad. Hay una diferencia entre los desarrolladores en etapa inicial y los desarrolladores experimentados. Un desarrollador experimentado conoce las mejores prácticas de seguridad, herramientas y conocimientos sobre vulnerabilidades comunes y puede identificar problemas de seguridad en la etapa inicial de desarrollo. 

Los contratos inteligentes son la representación digital de acuerdos contractuales en código. La ejecución de este código se verifica y distribuye con la ayuda de nodos de red en una red blockchain. 

En este artículo, cubriremos el factor humano detrás de la seguridad y privacidad de los contratos inteligentes y analizaremos por qué los desarrolladores todavía se consideran el "eslabón más débil".

¿Qué son las vulnerabilidades de los contratos inteligentes?

Dado que los contratos inteligentes se ejecutan en redes distribuidas y sin permiso, provocan vulnerabilidades debido a fallas en la ejecución del contrato inteligente. Como los fondos están bloqueados en estos contratos, se convierte en un objetivo muy atractivo para los piratas informáticos, y atacar con éxito puede hacer que los piratas informáticos se queden con los fondos directamente de los contratos. 

Algunas vulnerabilidades comunes en los contratos inteligentes basados ​​en EVM incluyen reentrada, desbordamiento de enteros y control de acceso sin restricciones. Para explotar un contrato con el reingreso, se hace una llamada al contrato externo; luego invoca una devolución de llamada de reentrada. Las operaciones de bajo nivel como "enviar", "transferir" y "llamar" son alarmantes y esto puede generar vulnerabilidades si las excepciones no se manejan con cautela. 

Las innovaciones en el espacio Blockchain están evolucionando continuamente, lo que resulta en fallas de diseño en los contratos inteligentes. Los desarrolladores que crean aplicaciones descentralizadas tienen que lidiar con las actualizaciones en las plataformas en las que están trabajando. Por lo tanto, las fallas de software comunes como el control de acceso, el cálculo incorrecto, la condición de carrera y varias otras pueden intensificarse en las plataformas de cadena de bloques. 

Herramientas de seguridad de contratos inteligentes

Se han adoptado varias prácticas en diferentes niveles del ciclo de vida del desarrollo de contratos inteligentes para garantizar y mejorar la seguridad de los contratos inteligentes. 

Herramientas de prueba de contratos inteligentes: Se han desarrollado varias herramientas para analizar el código fuente del contrato y buscar problemas de seguridad conocidos, como reingreso, desbordamiento, etc. Algunas de las herramientas más utilizadas son Oyente, Maian, MadMax y Vandal. 

Entornos de desarrollo y pruebas: Truffle es el marco de desarrollo popular para contratos inteligentes. Los desarrolladores pueden escribir pruebas unitarias y de integración con esto. Hardhat es otro entorno de desarrollo que ayuda a ejecutar pruebas, verificar el código en busca de errores e interactuar con contratos inteligentes; se ejecuta en una red de desarrollo. Facilita complementos para cubrir el código, medir el gas utilizado por prueba unitaria, verificar automáticamente los contratos en Etherscan, etc. El remix es otra suite de referencia para los desarrolladores; se usa ampliamente debido al IDE del navegador que admite pruebas, desarrollo e implementación de contratos inteligentes. 

Auditorías de código: La auditoría de contratos inteligentes ayuda a mitigar los riesgos asociados con la dAapp. Es preferible realizar auditorías de contratos inteligentes cuando los contratos están en fase de prueba. Alguno herramientas utilizadas para la auditoria son Surya, mitriloy MitoX. Si bien la auditoría automatizada no es suficiente para reducir los riesgos asociados con los contratos, se sugiere realizar auditorías manuales de terceros de una empresa confiable como QuillAudits. Durante una auditoría, las vulnerabilidades se detectan de tres formas principales:

  1.  Funciones de extracción de código malicioso y coincidencia semántica en el código fuente;
  2.  Siguiendo un enfoque matemático para verificar la integridad de un sistema, aquí el auditor examina todas las pruebas de entrada posibles frente a todos los casos de prueba potenciales que podrían ocurrir;
  3.  Creación de un gráfico de flujo de control con unidades lógicas del contrato a través del cual el auditor atraviesa todas las rutas de código para inspeccionar fallas de diseño lógico

Desarrollo seguro de contratos inteligentes

Si observamos de cerca las recientes explotaciones de contratos inteligentes, se produjo una mayor cantidad de vulnerabilidades debido a los errores de los desarrolladores. Por lo tanto, evitar lagunas en los contratos inteligentes significa un desarrollo seguro de contratos inteligentes teniendo en cuenta a los usuarios durante el ciclo de vida del desarrollo. Muchos desarrolladores en etapa inicial no consideran la seguridad como el factor principal y carecen de conocimiento relacionado con los recursos y las herramientas para la seguridad de los contratos inteligentes. 

Perspectivas de seguridad de contratos inteligentes

La mayoría de los desarrolladores no mantienen la seguridad como la máxima prioridad al desarrollar contratos inteligentes porque:

  1. Se les pide que entreguen el proyecto lo antes posible. Por lo tanto, la seguridad se vuelve secundaria.
  2. A veces los proyectos bifurcan otros proyectos populares 
  3. Alguien del equipo realiza la auditoría.

Aparte de eso, generalmente escuchamos a los desarrolladores decir que Solidity tiene algunas limitaciones inherentes para mantener la seguridad. Es diferente del lenguaje convencional ya que las funciones no están definidas explícitamente. También hay dificultades para llevar a cabo las manipulaciones adecuadas de cadenas y matrices porque Solidity carece de soporte directo de lenguaje/biblioteca.

Pasos que toman los desarrolladores para la seguridad de los contratos inteligentes.

Los desarrolladores que se preocupan por la seguridad de los contratos inteligentes siguen varios métodos en la etapa de desarrollo para mitigar los riesgos, como:

  1. Leer entre líneas el código y pensar desde la perspectiva del atacante. 
  2. Dibujar un diagrama de flujo para analizar el flujo de información y ver los puntos donde existen posibilidades de respaldo; por lo tanto, tener una representación gráfica puede resolver muchos problemas lógicos. 
  3. Uso de herramientas de seguridad de contratos inteligentes, algunas de las cuales mencionamos anteriormente 

Algunas limitaciones de las herramientas de seguridad de contratos inteligentes no son triviales, ya que después de implementar el contrato, debe escribir un constructor y luego probar el contrato. Aparte de esto, ninguna herramienta se puede integrar con el proceso de desarrollo; tienes que escribir código en un IDE y luego usar otra herramienta para probarlo. Será fácil para los desarrolladores probar el código en el compilador en lugar de usar cualquier otra herramienta. 

También hemos visto que los desarrolladores con conocimientos previos sobre contratos inteligentes y auditoría tienden a revisar mejor el código y son más conscientes de las mejores prácticas de seguridad. También ayuda a evitar vulnerabilidades conocidas en el contrato. Muchos desarrolladores nuevos subestiman la seguridad y no la consideran una prioridad porque, en su mayoría, implementan sus proyectos en redes de prueba donde los errores y lagunas en los contratos no tienen un impacto real. 

Conclusión

Las percepciones y prácticas de seguridad de los desarrolladores de contratos inteligentes se basan principalmente en auditorías externas para garantizar la seguridad de sus proyectos. Ya que evalúan la seguridad manualmente y muchas veces carecen de recursos y herramientas. Con el reciente aumento de los proyectos DeFi y los ataques de seguridad asociados, los desarrolladores novatos deben contar con el apoyo de herramientas para mitigar los riesgos de antemano. 

4 Vistas

punto_img

Información más reciente

punto_img