La seguridad siempre ha sido uno de los aspectos más importantes de la tecnología de la información y hoy en día muchas organizaciones y sus desarrolladores adoptan una mentalidad de seguridad primero al crear aplicações. Estos principios y acciones a menudo se describen colectivamente como "DevSecOps", que abarca toda la cultura y el enfoque de la seguridad de las aplicação . DevSecOps significa desarrollo, seguridad y operaciones. Su objetivo es incorporar una mentalidad de seguridad ante todo en todos los aspectos de la tecnología de la información y la infraestructura.
Una de las áreas más recientes y apasionantes de la tecnología de la información es blockchain, que viene con un ecosistema gigante de protocolos y aplicações descentralizadas que pretenden llevarnos a una versión actualizada de la web, lo que muchos llaman Web3.
El término Web3 engloba varios conceptos que se centran en aspectos de la arquitectura de la aplicação y la experiencia del usuario:
Estos conceptos centrales tienen como objetivo devolver a los usuarios el control de su identidad mediante criptografía de clave pública y aumentar la adopción de la economía peer to peer a través de diversas mecánicas y protocolos de blockchain. Muchas cadenas de bloques y sus protocolos circundantes pueden procesar transacciones avanzadas y gestionar el estado mediante contratos inteligentes que se ejecutan dentro de entornos virtualizados aislados.
Estos luego se sincronizan en todos los nodos de la red a través de un mecanismo llamado algoritmo de consenso. Se trata de un mecanismo que permite a los usuarios o nodos coordinarse en un entorno distribuido para garantizar que todos los nodos del sistema puedan ponerse de acuerdo sobre una única fuente de verdad, incluso si algunos agentes fallan. Además, muchas cadenas de bloques funcionan de manera resistente a la censura, manteniendo sus protocolos abiertos y sin permisos.
Existe un riesgo adicional en una arquitectura basada en blockchain porque la columna vertebral de la red generalmente está impulsada por una criptomoneda digital basada en tokens y normalmente tiene valor monetario. Estos tokens se guardan en direcciones, generalmente almacenadas en cuentas externas o dentro de contratos inteligentes. Y como la confianza también se distribuye con el uso de criptografía de clave pública, cada dirección de la red es propensa a ataques.
El saldo de cada cuenta se distribuye a través de la red en lo que se conoce como el libro de contabilidad público, visible para cualquiera, lo que deja una ventana abierta para que los piratas informáticos ataquen a usuarios o contratos específicos. Esto hace que la privacidad y el anonimato sean un aspecto particularmente importante para blockchain. A menudo, los humanos que administran estas cuentas son blanco de ataques o su posición les permite actuar de manera ilícita, con amenazas que incluyen:
Además, la huella tecnológica de estas diversas tecnologías de cadena de bloques, protocolos y aplicações descentralizadas ya es grande y está creciendo rápidamente. Por lo tanto, es importante pensar en las implicaciones de seguridad de este ecosistema de rápido crecimiento. Cualquier cosa que se construya con un concepto central de descentralización tiene un panorama mayor y, por lo tanto, más puntos de ataque que deben analizarse y protegerse cuidadosamente.
A continuación se presentan algunos temas que vale la pena considerar al auditar la seguridad de sus aplicações descentralizadas y su infraestructura tecnológica:
Cuando hablamos de DevSecOps en el ciclo de vida de desarrollo de una aplicação, normalmente nos referimos al desarrollo impulsado por la seguridad. Esto también se conoce comúnmente como el acto de desplazar la seguridad hacia la izquierda. Es uno de los aspectos más importantes de la cultura DevSecOps, porque comienza con los desarrolladores pensando en la seguridad como código. Dado que los contratos inteligentes basados en blockchain pueden almacenar valor y actuar como un banco, esto hace que el código dentro de ellos sea más vulnerable a los ataques y deben escribirse teniendo en mente una seguridad estricta.
La industria ha presenciado varios ataques dirigidos a contratos inteligentes en torno a vulnerabilidades, generalmente centrados en explotar el código. Uno de los hackeos más grandes de la historia tuvo lugar el año pasado cuando Poly Network, un protocolo cross-chain, informó que un atacante hackeó un contrato inteligente, transfiriendo el equivalente a US$610 millones moviendo varios activos a direcciones de billetera externas controladas por el hacker.
Existen muchas vulnerabilidades en el desarrollo de contratos inteligentes, pero algunos de los ataques más frecuentes son:
Blockchain, las aplicações descentralizadas y los diversos protocolos que las rodean están creciendo rápidamente. Estas nuevas y emocionantes formas de implementar aplicações tienen el potencial de revolucionar muchas industrias diferentes. Sin embargo, es imperativo que nos centremos en una mentalidad de seguridad primero e implementemos una cultura DevSecOps siempre que sea posible.
Un buen primer paso en el viaje de cualquier persona hacia la cadena de bloques es el documento técnico asociado al protocolo que está desarrollando:
A continuación, estudie los ataques y las vulnerabilidades anteriores, e incluso intente reproducir el ataque en su entorno de desarrollo.
Para obtener una experiencia de aprendizaje práctica sobre seguridad en Ethereum, recomiendo los siguientes programas de captura de bandera (CTF) en los que se ocultan vulnerabilidades o "banderas" en programas o sitios web deliberadamente vulnerables para enseñar los fundamentos de la seguridad.