Lista de verificación de seguridad de los contratos inteligentes
Lista de verificación de desarrollo de contratos inteligente
Le indicamos un proceso altamente eficiente que le recomendamos seguir cuando escriba sus contratos inteligentes.
Compruebe cualquier problema de seguridad conocido:
- Revisa tus contratos con Slither(opens in a new tab). Tiene más de 40 detectores integrados para vulnerabilidades comunes. Ejecútelo en cada comprobación con un nuevo código y asegúrese de obtener un informe limpio (o utilice el modo de cribado para silenciar ciertos problemas).
- Revise sus contratos con Crytic(opens in a new tab). Comprueba 50 problemas que Slither no revisa. Crytic puede ayudar a que su equipo se mantenga a la cabecera, al descubrir fácilmente problemas de seguridad en Pull Requests en GitHub.
Tenga en cuenta las características especiales de su contrato:
- ¿Sus contratos pueden mejorarse? Revise su código de mejora para errores con
slither-check-upgradeability
(opens in a new tab) o Crytic(opens in a new tab). Hemos documentado 17 formas en que las actualizaciones pueden fallar. - ¿Sus contratos pretenden ajustarse a los ERC? Compruébalos con
slither-check-erc
(opens in a new tab). Esta herramienta identifica instantáneamente las desviaciones de seis especificaciones comunes. - ¿Se integra con tókenes de terceros? Revise nuestra lista de verificación de integración de tókenes antes de depender de contratos externos.
Inspeccione visualmente las características de seguridad críticas de su código:
- Revise la impresión en consola heredance-graph(opens in a new tab) de Slither. Evite problemas de operaciones en paralelo involuntarias y de linearización C3.
- Revise la impresion en consola function-summary(opens in a new tab) de Slither. Informa de la visibilidad de las funciones y los controles de acceso.
- Revise la impresion en consola vars-and-auth(opens in a new tab) de Slither. Informa de los controles de acceso sobre las variables de estado.
Documente propiedades de seguridad críticas y utilice generadores de pruebas automatizados para evaluarlas:
- Aprende a documentar propiedades de seguridad para su código. Es difícil al principio, pero es la actividad más importante para lograr un buen resultado. También es un requisito previo para utilizar cualquiera de las técnicas avanzadas en este tutorial.
- Defina propiedades de seguridad en Solidity, para su uso con Echidna(opens in a new tab) y Manticore(opens in a new tab). Concéntrese en su máquina de estado, controles de acceso, operaciones aritméticas, interacciones externas y conformidad con los estándares.
- Defina las propiedades de seguridad con la API Python de Slither. Concéntrese en la herencia, dependencias variables, controles de acceso y otras cuestiones estructurales.
- Ejecute sus pruebas de propiedad en cada comando commit con Crytic(opens in a new tab). Crytic puede consumir y evaluar pruebas de propiedad de seguridad para que todos los miembros de su equipo puedan ver fácilmente que pasan por GitHub. Las pruebas fallidas pueden bloquear los commits.
Por último, tenga en cuenta los problemas que las herramientas automatizadas no pueden encontrar fácilmente:
- Falta de privacidad: todos los demás pueden ver sus transacciones mientras están en cola de espera.
- Transacciones en ejecución frontal
- Operaciones criptográficas
- Interacciones arriesgadas con componentes DeFi externos
Pedir ayuda
El horario de oficina de Ethereum(opens in a new tab) funciona cada martes por la tarde. Estas sesiones individuales de una hora de duración son una oportunidad para hacernos cualquier pregunta que tenga sobre la seguridad, solucionar problemas usando nuestras herramientas y obtener comentarios de expertos sobre su enfoque actual. Le ayudaremos a trabajar con esta guía.
Únase a nuestro Slack: Pirateando el imperio(opens in a new tab). Siempre estamos disponibles en los canales #crytic y #ethereum si tiene alguna duda.
Última edición: @sumitvekariya(opens in a new tab), 29 de agosto de 2024