La empresa consultora Psy Labs se especializa en contratos inteligentes para DEXs y CEXs, protocolos DeFi, proyectos NFT, bots de trading, etc. Desarrollan contratos inteligentes en las redes de Ethereum, Sui, Cardano, Polkadot, Near Protocol, Ripple, Solana y Holochain.
El equipo de Psy Labs incluye ex empleados de Meta, McKinsey, Binance, Kaspersky y otros gigantes de la industria, desarrollando criptosoluciones desde cero hasta su implementación completa. Pero lo que resultó ser de mayor importancia durante nuestra familiarización es que los especialistas de Psy Labs también garantizan la seguridad de sus propios contratos inteligentes y de terceros, lo cual es especialmente relevante a la luz de las pérdidas multimillonarias que la industria Web3 está experimentando debido a ataques de hackers.
Mike Belous, cofundador y director de tecnología de Psy Labs, respondió las preguntas de CP Media. Compartió su experiencia en la seguridad de los contratos inteligentes basándose en su experiencia usando el software SmartSafe desarrollado por el equipo de Psy Labs como un producto externalizado. Como corresponde, comenzamos desde un punto algo distante…
¿Por qué elegiste desarrollar contratos inteligentes?
El desarrollo de contratos inteligentes es el servicio más solicitado en nuestro campo, ya que son el componente principal de la gran mayoría de criptoproyectos.
¿En qué momento surgió la solicitud de desarrollar un sistema de detección de vulnerabilidades para contratos inteligentes?
Cuando salieron a la luz noticias sobre importantes vulneraciones en contratos inteligentes, como el ataque a The DAO. Estos incidentes resaltaron la vulnerabilidad de incluso los proyectos bien financiados y pusieron a todos un poco nerviosos.
Si bien existen herramientas generalmente disponibles para detectar vulnerabilidades de software, no existe una solución integral adaptada para contratos inteligentes en diferentes blockchains.
¿Cómo calificarías el nivel de seguridad de los contratos inteligentes en la actualidad?
Hoy en día, los desarrolladores tienen acceso a herramientas y plataformas modernas diseñadas específicamente para la seguridad de contratos inteligentes. Por ejemplo, se están utilizando herramientas de verificación formal para demostrar matemáticamente la corrección de los contratos, lo cual no era tan común hace unos años. Más aún, existe una tendencia hacia la adopción de lenguajes de programación más seguros en plataformas de contratos inteligentes, como Vyper para Ethereum, para reducir posibles brechas de seguridad (al momento de preparar la entrevista, también se encontraron vulnerabilidades en Vyper — ed.).
Sin embargo, los desafíos persisten. El auge de DeFi, por emocionante que sea, trae nuevas complejidades. Hemos visto a hackers usar formas innovadoras de interactuar con contratos inteligentes durante ataques de préstamos rápidos, demostrando que el ecosistema aún tiene vulnerabilidades.
¿Qué te parece lo más problemático de este asunto?
Dentro del ámbito de la seguridad de los contratos inteligentes, uno de los problemas más apremiantes es la naturaleza inmutable de la blockchain. Una vez que se implementa un contrato inteligente, no se puede modificar. Por lo tanto, cualquier vulnerabilidad o falla en el contrato permanece de manera permanente, exponiéndolo a posibles explotaciones. El ya infame hackeo de The DAO en la plataforma Ethereum, que resultó en una pérdida de alrededor de $60 millones, fue un claro recordatorio de este desafío.
Además, la rápida evolución del sector DeFi ha introducido interacciones intrincadas entre contratos inteligentes. Esto a veces puede dar lugar a vulnerabilidades imprevistas. Como ejemplo, en el ataque a la plataforma bZx, los atacantes manipularon astutamente el protocolo a través de una serie de transacciones DeFi, causando pérdidas financieras significativas.
¿Puedes contarnos sobre los cinco tipos de vulnerabilidades más comunes con los que vosotros os encontráis?
Ciertamente prestamos especial atención a la categorización de los vectores de ataque, dada la frecuencia con la que se utilizan algunas de las vulnerabilidades que se mencionan a continuación:
- Ataques de reentrada. Este ataque es quizás mejor conocido a raíz del hackeo de The DAO. En resumen, permite a un atacante reingresar y ejecutar una función múltiples veces antes de que su invocación inicial se complete. Es similar a un disco que salta en un tocadiscos, con la misma línea siendo reproducida una y otra vez antes de pasar a la siguiente acción.
- Desbordamiento y subdesbordamiento de enteros no controlados. Se refiere a cuando los números pueden exceder los límites establecidos. Imagina el odómetro de un coche que se reinicia a cero después de alcanzar su máxima visualización. En el mundo de los contratos inteligentes, esto puede causar que, al restar de un saldo bajo se obtenga un número enormemente grande en lugar de un valor negativo.
- Funciones expuestas. A veces los desarrolladores dejan accidentalmente funciones conocidas como públicas o externas, lo que significa que cualquiera puede invocarlas. Esto es similar a dejar la puerta de tu casa abierta, permitiendo que cualquier transeúnte entre sin problemas.
- Problemas con el límite de gas. Los contratos que requieren más gas que el límite de gas del bloque pueden quedar irrevocablemente atascados. Esto se puede comparar a alimentar una ciudad entera con una sola pila AA. Si bien esto no siempre es un vector de ataque, puede resultar en fondos bloqueados o contratos inutilizables.
- Registro de eventos inadecuado. Esto podría no parecer una vulnerabilidad típica, pero es crucial para las dApps. Sin un registro adecuado de eventos, una dApp podría no funcionar o mostrarse correctamente, dejando a los usuarios en oscuras. Esto es similar a un tablero de un automóvil que no muestra la velocidad ni el nivel de combustible, dejando al conductor conduciendo a ciegas.
¿Puedes describir con más detalle vuestro analizador de contratos inteligentes? ¿Qué métodos utiliza para identificar vulnerabilidades?
El analizador de contratos inteligentes se constituye en el eje central de nuestro marco de detección de vulnerabilidades. Permíteme desglosar sus principales componentes:
- Análisis del árbol de sintaxis abstracta (AST). En esencia, el AST nos ayuda a comprender la estructura y jerarquía del código de un contrato inteligente. Imagina desglosar una frase compleja en sus componentes gramaticales básicos. Eso es exactamente lo que hace el AST, pero para el código. Al analizar esta estructura, podemos identificar áreas que podrían ser propensas a ciertas vulnerabilidades.
- Análisis del flujo de control. El mismo examina las posibles rutas que una transacción toma desde su inicio hasta su finalización. Se puede comparar con trazar todas las rutas posibles que uno podría tomar en un viaje por carretera para identificar posibles peligros u obstáculos en cada una de ellas.
- Análisis de flujo de datos. Este método rastrea cómo se mueven y cambian los datos por todo el contrato. Imagínate agua fluyendo a través de una serie de tuberías interconectadas y tú queriendo seguir su movimiento y los puntos de posible contaminación.
- Integración con el motor de reglas. Nuestro analizador trabaja mano a mano con nuestro motor de reglas, que contiene un conjunto de reglas predefinidas derivadas de vulnerabilidades conocidas y nuestra investigación. Imagina tener una lista de cosas que evitar: el motor de reglas posee esta lista y la contrasta con el análisis del AST, los controles y los flujos de información.
- Componente de aprendizaje automático. Con el tiempo, a medida que nuestro sistema revisa más contratos, aprende de los patrones que identifica. Entonces, si surge un nuevo patrón de vulnerabilidad en el ecosistema, nuestro analizador puede detectarlo, incluso si no ha sido formalmente definido en nuestro motor de reglas. Imagina que se trata de una enciclopedia que se actualiza sola y se vuelve más sabia con cada lectura.
¿Cuál es el papel y mecanismo del motor de reglas en vuestro sistema?
En su esencia, el motor de reglas presenta una amplia biblioteca de reglas o patrones predefinidos que corresponden a vulnerabilidades conocidas. Considéralo como un libro de referencia sobre lo que no hacer al escribir un contrato inteligente.
¿Cómo se integra vuestro marco de trabajo con otras herramientas de desarrollo de contratos inteligentes?
Nos enfocamos mucho en esta área porque reconocemos la importancia de un flujo de trabajo de desarrollo sin interrupciones. Profundicemos en este tema:
- Soporte para la interfaz de línea de comandos (CLI). En su nivel más básico, nuestro marco ofrece una herramienta de CLI. Permite a los desarrolladores realizar verificaciones de vulnerabilidad directamente desde su entorno de línea de comandos habitual. Es similar a un corrector gramatical que puede ejecutarse rápidamente en un documento, pero para detectar vulnerabilidades en contratos inteligentes.
- Compatibilidad con el pipeline de CI/CD. La integración continua y la entrega continua (CI/CD) son la columna vertebral de la entrega de software moderna. Nuestro marco se adapta perfectamente a estos pipelines, garantizando la verificación de vulnerabilidades en todas las etapas del proceso de desarrollo y despliegue. Considéralo como un punto de control de calidad en una línea de ensamblaje.
- Módulos de complemento para IDEs. Entendemos que los desarrolladores pasan mucho tiempo en sus entornos de desarrollo integrado (IDEs). Por eso desarrollamos módulos de plugin que se integran directamente con los IDEs populares. Esto brinda una retroalimentación instantánea a medida que los desarrolladores escriben o ajustan el código de un contrato inteligente, similar a cómo las palabras mal escritas se subrayan en rojo cuando escribes en un editor de texto.
¿Qué tan automatizado es vuestro sistema y dónde se requiere la intervención de un experto?
La mayoría de los componentes que describimos operan de forma automática, como si tuvieras un par de ojos extra que nunca duermen. El sistema escanea, analiza y clasifica vulnerabilidades todo el tiempo sin requerir monitoreo constante.
La automatización abarca desde analizar el código con técnicas como el análisis del AST hasta crear informes prolijos con gráficos que nuestros clientes adoran. Incluso puede sincronizarse con las herramientas que los desarrolladores ya están utilizando, haciéndola súper conveniente.
Pero, como sabes, la automatización es tan buena como las personas que la respaldan. Ahí es donde nuestros expertos intervienen. Son quienes desarrollan las reglas por las que funciona el sistema. Cuando existe una vulnerabilidad compleja o una nueva blockchain con la que trabajar, son ellos quienes encuentran la manera de abordarla. También mantienen el sistema al día, actualizándolo con nuevos patrones a medida que el panorama de seguridad cambia.
¿Qué planes tenéis para el desarrollo de vuestro sistema? ¿Hay alguna característica nueva o mejoras que estáis buscando implementar?
Primero, queremos ampliar el aspecto de aprendizaje automático en la detección de vulnerabilidades mediante la incorporación de métodos nuevos y más complejos. Estamos considerando la posibilidad de implementar análisis predictivos, anticipando problemas antes de que se conviertan en una tendencia.
Luego tenemos todo el abanico de nuevas blockchains que surgen como hongos tras la lluvia. Nuestro objetivo es hacer que nuestro marco sea adaptable a la mayor cantidad posible de ellas.
También nos encontramos explorando una generación de informes más interactiva y amigable para el usuario. Queremos convertir estos datos en algo tangible con lo que los desarrolladores y los equipos de seguridad puedan interactuar.
No nos olvidemos de la colaboración. Dentro de Psy Labs, a menudo generamos ideas para convertir nuestro sistema en un centro colaborativo donde diferentes partes interesadas puedan unirse, compartir ideas y trabajar en soluciones.