Graduaci贸n

1

Proyectos desarrollados por los estudiantes

Introducci贸n al Ethereum Developer Program

2

驴C贸mo convertirse en blockchain developer?

3

驴Qu茅 es el Ethereum Developer Program?

4

Ethereum Developer Program: Plan de Contenido

5

Ethereum Developer Program: Gu铆a de estudio

Semana 1: Importancia del Manejo de Memoria

6

Importancia del Manejo de Memoria

7

Importancia del Manejo de Memoria: Actividades

8

C贸mo se almacenan los datos en Ethereum

Semana 2: Web3-react

9

Salto de Web2 a Web3: React

10

Salto de Web2 a Web3: Actividades

11

Web3 Stack

12

驴Qu茅 es Web3-React y c贸mo usarlo en tu pr贸ximo proyecto?

Semana 3: Ethereum Virtual Machine y Criptograf铆a

13

Infraestructura y Funcionamiento de la Ethereum Virtual Machine

14

Fundamentos de Criptograf铆a y EVM

15

Criptograf铆a y Funcionamiento de la Ethereum Virtual Machine: Actividades

Semana 4: Creando tu primer Smart Contract

16

Crea tu primer smart contract

17

Crea tu primer smart contract: Actividades

Semana 5: Solidity

18

Aprendiendo Solidity desde cero

Superando la primera etapa del Ethereum Developer Program

19

RETO: NFT din谩micos con datos Off Chain

Semana 6: Tokens y Tokenizaci贸n

20

Tokens y Tokenizaci贸n

Semana 7: Testing Tools y Despliegue

21

Testing Tools y Despliegue: Actividades de la semana

22

Testing Tools y Despliegue

Semana 9: Auditor铆a y Seguridad de Smart Contracts

23

Auditor铆a y Seguridad de Smart Contracts

24

Auditoria y Seguridad de Smart Contracts: Resumen y actividades

Semana 10: Integraciones en Web3: Web3.js vs. Ether.js

25

Integraciones en Web3: Web3.js Vs Ether.js

Semana 11: Monetizaci贸n para Blockchain Developers

26

Monetizaci贸n para Blockchain Developers

Recursos Adicionales

27

Consideraciones de seguridad para smart contracts

28

Memory vs. Storage en Solidity

Consideraciones de seguridad para smart contracts

27/28

Lectura

Muchos de los ataques que ocurren en los proyectos web3 se podr铆an prevenir teniendo mayor 茅nfasis en la seguridad de los contratos inteligentes.

Por lo general, los atacantes encuentran y explotan deficiencias en el ciclo de desarrollo de software: la serie de pasos que se llevan a cabo para lanzar un nuevo c贸digo en el mundo, desde el dise帽o hasta la implementaci贸n y el mantenimiento. Si los protocolos adecuados y las mejores pr谩cticas estuvieran disponibles de forma m谩s f谩cil, es posible que ocurrir铆an menos incidentes de seguridad.

El prop贸sito de este post es resumir los fundamentos b谩sicos de seguridad que los desarrolladores y equipos de seguridad de web3 deben tener en cuenta al dise帽ar, desarrollar y mantener un sistema de contratos inteligentes seguros. El marco que se presenta analiza 8 categor铆as principales de consideraciones de seguridad, desde el modelado de amenazas hasta la preparaci贸n de respuesta ante emergencias, que deben implementarse a lo largo del ciclo de vida del desarrollo de software.

Antes de revisar las consideraciones de seguridad es importante entender las fases de desarrollo de un ciclo de software. Podemos describir 5 fases:

  • A) Dise帽o: se describen las funciones y operaciones deseadas del sistema, incluidos puntos de referencia importantes y propiedades invariables.
  • B) Desarrollo: los desarrolladores escriben el c贸digo del sistema.
  • C) Prueba y revisi贸n: se re煤nen todos los m贸dulos en un entorno de prueba y los eval煤an para verificar su correcto funcionamiento, escala y otros factores.
  • D) Despliegue: el sistema creado se lleva a producci贸n.
  • E) Mantenimiento: los desarrolladores eval煤an y modifican el sistema para garantizar que est茅 realizando las funciones previstas.

El ciclo del desarrollo de software no siempre sigue necesariamente un camino lineal: las categor铆as pueden superponerse o extenderse a fases adicionales en la pr谩ctica. Los pasos pueden repetirse para cada lanzamiento. Y es posible que algunas tareas, como las pruebas y las revisiones de seguridad, deban ejecutarse en todo momento.

Ahora examinemos con mayor detalle estas fases y las consideraciones de seguridad para cada una de ellas. Para compartir estas mejores pr谩cticas de la manera m谩s simple y concreta, y que sean m谩s f谩cil de comprender y aplicar, usaremos las preguntas: 驴qu茅?, 驴por qu茅?, 驴c贸mo?

Fase de dise帽o

#1: Considera el modelado de amenazas y el dise帽o de seguridad

  • 驴Qu茅?: Es importante implementar una pr谩ctica expl铆cita de identificaci贸n y priorizaci贸n de amenazas potenciales a un sistema desde el comienzo del ciclo de desarrollo: los desarrolladores de contratos inteligentes deben identificar cualquier control de seguridad para implementar en el desarrollo, as铆 como cualquier amenaza que deba verificarse en las pruebas, auditor铆as y seguimiento. Todas las suposiciones de seguridad, incluido el nivel esperado de sofisticaci贸n y los medios econ贸micos de un atacante, deben definirse y articularse claramente en la fase de dise帽o.
  • 驴Por qu茅?: Si bien es tentador para los desarrolladores centrarse 煤nicamente en los usos previstos de un contrato o protocolo inteligente, este 煤nico enfoque puede dejarlos con puntos ciegos que los atacantes pueden explotar y explotar谩n.
  • 驴C贸mo?: Sigue las pr谩cticas de modelado de amenazas conocidas. Si un equipo de desarrollo no tiene experiencia interna en seguridad, entonces debe contratar a consultores de seguridad al principio de la fase de dise帽o. Adopte una mentalidad de 鈥渁tacante鈥 al dise帽ar el sistema y asuma que cualquier individuo, m谩quina o servicio puede verse razonablemente comprometido.

Fase de desarrollo

#2: Considera la administraci贸n y el control de acceso

  • 驴Qu茅?: Implementa controles de acceso que restrinjan la capacidad de llamar a funciones especiales que realizan tareas administrativas, como actualizar contratos y establecer par谩metros especiales, a cuentas privilegiadas y contratos inteligentes. Siga el 鈥減rincipio del m铆nimo privilegio鈥: que cada actor solo debe tener la cantidad m铆nima de acceso requerida.
  • 驴Por qu茅?: El mantenimiento de protocolos a trav茅s de procesos de actualizaci贸n y gobernanza permite a los desarrolladores mejorar el protocolo agregando nuevas funciones, solucionando problemas de seguridad y abordando condiciones cambiantes. Si la capacidad de realizar actualizaciones no se controla adecuadamente, esto puede constituir una vulnerabilidad de seguridad cr铆tica.
  • 驴C贸mo?: Configura una billetera multifirma (multisig) o un contrato DAO que administrar谩 los cambios en nombre de la comunidad de manera transparente. Los cambios deben someterse a un proceso de revisi贸n exhaustivo, junto con un bloqueo de tiempo (promulgaci贸n retrasada intencionalmente con la capacidad de cancelar) para garantizar que se pueda verificar su correcci贸n y revertirse en caso de un ataque de gobierno. Aseg煤rate de que las claves privilegiadas se almacenen y se acceda de forma segura en billeteras de autocustodia o servicios de custodia seguros.

#3: Considera plantillas e integraciones reusables y probadas

  • 驴Qu茅?: Siempre que sea posible, utiliza los est谩ndares de contratos inteligentes existentes (p. ej., contratos OpenZeppelin) y eval煤a los supuestos de seguridad de las integraciones de protocolo que se podr铆a necesitar realizar con los protocolos existentes.
  • 驴Por qu茅?: El uso de est谩ndares e implementaciones existentes, probados y auditados por la comunidad, contribuye en gran medida a reducir los riesgos de seguridad. Evaluar los riesgos de las integraciones de protocolo te ayuda a desarrollar comprobaciones de seguridad para protegerse contra ataques a componentes externos, como la manipulaci贸n de or谩culos.
  • 驴C贸mo?: Importa bibliotecas e interfaces de contratos de confianza cuya seguridad se haya auditado; 隆Despu茅s de todo, el objetivo de cripto y web3 es el uso, la reutilizaci贸n y la composici贸n de c贸digo abierto! Aseg煤rate de documentar las dependencias de tu contrato y sus versiones en el c贸digo base y minimiza tu espacio de c贸digo donde puedas; por ejemplo, importa subm贸dulos espec铆ficos de grandes proyectos en lugar de todo. Comprende sus exposiciones para que pueda monitorear los ataques a la cadena de suministro. Utiliza interfaces oficiales para llamar a protocolos externos y aseg煤rate de tener en cuenta los posibles riesgos de integraci贸n. Supervisa las actualizaciones y las divulgaciones de seguridad de los contratos que has reutilizado.

Fase de prueba y revisi贸n

#4: Considera hacer pruebas y crear documentaci贸n

  • 驴Qu茅?: Crea una documentaci贸n clara y completa del c贸digo y configura un conjunto de pruebas r谩pido, completo y f谩cil de ejecutar. Siempre que sea posible, configura entornos de prueba en redes de prueba o mediante simulaci贸n de red principal para una experimentaci贸n m谩s profunda.
  • 驴Por qu茅?: Escribir suposiciones para el comportamiento esperado de una base de c贸digo ayuda a garantizar que se aborden los riesgos en los modelos de amenazas y que los usuarios y auditores externos entiendan las intenciones del equipo de desarrollo. La creaci贸n de un conjunto de pruebas para el c贸digo ayuda a probar, o refutar, las suposiciones de desarrollo y fomenta un pensamiento m谩s profundo sobre los modelos de amenazas. Este conjunto de pruebas debe incluir pruebas de dise帽os de mecanismos que verifiquen los tokenomics de un proyecto en escenarios de mercado extremos, junto con pruebas unitarias y pruebas de integraci贸n.
  • 驴C贸mo?: Implementa un marco de pruebas y verificadores de seguridad conocidos, como Hardhat, Mythril, Slither, Truffle, etc., que brindan diferentes t茅cnicas de prueba, como fuzzing, verificaci贸n de propiedades o incluso verificaci贸n formal. Documenta tu c贸digo, ampliamente, utilizando los comentarios de NatSpec para especificar los efectos secundarios, los par谩metros y los valores de retorno previstos. Produce documentaci贸n en vivo utilizando herramientas de generaci贸n de documentaci贸n junto con explicaciones de dise帽o de alto nivel.

#5: Considera revisiones internas y auditorias de seguridad

  • 驴Qu茅?: Dedica tiempo a encontrar errores a trav茅s de revisiones de c贸digo internas y externas.
  • 驴Por qu茅?: Alejarse del desarrollo de funciones para centrarse en las preocupaciones de seguridad les da a los desarrolladores tiempo para encontrar problemas potencialmente oscuros. Las auditor铆as externas pueden ser especialmente 煤tiles en esto, ya que pueden aportar perspectivas y conocimientos externos que el equipo de desarrollo no tiene.
  • 驴C贸mo?: En un momento apropiado en el desarrollo del proyecto, programa una congelaci贸n de funciones para dar tiempo a una revisi贸n interna, seguida de una auditor铆a externa. Esto debe tener lugar antes de cualquier implementaci贸n y actualizaci贸n en vivo. Consulta las gu铆as de ConsenSys, Nascent, OpenZeppelin y Trail of Bits, que brindan a los desarrolladores listas de verificaci贸n de consideraciones, incluido el tiempo, para cualquiera que se prepare para una auditor铆a. Aseg煤rate tambi茅n de revisar las transacciones de implementaci贸n para asegurar que utilicen la versi贸n del c贸digo auditado y tengan los par谩metros adecuados, especialmente al actualizar el software.

Fases de despliegue y mantenimiento

#6: Considera incentivar la participaci贸n de la comunidad

  • 驴Qu茅?: Crea programas que fomenten la participaci贸n de la comunidad en la mejora de la seguridad en bases de c贸digo de c贸digo abierto. Una forma de hacerlo es creando recompensas por errores. Otra forma es alentar a la comunidad a desarrollar bots de detecci贸n de monitoreo de protocolo.
  • 驴Por qu茅?: Los equipos de desarrollo pueden beneficiarse enormemente al aprovechar un conjunto m谩s amplio de conocimientos y experiencia. (Nuevamente, tambi茅n el punto donde el c贸digo abierto ayuda en criptograf铆a). En particular, tales programas pueden ayudar a generar entusiasmo por un proyecto, esencialmente convirtiendo a la comunidad y a los hackers de sombrero blanco en evangelistas. Tambi茅n pueden ayudar a convertir a los posibles atacantes en activos de seguridad al proporcionar v铆as para que los piratas inform谩ticos se conviertan en defensores.
  • 驴C贸mo?: Usa plataformas de recompensas por errores (como Code4rena, HackenProof, Immunefi o Secureum) para financiar sistemas de recompensas con recompensas basadas en la gravedad que incentiven a los piratas inform谩ticos expertos a revelar vulnerabilidades de manera segura. Los equipos de desarrollo pueden alentar a las comunidades de sus protocolos a aprovechar los enfoques tradicionales y nativos de web3 para incentivar las recompensas de errores y para que los participantes se beneficien potencialmente al mejorar la seguridad en una situaci贸n en la que todos ganan.

#7: Considera el monitoreo en tiempo real

  • 驴Qu茅?: Implementa sistemas para monitorear los contratos inteligentes y los componentes operativos cr铆ticos, como or谩culos y puentes, que informen de actividades sospechosas al equipo de desarrollo y la comunidad en funci贸n de modelos de amenazas conocidos.
  • 驴Por qu茅?: La detecci贸n temprana de problemas permite que un equipo responda a vulnerabilidades y errores r谩pidamente, lo que podr铆a detener o mitigar cualquier da帽o. Esto parece obvio, pero puede pasarse por alto en la planificaci贸n.
  • 驴C贸mo?: Usa plataformas de monitoreo o nodos distribuidos para ejecutar bots que monitoreen eventos de contratos inteligentes en tiempo real. Implementa paneles y notificaciones de alerta para los equipos de desarrollo y la comunidad en general, seg煤n sea necesario.

#8: Considera las operaciones de respuesta a incidentes y emergencias

  • 驴Qu茅?: Haz uso de herramientas y procesos que permitan una respuesta inmediata ante cualquier problema de seguridad.
  • 驴Por qu茅?: Incluso con las mejores medidas de seguridad previas a la implementaci贸n, a煤n es posible que los contratos inteligentes y los componentes cr铆ticos, como or谩culos y puentes, tengan problemas activos. Tener personal dedicado, procesos claros y automatizaciones adecuadas garantiza que los incidentes puedan investigarse r谩pidamente y resolverse lo m谩s r谩pido posible.
  • 驴C贸mo?: Prep谩rate para lo peor planificando c贸mo responder a incidentes o emergencias y automatizando las capacidades de respuesta en la mayor medida posible. Esto incluye asignar responsabilidades de investigaci贸n y respuesta a personal capacitado que pueda ser contactado p煤blicamente sobre problemas de seguridad a trav茅s de una lista de correo de seguridad distribuida, instrucciones en el dep贸sito de c贸digos o mediante un registro de contrato inteligente. Con base en los modelos de amenazas del protocolo, desarrolla un conjunto de procesos que podr铆an incluir simulacros de escenarios y tiempos de respuesta esperados para tomar acciones de emergencia. Considera la posibilidad de integrar la automatizaci贸n en la respuesta a incidentes: por ejemplo, las herramientas pueden ingerir y actuar sobre eventos de los bots de Forta.

Las consideraciones de seguridad deben ser una parte integral del desarrollo exitoso, no solo una ocurrencia tard铆a o un complemento.

Si bien este marco comparte una gu铆a r谩pida para aquellos que crean protocolos y aplicaciones web3 para promover la seguridad durante todo el proceso de desarrollo, ninguna descripci贸n breve puede proporcionar una discusi贸n exhaustiva de todos los aspectos de la seguridad de los contratos inteligentes. Los equipos que carecen de experiencia interna en seguridad deben comunicarse con expertos en seguridad web3 calificados que puedan ayudarlos a aplicar la gu铆a general anterior a sus situaciones espec铆ficas. Pero, sobre todo, recuerda que la seguridad nunca es solo una simple cuesti贸n de marcar casillas en un simple manifiesto de lista de verificaci贸n para administrar la complejidad; como tal, siempre ser谩 un conjunto interminable y continuo de mejores pr谩cticas. Todav铆a estamos comenzando a establecer estas mejores pr谩cticas, por lo que ahora es el momento de crearlas y compartirlas en colaboraci贸n, en todos los niveles para todos los desarrolladores.


馃挕 Para mayor referencia, visita el texto original 鈥Smart Contract Security: A Simple Checklist for Web3 Development.

Aportes 2

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Resumen

En cada etapa del ciclo de desarrollo de software preg煤ntate qu茅, por qu茅 y c贸mo y aplica 8 consideraciones de seguridad para tus smart contracts.
Ciclo de desarrollo:

  • Dise帽o
    • modelado de amenazas y dise帽o de seguridad
  • Desarrollo
    • administraci贸n y control de acceso
    • plantillas e integraciones reusables y probadas
  • Prueba y revisi贸n
    • hacer pruebas y documentar
    • revisiones internas y auditor铆as de seguridad
  • Despliegue
    • incentiva participaci贸n de la comunidad
    • monitoreo en tiempo real
    • operaciones de respuesta a emergencias e incidentes
  • Mantenimiento

excelente informacion