Slither mejora la seguridad de tus smart contracts


A medida que la tecnología blockchain continúa transformando múltiples sectores, los contratos inteligentes se han convertido en una herramienta fundamental para automatizar acuerdos y transacciones confiables. Sin embargo, la seguridad de estos contratos sigue siendo una preocupación crítica, ya que cualquier vulnerabilidad en su implementación podría terminar con terribles consecuencias. Aquí es donde entra en juego Slither, una herramienta diseñada para mejorar la seguridad de los contratos inteligentes y ayudarnos a identificar y resolver posibles problemas.

¿Qué es Slither?

Slither es una herramienta crucial en el ámbito de la seguridad para contratos inteligentes. Específicamente diseñada para realizar análisis estático del código escrito en Solidity, esta herramienta es capaz de identificar vulnerabilidades, errores y malas prácticas conocidas que podrían amenazar la seguridad de los contratos.

Proporciona informes detallados sobre los problemas detectados, dotando a desarrolladores y auditores con una visión precisa de los posibles riesgos antes de llegar a producción.

La integración Slither en pipelines de CI/CD facilita la automatización del análisis de seguridad, contribuyendo así a un desarrollo más sólido y seguro.

Características y funcionalidades de Slither

  • Análisis de vulnerabilidades: Slither utiliza un conjunto de reglas predefinidas para buscar posibles vulnerabilidades en el código. Puede detectar problemas como el desbordamiento de enteros, condiciones de carrera, problemas de acceso a la información y muchas otras vulnerabilidades comunes.

  • Identificación de debilidades: Además de buscar vulnerabilidades específicas, también puede identificar debilidades generales en el código, como redundancia, ineficiencia o malas prácticas de programación. Esto nos ayuda a mejorar la calidad y la eficiencia de los smart contracts.

  • Integración con herramientas de desarrollo: Slither se puede integrar fácilmente en el flujo de trabajo de desarrollo de smart contracts. Puede ser utilizado desde la línea de comandos, como una biblioteca en otro programa o incluirse en nuestro pipeline de desarrollo.

  • Informes detallados: Slither proporciona informes detallados sobre las vulnerabilidades y debilidades encontradas en el código. Estos informes incluyen descripciones de los problemas, ubicaciones exactas en el código fuente y recomendaciones para corregirlos. Esto facilita a los desarrolladores la tarea de corregir los problemas identificados.

Informe de slither con el print de human summary

Instalación

Lo primero que vamos a necesitar para utilizar Slither es tener Docker en nuestro equipo.

Una vez tengamos instalado Docker, en nuestro terminal escribimos el siguiente comando para traernos la imagen de trailofbits/eth-security-toolbox.

docker pull trailofbits/eth-security-toolbox

Una vez descargada la imagen, nos dirigimos a la carpeta del proyecto que queramos analizar y vamos a compartir nuestra carpeta /contracts con docker, para que dentro del contenedor pueda realizar el análisis.

docker run -it --rm -v .:/home/project trailofbits/eth-security-toolbox -c "cd /home/project && exec bash"

Este comando ejecuta un contenedor Docker basado en la imagen trailofbits/eth-security-toolbox y nos lanza una terminal donde poder interactuar con el contenedor. El directorio actual del host se monta en el directorio /home/project del contenedor, esto permite acceder a los archivos y carpetas del host desde el contenedor. Una vez que se detenga la ejecución del contenedor, se eliminará automáticamente.

Dentro de esta terminal tenemos que realizar unas configuraciones, ya que la versión de solc puede haber cambiado y tus contratos tengan una versión superior, por lo que vamos a configurarlo.

solc-select install 0.8.18

solc-select use 0.8.18

Una vez configurada la versión de solc correspondiente podemos lanzar slither.

Antes de nada nos tenemos que dirigir a la carpeta en la que hemos guardado los contratos. /home/project/

Lanzamos el comando de slither para que analice nuestros contratos.

slither contracts/

Informe de slither al analizar un contrato

Ahora es necesario que verifiques cada incidencia y valorar si es un falso positivo o es un error a solucionar.

Triage mode

El “triage mode” es un parametro de Slither que nos permite gestionar de forma interactiva los resultados.

Al activarlo, te pregunta si deseas ocultar la vulnerabilidad para futuras ejecuciones. Las decisiones se guardan en un archivo llamado slither.db.json. Esto permite que en futuros análisis solo se muestren las nuevos vulnerabilidades o aquellos que aún no hayan sido resueltas

slither contracts/ --triage-mode

Conclusiones

La seguridad de los smart contracts es de vital importancia para garantizar la integridad y confiabilidad de los contratos. Slither se presenta como una herramienta muy necesaria para mejorar la seguridad de los smart contracts al permitirnos detectar y corregir vulnerabilidades y debilidades en el código.

Al automatizar el análisis estático y proporcionar informes detallados, nos ayuda a ahorrar tiempo, mejorar la calidad del código y fomenta buenas prácticas de seguridad.