Slither: la cornucopia de un auditor
¡Saludos, queridos lectores! Hoy nos gustaría comenzar una serie de artículos sobre lo que llamamos la metodología de auditoría. En primer lugar, queremos decir que en esta serie nos centraremos solo en aquellos aspectos que pueden ser realmente útiles para la auditoría y la piratería de recompensas de errores y que no se describen en ninguna parte.
Podemos decir con confianza que estos consejos se pueden leer públicamente en algunos lugares, ¡y nuestro blog es uno de esos lugares! Síganos ahora mismo para no perderse el nuevo artículo y ¡ comencemos!
En su trabajo, los auditores usan diferentes herramientas y métodos, hay muchos. Basta con mirar esta selección y por separado esta herramienta ultraespecífica ; no hay duda de que hay tantos de ellos. De acuerdo con esta investigación , se observa un mayor grado de colaboración (por ejemplo, para los esfuerzos de mantenimiento) entre los usuarios de las herramientas que entre los de los repositorios de aplicaciones, pero hay algunas herramientas que son una especie de estándar de oro, las discutiremos primero. a saber, sobre Slither, SmartCheck y, por separado, discutir fuzzing con Echidna.
Primero, algunas palabras sobre nuestra herramienta, SmartCheck, que puede servir como refuerzo de lo que hablaremos a continuación. Incluso en su forma original, muestra buenos resultados, y el segundo lugar en el artículo de ToB no está mal para una herramienta que dejamos de admitir hace tres años. Haremos una comparación de rendimiento por separado de las dos herramientas en el futuro. Sin embargo, pasemos a Slither.
Confiamos en Slither, una herramienta de análisis estático de Trail of Bits para mantener la calidad de nuestras auditorías. Teniendo en cuenta la facilidad de uso, es una buena idea probarlo.
Además de sus excelentes capacidades de análisis, también incluye un montón de impresoras que resumen diferentes aspectos del contrato de forma digerible. Uno puede usarlos para construir rápidamente un modelo de contrato mental antes de profundizar en el código.
Con las impresoras, se puede obtener un resumen del contrato, verificar la herencia y el diseño de almacenamiento del contrato, y ver los modificadores utilizados y los controles implementados. Además, algunas impresoras pueden imprimir en formato *.dot, para que pueda ver el gráfico correctamente. Sin embargo, varias impresoras pierden su valor para proyectos más complejos ya que su producción se vuelve inmanejable.
Otra cosa interesante es que cuenta con una API Python que permite instrumentar el motor de análisis estático. Esto significa que el motor se puede utilizar para obtener información específica de los contratos de forma automática y, en general, se puede utilizar para satisfacer las necesidades del usuario. ¡También puede explorar enfoques de aprendizaje automático (ML) para mejorar automáticamente el rendimiento de Slither a través de Slither-simil !
Es por eso que obtenemos sus resultados en todos los proyectos. Volviendo a lo que hablábamos, queremos que este artículo sea útil principalmente para aquellos que desean iniciar un viaje hacia la seguridad de Web3.o, por lo que a continuación verá una especie de lista de consejos con los que puede lograr resultados sorprendentes en ¡tu negocio!
❕ Importante:
- Muy pocos desarrolladores siguen estrictamente los estándares de seguridad según este estudio , y no puede dejar de ser alarmante.
- Es por eso que nunca debe olvidarse de la seguridad cuando prepara su lugar de trabajo: nuestros empleados cumplen claramente las reglas (2) (3) y, por lo tanto, no ocurren accidentes.
- Slither no es compatible con algunas funciones de Solidity que se usan con menos frecuencia y puede fallar incluso con un contrato de alta calidad. Recomendamos ajustar las líneas problemáticas hasta que la herramienta funcione correctamente. Tenga en cuenta que podría afectar la salida si los números de línea cambian. Según nuestra experiencia, Slither proporciona valor suficiente para aceptar estas restricciones de estilo de código.
1. Make sure there is a python version 3.6+
python3 --version
2. Install Slither via pip:
pip3 install slither-analyzer
3. Make sure you are using the latest version of Slither before you run it. You can check the slither repository on github for release versions.
slither --version
- github.com/crytic/slither#cómo-instalar
set up a new environment: python3 -m venv /path/to/venv
activate the environment: source /path/to/venv/bin/activate
Por lo general, ejecutamos Slither en todos los archivos del proyecto (excepto las dependencias de npm) y guardamos los resultados en json, que luego se convierte en una tabla csv. Para hacer esto en la raíz del proyecto, ejecute:
slither . –-filter-path “node_modules” --json result.json
Other examples:
- slither .
- slither path/to/my_contract.sol
- slither . --exclude-informational
- Slither no se ejecuta en un archivo separado que tenga importaciones del entorno de desarrollo (p. ej., importaciones de módulos truffle, hardhat npm o importaciones de brownie pm). En este caso, debe resolver manualmente las dependencias: debe corregir las importaciones en rutas absolutas o relativas en el archivo de destino.
- En el caso de las dependencias del paquete brownie, vale la pena instalar el mismo módulo a través de npm y resolver las dependencias como se describe anteriormente. No use el clon brownie pm, ya que a veces no incluye algunos archivos.
- Puede agregar un archivo slither.config.json para filtrar archivos o excluir ciertos detectores. Consulte la documentación de Slither para obtener una lista de detectores o vea este buen video antiguo y este tutorial.
- Ejecutar en cada archivo por separado. Lo más probable es que el problema no esté en todos los archivos.
- Encuentre un problema similar en problemas de deslizamiento y aplique una solución si la hay. "Votar a favor" es un problema (puede ponerle un emoji) si no se resuelve, para que los desarrolladores le presten atención.
Los complementos son uno de los aspectos más importantes para configurar y ejecutar correctamente Slither porque aumentan significativamente la funcionalidad. Además, ten en cuenta que es la forma más cómoda de añadir tus propios detectores. A continuación se presentan los conceptos básicos para trabajar con ellos. Trate de entender la analogía del trabajo y construya su propia metodología basada en esto.
A) Guía del complemento de verificación de capacidad de actualización :
B) Consulte la guía del complemento ERC:
Ejecute si desea verificar el cumplimiento del contrato con uno de los EIP especificados:
- EIP20
- EIP223
- EIP777
- EIP721
- EIP165
- EIP1155
- EIP1820
- Si “ Contrato no encontrado: nombre. ”: debe cambiar el nombre del contrato para que el nombre en el proyecto sea único.
- Puede agregar un archivo slither.config.json para filtrar archivos o excluir ciertos detectores. Consulte la documentación de slither para obtener una lista de detectores.
slither-read-storagerecupera ranuras de almacenamiento del código fuente mediante el uso de información del análisis de tipo subyacente de Slither (por ejemplo, si una matriz es fija o dinámica) para informar los cálculos de ranura. La herramienta puede recuperar las ranuras de almacenamiento de una sola variable o de contratos completos, y los valores de almacenamiento se pueden recuperar proporcionando un Ethereum RPC.
Verificar:
- blog.trailofbits.com/2022/07/28/shedding-smart-contract-storage-with-slither
- 0xalpharush.github.io/deslizándose por el bosque oscuro
Ejemplo de comando:
slither-read-storage Privacy.sol 0xFdaF948A66903a0050ed051508c7C26D137E76C4 --variable-name data --rpc-url https://rinkeby.infura.io/v3/{project-id}
IV.conclusión
En conclusión, nos gustaría decir que esperamos que este artículo haya sido informativo y útil para usted. En futuros artículos, escribiremos sobre las diferencias entre nuestros SmartCheck y Slither favoritos: ¡las diferencias son bastante significativas!
Lo más importante que queríamos decirte y mostrarte es que un instrumento nuevo no significa bueno y un instrumento viejo no significa malo. Se trata de saber cómo usarlo y estar dispuesto a buscar algo nuevo. Espero que te hayamos interesado en eso.
¿Qué instrumentos debemos revisar? ¿Sobre qué te interesaría leer? ¡Deje sus comentarios, estaremos encantados de responderlos y las mejores respuestas y preguntas pueden incluirse en el próximo artículo!
Por cierto, ahora hay algunas vacantes, así que si su proyecto necesita una auditoría, no dude en escribirnos , visite nuestra página de informes públicos aquí .

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































