El CEO de BlockSec, Andy Zhou, fue invitado a participar en el podcast Spraping Bits para debatir sobre cómo el equipo de BlockSec identifica y mitiga posibles vulnerabilidades de seguridad en el turbulento e intrincado entorno de Web3. A continuación presentamos una colección curada de contenido fascinante que hemos recopilado. Para escuchar la versión completa del podcast, haz clic aquí.
Andy Zhou 00:00
Tenemos un sistema funcionando en nuestro equipo que puede detectar el contrato de ataque incluso antes de que los hackers envíen las transacciones de ataque. Esto se debe a que necesitan desplegar un contrato de ataque y luego enviar las transacciones para atacar el protocolo. Por lo tanto, incluso antes de las transacciones de ataque, cuando los hackers despliegan un contrato inteligente de ataque, nuestro motor basado en IA puede identificar con precisión el contrato malicioso.
Andy Zhou 00:53
Gracias, DeGatchi. También es un gran honor estar aquí.
DeGatchi 00:56
El honor es mío. Muchas gracias. Para las personas que no te conocen, ¿quién eres y a qué te dedicas?
Andy Zhou 01:02
Mi nombre es Andy. Soy el CEO de BlockSec, y también soy profesor en la Universidad de Zhejiang, una universidad de primer nivel en China. Tengo más de 10 años de experiencia en el área de ciberseguridad. Anteriormente trabajaba en el área de seguridad para smartphones, y luego me cambié a la seguridad de contratos inteligentes durante un par de años.
DeGatchi 01:22
¿Cómo fueron tus primeros días en la seguridad de contratos inteligentes? ¿Hacías auditoría manual o pasaste directamente a la automatización? Algo parecido a lo que hice yo.
Andy Zhou 01:30
Para la seguridad de contratos inteligentes, tanto en la empresa como en nuestro equipo de investigación, realizamos tanto el análisis estático como el dinámico. Para el estático, hemos desarrollado varias técnicas diferentes para mejorar el análisis estático del contrato inteligente. Esto se debe a que la mayoría de las herramientas actualmente disponibles en la comunidad tienen algunos problemas comunes, ya que tienen demasiados falsos positivos. Por ejemplo, si quieres usar la herramienta para detectar problemas de reentrada, introduces un contrato inteligente simple en la herramienta y puede reportar muchos problemas de reentrada u otros problemas. Pero cuando revisas manualmente este reporte, descubres que la mayoría son falsos positivos. Así que encontramos que los falsos positivos son el principal problema con las herramientas actuales de análisis estático.
Andy Zhou 02:20
La razón fundamental de estos falsos positivos es la falta de comprensión de la semántica del contrato inteligente. La semántica se refiere al significado detrás de las variables y sus relaciones dentro del contrato. Por ejemplo, si tienes un token ERC-20, tiene variables que representan el saldo de cada propietario y el valor aprobado, indicando quién aprobó qué cantidad para transferir a quién. Para mejorar la precisión del análisis estático, es esencial identificar con precisión qué variables corresponden al saldo y qué variables se relacionan con aprobaciones y otras funcionalidades específicas. Al hacerlo, podemos lograr una precisión mucho mejor en el análisis estático.
Andy Zhou 03:00
Una idea que hemos obtenido de nuestra experiencia en el desarrollo de la herramienta de análisis estático es la necesidad de un motor robusto de análisis de contaminación para establecer correlaciones entre variables. El análisis de flujo de datos, una técnica fundamental empleada por las herramientas de análisis estático, juega un papel crucial. Implica modelar memorias y almacenamientos, así como la forma de aprovechar de manera precisa y eficiente las técnicas de análisis de contaminación dentro de la herramienta de análisis estático. Estas dos técnicas clave, el análisis de contaminación y el análisis de flujo de datos, han demostrado ser muy eficaces para mejorar las capacidades de nuestra herramienta de análisis estático.
Andy Zhou 03:48
En nuestro equipo de investigación, desarrollamos y desplegamos esta herramienta de análisis estático, y analizamos cada nuevo contrato inteligente creado en la blockchain. Reportaremos las vulnerabilidades de día cero que hemos identificado a los desarrolladores. Desafortunadamente, algunos de los desarrolladores no se preocupan por la vulnerabilidad. E incluso no encontramos los canales eficientes para reportárselas. Eso es muy triste.
Andy Zhou 04:13
Si quieres una herramienta de análisis estático muy efectiva, necesitas tener la semántica y un motor de análisis de contaminación. Esta es nuestra experiencia con la herramienta de análisis estático. Y además de la herramienta de análisis estático, también tenemos una herramienta de análisis dinámico en nuestro equipo de investigación. Esto se debe a que, además de los contratos inteligentes vulnerables, también queremos identificar transacciones maliciosas, ¿verdad?
Andy Zhou 04:31
No se trata solo de analizar contratos inteligentes vulnerables, sino también de detectar cualquier transacción que pueda estar atacando protocolos u otros contratos inteligentes. Para lograr esto, tenemos una máquina virtual personalizada con capacidades de instrumentación. Esto nos permite escribir nuestras propias reglas de detección que pueden conectarse fácilmente a la máquina virtual o al entorno de ejecución de cualquier contrato inteligente dado. Capturamos varias señales para determinar si una transacción es maliciosa o no. Por ejemplo, examinamos si el remitente de la transacción tiene historial de realizar ataques o si los fondos provienen de fuentes sospechosas. Combinando diferentes señales, evaluamos el riesgo asociado con cada transacción. Nuestro equipo desplegó este motor de detección, lo que nos permite capturar e identificar rápidamente las transacciones de ataque.
DeGatchi 05:41
Sí, eso es interesante. He hecho lo mismo con mis analizadores estáticos. El análisis de contaminación es básicamente esencial, pero luego usas lo que haces con el analizador estático. Transfieres todos esos datos a un fuzzer, ¿verdad? También estaba construyendo mi fuzzer. Y es realmente interesante ver cómo la gente lo aborda. Pero hay soluciones muy interesantes. La gente piensa de manera muy secuencial en este espacio, y hay muchas dimensiones a considerar, así que pensar secuencialmente no es la respuesta correcta.
DeGatchi 06:08
Hablemos de las dimensiones. Supongamos que tienes los calldata de una transacción, ¿verdad? También tienes funciones y contratos. Y luego también tienes otra dimensión, que es la etapa. Entonces es muy dependiente del contexto. Y ahora tienes estas cuatro variables diferentes, dimensiones, y todas se impactan entre sí con el más mínimo ajuste. Por ejemplo, podrías tener el contrato A, el contrato B, con todas sus funciones. Ahora tienes que ordenarlas de todas estas diferentes maneras, pero no son solo la función A y la función B, función B y función A. También tienes la posibilidad de hacer función A, función B, función B, función B, función A. Es un problema realmente difícil.
DeGatchi 06:43
Y creo que lo que has estado haciendo con tus cosas es bastante interesante. Sé que has avanzado Phalcon recientemente para incluir ahora la detección de transacciones. Así que es más como un front-runner generalizado, pero para hacks. Y al hacerlo, es muy estimulante. Y el juego de front-running está dominado por estos equipos dedicados de MEV, ¿verdad? Y hacen front-running, sandwiching, back-running, etc. Y tienen infraestructura dedicada, cosas de trading de alta frecuencia donde la latencia es muy pequeña, y están asociándose entre sí, constructores de bloques, relays, toda esa historia. Entonces la pregunta es, ¿cómo puedes hacer front-run a estas transacciones en lugar de estos equipos de MEV?
Andy Zhou 07:24
Sí, esa es una muy buena pregunta. Básicamente, el objetivo principal de nuestro sistema no es hacer front-run a los Bots de MEV sino proteger los protocolos, y nos dirigimos a los hackers.
DeGatchi 07:37
Pero, digamos, cuando el hacker envía una transacción a un Mempool público, si es privada, nadie puede verla. Pero si es un Mempool público, entonces todos los demás front-runners generalizados también la van a ver. Así que tienes que ir a ellos. Entonces, ¿cómo los superas? ¿Cómo los superas?
Andy Zhou 07:51
Sí, siempre decimos que la seguridad es una carrera armamentista entre los buenos y los malos. Era fácil en los primeros días porque los malos no conocían la existencia de nuestro equipo ni del Bot de MEV. En ese momento, dependía de cuánto pagabas en tarifas de gas o cuánto pagabas de soborno a los validadores. Era mucho más fácil en los primeros tiempos, pero hoy en día los hackers usan algunas técnicas para protegerse de ser adelantados. Por ejemplo, vimos una técnica muy interesante desplegada por los hackers para evitar que sus transacciones sean adelantadas por el Bot de MEV. Básicamente, en sus transacciones, primero verifican algunos valores, como obtener un cierto valor de otro contrato inteligente para comprobar si ese valor es igual al valor inicial de esa variable. Al realizar el ataque, los hackers primero enviarán una transacción para configurar la variable en otro contrato inteligente para satisfacer esa verificación, y usarán la segunda transacción para realizar el hack. Porque la técnica más común utilizada por el Bot de MEV es simular una sola transacción. Si solo simulas la segunda transacción, fallarás porque la condición no se cumple. Eso es porque la condición es establecida por la primera transacción de ataque. Debido a esta parte complicada, algunos Bots de MEV no pueden manejarlo. Nosotros sí podemos porque tenemos una técnica para analizar la correlación de diferentes transacciones.
DeGatchi 09:40
Sí, tendrías que hacer múltiples. No puedes hacer solo una porque si estás haciendo front-running generalizado, el estándar es solo reemplazar las direcciones, o si son varias direcciones, tienes que reemplazarlas todas, y básicamente tienes que probar todas las opciones.
Andy Zhou 09:52
Exactamente.
DeGatchi 09:53
Si están haciendo el asunto de múltiples contratos con la configuración, entonces harían el despliegue del contrato, luego llamarían a una función en ese contrato de configuración para configurar la nueva cosa, y luego la usarían en los contratos de exploit. Pero la forma de solucionarlo sería básicamente simulando de nuevo, pero tendrías que verificar el estado de lo que se está llamando. Y si eso no coincide con el estado de despliegue del contrato original, entonces tienes que establecer eso de alguna manera, encontrar esa función como un CFG, encontrar lo que era, y luego modificar ese contrato de exploit para establecer eso también, o incluso simplemente eliminarlo por completo. Eso es bastante difícil, pero es una locura que realmente lo hayas hecho y ahora esté funcionando.
Andy Zhou 10:33
Sí, está funcionando, pero necesitas hacer muchos esfuerzos de desarrollo para eso. Y también necesitas tener un motor de análisis muy bueno y eficiente para eso.
DeGatchi 10:42
Es muy impresionante. Ustedes han prevenido 20 hacks y alrededor de $15 millones en pérdidas ya. Y eso fue dentro de los seis meses antes de que lanzaran.
Andy Zhou 10:51
La prevención de hacks se ha realizado durante el último año y medio. Así que no es en un mes o dos meses. Es un esfuerzo continuo durante un año y medio.
DeGatchi 11:04
Pero aun así, nadie más está haciendo esto. Es algo realmente grandioso, y creo que todos deberían tenerlo al menos porque es algo importante. Y aunque puede que no sea un salvavidas al 100% para todos porque tienen que registrarse, quizás hay algunas técnicas de ofuscación apenas diferentes que serían distintas. Aun así es mejor que nada, ¿verdad? Quiero decir que salvas cosas, ser hackeado es como la caída de toda la empresa, todos los usuarios, toda la reputación—simplemente desaparece. Así que es una cosa muy importante. ¿Cómo construyeron esto? ¿Estaban usando IA en absoluto? O no hay manera de que sea completamente heurístico.
Andy Zhou 11:41
Básicamente, combinamos diferentes técnicas. Para la detección de hacks, combinamos la solución basada en IA con el análisis de comportamiento. Para la solución basada en IA, usamos la técnica de IA, la técnica de aprendizaje automático, para detectar el contrato de ataque. Tenemos un sistema funcionando en nuestro equipo que puede detectar el contrato de ataque incluso antes de que el hacker envíe las transacciones de ataque. Eso es porque necesitan desplegar un contrato de ataque y luego enviar las transacciones para atacar el protocolo. Así que incluso antes de las transacciones de ataque, cuando los hackers despliegan el contrato inteligente de ataque, nuestro motor basado en IA puede identificar con precisión el contrato malicioso. No digo que no tengamos falsos positivos, pero los falsos positivos son bastante bajos. Así que incluso en esta etapa, antes de las transacciones de hack, podemos detectar el contrato inteligente de ataque. El problema es que cuando identificas y atacas un Contrato Inteligente, puede que no conozcas a la víctima real de este hack. Eso es porque a veces la dirección de destino no está codificada de forma fija en el contrato inteligente. Pueden pasarse como parámetros. Necesitas tener alguna técnica de fuzzing para activar eso. Pero si todas las direcciones de contratos inteligentes objetivo se pasan desde los parámetros, entonces incluso el fuzzing no puede ayudar.
Andy Zhou 13:05
Así que para estos más complicados, no podemos identificar los contratos inteligentes de ataque en esta etapa, necesitamos tratarlos en la etapa de detección de transacciones de ataque. Para las transacciones de ataque, usamos algunas soluciones basadas en comportamiento para detectar las transacciones de hack. La idea general es que cada hacker quiere obtener ganancias. Así que necesitas ser preciso para obtener el beneficio de las transacciones. Y después de detectar estas transacciones de ataque, sintetizaremos automáticamente una transición de ataque similar como lo hace el Bot de MEV, reemplazamos la dirección de beneficio y la ponemos en la cadena. Así es básicamente como funcionaba el sistema originalmente antes de que lanzáramos BlockSec Phalcon.
DeGatchi 13:54
Con lo de la IA, no puedo imaginar que sea un modelo de aprendizaje supervisado. Siento que tendría que ser aprendizaje por refuerzo porque simplemente no hay muchos hacks, ¿verdad? Así que no hay suficientes datos para realmente hacer eso.
Andy Zhou 14:08
Creo que mencionas un punto muy bueno sobre el aprendizaje automático. Para la detección de contratos inteligentes maliciosos, como no tenemos muchas muestras para entrenar el modelo, no es efectivo. En este caso, la idea clave para hacer que estas cosas funcionen es que necesitas extraer las características clave dentro de un contrato inteligente. Algunos solo usan la secuencia del bytecode para entrenar el modelo. Eso no funciona porque la secuencia del bytecode es demasiado general y demasiado común para el contrato inteligente. Necesitas extraer las características distintivas del contrato inteligente. Así que lo que estamos usando actualmente, incluyendo el grafo de control, la relación de flujo de datos entre las funciones clave, y también usamos algunas etiquetas de direcciones o la propiedad del creador del contrato inteligente juntos para entrenar el modelo, demuestra ser muy efectivo.
DeGatchi 14:55
Básicamente extraes características clave. Por ejemplo, digamos direcciones codificadas de forma fija o direcciones pasadas como calldata. Tal vez están haciendo un enmascaramiento si están haciendo Solidity. Eso es bastante común en Solidity. Pero si es un contrato de código personalizado, habrá un hacker bastante sofisticado, en primer lugar. Pero los hackers sofisticados, los que están estrictamente planificados, utilizarían al 100% transacciones privadas de bytecode personalizado y tal vez incluso enjambres de transacciones para ofuscar. Esto era algo que yo estaba estudiando, y estaba muy interesado en estas cosas. Resultó ser efectivo. En realidad, nunca he visto a nadie usar el tipo de técnicas que encontré. Incluso podría escribir un artículo al respecto, en realidad, porque yo nunca las usaría. Pero fue interesante.
Andy Zhou 15:46
Sí, antes de hacer este proyecto de investigación, yo tampoco pensaba que funcionaría. Pero después de seis meses, demostramos que es muy efectivo.
DeGatchi 16:02
Sí, sí, es una locura. Creo que es un paso tan notable en la dirección correcta, y se necesitan más herramientas como esta. Pero esto también plantea la pregunta; sabes que estás usando IA. ¿Cómo ves el impacto que tendrá la IA, en primer lugar, en tu negocio? ¿Y qué quedará obsoleto debido a la IA, y qué puede hacer alguien para prepararse hoy para esta revolución?
Andy Zhou 16:23
Sí, honestamente, no soy un experto en IA. Solo estamos aplicando IA a nuestra área de investigación para detectar el contrato inteligente malicioso. Creo que el potencial de la IA en el área de seguridad no ha sido completamente explorado. Y una razón es que, para aplicar IA al área de seguridad, creo que necesitas tener una comprensión muy profunda del problema que estás resolviendo. Porque si tienes una comprensión muy profunda del problema que estás resolviendo, puedes extraer muy buenas características. Creo que la característica es muy importante, ¿verdad? Así que incluso para el mismo contrato o para las mismas transacciones, si no tienes una muy buena característica para el entrenamiento, entonces el resultado será totalmente diferente. Desde mi perspectiva, creo que el potencial de la IA no ha sido completamente explorado porque necesitas tener una combinación de una muy buena persona en IA y un muy buen experto en el dominio para extraer las características.
DeGatchi 17:30
Estoy de acuerdo. Es muy diferente. Es una combinación de dos campos, dos dominios. En primer lugar, ser bueno en IA es difícil. Y luego lleva tiempo aprender las cosas también. Como tienes que saber matemáticas, tienes que saber todo lo relacionado con la IA. Como si no sabes los paquetes, las bibliotecas, y luego tienes que estar dentro del espacio cripto también con otro dominio, que es el bytecode y también ciber, eso también lleva tiempo. Pero creo que las personas que pasan de la IA pura al cripto, no sería tan difícil como ir del cripto a la IA, creo, porque es mucho más difícil en la IA pura adentrarse en eso solo porque son las matemáticas que necesitas y la comprensión total, supongo, de la arquitectura actual y cómo funciona todo.
DeGatchi 18:13
Pero es súper interesante, creo. ¿Qué crees que quedará obsoleto? Porque la IA obviamente va a cambiar todo. Y creo que si no estás usando IA, no tendrías ventaja sobre otras personas en todos estos negocios porque es difícil competir. Estaba haciendo lo mismo con el fuzzer y el analizador de pila, pero conozco a personas que hacen IA. Y tiene sentido porque, si piensas en este espacio de acción infinito, no puedes simplemente forzarlo por la fuerza bruta. Necesitas algún tipo de intuición para filtrar todas las acciones y saber qué realmente objetivar. Así que necesitas IA para esto. Necesitas algo que pueda aprender en instancias repetidas, especialmente si estás ejecutando algo en todos estos protocolos—todos los contratos, millones de instancias, o ejecuciones, ¿verdad? Necesita poder, como, aprender intuición. De lo contrario, estás construyendo esa intuición en ti mismo. Y eso consume mucho tiempo y también es muy defectuoso porque no puedes pensar en todas esas dimensiones, y no sabes lo que no sabes al final del día. Creo, personalmente, que si no estás en ello, deberías meterte en ello, de todos modos. Ni siquiera sé matemáticas, y me estoy metiendo en ello. Así que si yo puedo hacerlo, cualquiera puede. Así que ya veremos. Pero es una gran dedicación.
Andy Zhou 19:36
Exactamente. Puedo compartir un experimento reciente sobre IA. Como dije, tenemos un sistema de fuzzing para el contrato inteligente para encontrar las vulnerabilidades; tenemos un sistema interno para hacer eso. Podemos usar la IA para generar las entradas semilla para el fuzzing, y resulta ser muy efectivo. ¿Cómo lo hacemos? Por ejemplo, tenemos cinco contratos inteligentes para fuzzear. Primero introducimos estos contratos inteligentes en el ChatGPT, y podemos resumir las funcionalidades clave de cada función diciéndole al GPT: "Esta función, la funcionalidad principal es hacer esto, otra función hace aquello." Luego, después de eso, le pido al GPT que diga: "Por favor, genera 50 entradas diferentes para estas funciones." Y resulta ser muy efectivo. Y usamos esto como entrada semilla, sabes, para fuzzear contratos inteligentes.
DeGatchi 20:38
Interesante. Creo que los LLMs son realmente bastante buenos. Los mejores que tenemos en términos de comprensión de embeddings no sé mucho más al respecto, pero es como el mejor esfuerzo en este momento. Así que tiene sentido. Creo que mucha gente está usando ChatGPT, pero parece un caso de uso realmente bueno. Sé que hay personas que lo están haciendo para que les expliquen los contratos. Así que de alguna manera elimina toda la comprensión; te ayuda rápidamente a ponerte al día en lugar de intentar entender toda la base de código. Porque podría ser como una base de código de mil líneas, ¿verdad? O multicontratos, miles de líneas múltiples. Es realmente difícil ver la relación entre todo y las dependencias.
DeGatchi 21:18
Pero quería preguntar: ya que has hecho este nuevo bloqueo de transacciones, ahora tienes el bloqueo de transacciones, pero ¿por qué darías un paso más y realmente intentarías encontrar todos los días cero y todos los contratos? Porque si lo piensas, si son un hacker sofisticado y realmente saben lo que están haciendo y atacan a alguien, y digamos que es como un hack de $600 millones como Ronin o algo así, o quizás algo más realista como $200 millones o $20 millones en un protocolo, simplemente enviarían una transacción privada y no podrías bloquearlos. ¿Por qué no invertirías completamente en los días cero previniendo todos ellos? Porque si lo encuentras, simplemente haces una transacción privada, y salvas todo desde el principio.
Andy Zhou 22:02
Sí, muy buena pregunta. En realidad tenemos algunas ofertas para proyectos dentro de BlockSec. Actualmente para BlockSec Phalcon, podemos detectar las transacciones maliciosas en la cadena o en el Mempool. Pero para las transacciones privadas, no podemos verlas. Esta es la etapa actual. También queremos impulsar nuestros esfuerzos un poco más para detectar las vulnerabilidades del contrato inteligente, incluso antes que los hackers. Como acabo de decir, tenemos los sistemas de fuzzing para hacer eso, pero actualmente todavía estamos mejorando nuestro sistema de fuzzing para detectar las vulnerabilidades de seguridad del contrato inteligente desplegado en la blockchain.
Andy Zhou 22:55
Creo que hay algunos desafíos al realizar fuzzing para contratos inteligentes para identificar vulnerabilidades. Uno de los desafíos en el fuzzing de contratos inteligentes es generar entradas, específicamente transacciones, para el contrato objetivo. Además, para el contrato inteligente, necesitas generar una secuencia serial de transacciones para activar las vulnerabilidades, no una sola. Y a veces la secuencia de las transacciones tiene dependencia entre sí. Necesitas tener primero la transacción, luego la segunda y la tercera, y solo la secuencia completa de estas tres transacciones puede activar las vulnerabilidades. Necesitas generar la secuencia de un par de transacciones, y necesitas entender la dependencia de estas transacciones. Esto es bastante difícil actualmente. Es el desafío número uno. Y para el segundo desafío es que necesitas tener un oráculo para determinar si hay una vulnerabilidad. Digamos que envías una transacción a un contrato inteligente, ¿cómo determinas si has activado las vulnerabilidades? Por supuesto, podemos usar una técnica similar para calcular el beneficio. Si esta transacción genera un beneficio muy alto o hace que el factor de salud de algún protocolo de préstamo sea anormal, entonces veremos que hay una vulnerabilidad. Pero necesitas tener diferentes tipos de oráculos resumidos para los fuzzers. Este es el segundo desafío.
DeGatchi 24:35
Esa es la segunda parte. Es bastante interesante porque si tienes un nuevo protocolo que sale y tiene un token, no tiene ningún pool de liquidez con tokens grandes. Podría ser con otro token. Ni siquiera puedes ponerle precio, ¿verdad? Así que es un gran obstáculo. ¿Has pensado alguna vez en cómo abordarías eso con ese tipo de oráculo?
Andy Zhou 24:57
Sí, exactamente. Así que este es otro desafío porque necesitas preparar el entorno para los fuzzers y los pools de DEX. Necesitas preparar diferentes tokens, y necesitas introducir el precio de cada token en un sistema. Necesitas preparar diferentes tipos de cosas para los fuzzers. Es muy complicado. Para vulnerabilidades simples como las de reentrada, es muy fácil activarlas para los fuzzers. Pero para algunas complicadas, como la manipulación de precios, es difícil. Todavía estamos trabajando en un sistema, pero todavía necesitamos algo de tiempo. Pero tienes razón, estamos trabajando en esta dirección.
DeGatchi 25:43
Sí, no es una tarea trivial en absoluto. Requiere mucha complejidad, ¿verdad? Y necesitas tener en cuenta muchas cosas que dependen de otras cosas. Así que es como si hicieras una pregunta y obtienes dos preguntas más, y ahora se relacionan entre sí, y simplemente sigue bajando continuamente. Pero esa cosa del oráculo es probablemente una de las cosas más difíciles. Y también es una de las más importantes porque la manipulación del oráculo es probablemente el mayor factor de ataque. Todo depende más o menos de eso. Y de cualquier manera podría ser como una tasa de cambio interna, podría ser una externa versus una interna.
DeGatchi 26:22
Así que como algún tipo de arbitraje que no han tenido en cuenta, hay errores en todo porque el error humano es simplemente cierto. Y el número de interacciones no se va a tener en cuenta. Cada día salen nuevos protocolos. Tu protocolo actual ahora puede interactuar con él. Podría ser una secuencia de cinco protocolos diferentes en ese sentido.
DeGatchi 26:45
Y no es fácil. Creo que necesitas IA porque tienes que pensar espacialmente en todas estas diferentes funciones en diferentes contratos que son vulnerables, no puedes resolverlas secuencialmente porque hay demasiadas posibilidades, ¿verdad? Creo que estaba hablando con alguien antes a principios de este año sobre esto, y le estaba hablando sobre el exploit de Pickle Finance. Y ese es uno realmente interesante porque tiene ocho vulnerabilidades en él. Y si te perdías una de ellas, no tendrías el exploit y tenía que ser en una secuencia específica. Y este exploit en realidad consistía en cinco contratos personalizados. Así que eran cinco contratos personalizados para básicamente construir el contexto en el que estas secuencias de funciones vulnerables podrían usarse de una manera específica.
DeGatchi 27:44
Y otra parte era entender que a través del aislador de Athena, tienes una dirección y bytes 20, ambos significan lo mismo. Y la gente pasa por alto esto porque necesitas saber qué significan estos tipos. Pero básicamente lo que estaban haciendo, que encontré realmente fascinante, fue que crearon estos contratos, que eran como un token subyacente falso. Y el token subyacente falso punto saldo de devolvía una dirección, no devolvía una cantidad real. Y eso no es cierto porque una cantidad real es solo bytes 32 y una dirección es bytes 20. Así que puedes pasar la dirección como si fuera 2,5,6, porque técnicamente lo es, ¿verdad? Y eso en realidad dependía, eso en realidad creó toda esta cadena porque creó como una situación de código delegado donde se estaba utilizando. Y así es como más o menos sucedió. Pero fue realmente interesante. Sabes, tienes que generar contratos que hagan cosas específicas que habiliten nuevas secuencias. Y esto no es trivial en absoluto para poder generar contratos, para habilitar un exploit de al menos cinco de ellos. Es un problema extremadamente fascinante, y creo que es muy estimulante. Y creo que no hay nada mejor que hacer en este tipo de cosas. Me encanta tanto.
DeGatchi 29:06
Pero este tipo de cosas es realmente difícil. ¿Y has pensado en todo esto? Como, ¿cuáles son los tipos de técnicas que estás investigando ahora? Obviamente, acabo de decir espacialmente, mirando funciones aisladas y viendo cómo interactúan entre sí. La relación es definitivamente una de las partes más difíciles, dependiendo de cómo la abordas. Porque el análisis de contaminación, francamente, no es suficiente.
Andy Zhou 29:26
Sí, así que para la relación entre diferentes contratos inteligentes, actualmente estamos haciendo algo muy interesante. Recopilamos manualmente los contratos inteligentes de los principales protocolos DeFi. Luego realizamos el análisis manual para dibujar una figura de la relación entre diferentes contratos inteligentes. Por ejemplo, si wstETH puede usarse como colateral en un protocolo, digamos ABC, dibujaremos una línea entre estos protocolos. Si un token puede usarse como el token subyacente de otro contrato inteligente, entonces conectaremos estos protocolos.
Andy Zhou 30:02
Básicamente, usamos manualmente algunos scripts para obtener una imagen completa de la relación entre los diferentes principales protocolos. Y usaremos estas ideas para orientar las técnicas de análisis estático y fuzzing.
Andy Zhou 30:15
Esto es una cosa en la que estamos trabajando actualmente. Todavía está en una etapa temprana, pero las relaciones que generamos son a veces útiles para el análisis estático y para los sistemas de fuzzing. Otro trabajo que estamos haciendo actualmente es para la inferencia de tipos. Queremos inferir el tipo de los datos de entrada, por ejemplo, los calldata dentro de una llamada a un contrato inteligente. Por ejemplo, del byte 0 al byte 20 de los calldata, podemos inferir que el tipo es una dirección. Y de otro segmento de la entrada, el tipo es otro. Esto sería muy útil en el fuzzing. Intentamos aprovechar el análisis estático para realizar la inferencia de tipos.
DeGatchi 30:55
Interesante. Sí, la relación entre el material anterior es como un grafo. Lo que estás haciendo es difícil. Porque, digamos, estas son también algunas técnicas. Si tienes un contrato y tiene referencias a otros contratos en él, digamos direcciones codificadas de forma fija, ¿verdad? Eso es bastante simple. Eso significa que conoces el tipo de espacio al que puedes acceder y cómo se conectan todos en esa relación. Pero también hay contratos que ni siquiera se referencian directamente entre sí. Puedes referenciarlos con calldata, o puedes crear un pool que ahora referencia a un nuevo contrato. Creo que se llamaba Iron Vault o algo así. Estaba en el otro ecosistema.
Andy Zhou 31:33
Sí, no es fácil, pero podemos aprovechar las transacciones en cadena para conectarlos porque las transacciones en cadena pueden revelar las interacciones entre diferentes contratos inteligentes.
DeGatchi 31:44
Pero el flujo con eso es que estás mirando las secuencias normales de funciones, ¿verdad? Y para encontrar un día cero, tienes que romper la norma y hacer algo diferente. Bueno, creo que es bueno identificar cuál es lo normal, y ahora sabes qué no hacer y cómo romperlo, lo cual es bueno. Interesante. Entonces, ¿cuáles son tus planes con el fuzzer? ¿Vas a emparejarlo para hacer algún tipo de fuzzing de red neuronal? Es el intento de Trail of Bits. No vale la pena, pero francamente, simplemente no se está implementando correctamente. ¿Y cuál es tu tipo de plan con el fuzzer? ¿Vas a hacer fuzzing asistido por redes neuronales o completamente IA? ¿Cuál es el tipo de lugar al que ir ahora?
Andy Zhou 32:23
Para el fuzzing, primero intentamos tener un muy buen sistema de inferencia de tipos para facilitar la generación de las entradas semilla y la mutación de las entradas para el fuzzer. También aprovechamos la IA para ayudarnos a generar las entradas semilla. También intentamos acelerar el proceso de fuzzing porque queremos tener uno muy eficiente para identificar rápidamente las vulnerabilidades. Hay tres partes diferentes de trabajos que estamos intentando mejorar en los fuzzers.
DeGatchi 33:01
Bien, interesante. Hay algo que es un poco diferente de esta conversación sobre herramientas cuando pensamos en el espacio, ¿verdad? Y eres profesor, así que sabes de estas cosas.
DeGatchi 33:10
Mucha gente está explicando cómo convertirse en un auditor de primer nivel. Las personas como los líderes de investigación de seguridad en Spearbit o Trail of Bits—cualquier cosa, incluso solo auditores independientes—están haciéndolo muy bien con la afluencia de nuevos auditores, ¿verdad? ¿Cómo apuntas a diferenciarte realmente de estos nuevos participantes que entran y de otras empresas y otras personas que quiero que tengan las habilidades? Obviamente no hay muchos de ellos, pero siguen entrando. Y a medida que entran, estas personas más inteligentes entran, tal vez incluso con IA. Sé que personas como y testify están haciendo generación de exploits con IA. Estoy seguro de que has oído hablar de ellos. ¿Y qué estás haciendo para diferenciarte realmente de estas personas a medida que entran nuevos auditores y nuevos actores al espacio?
Andy Zhou 33:55
Sí, bueno, esa es una pregunta muy desafiante. Creo que desde mi perspectiva, necesitas tener una buena comprensión de la tendencia de esta área en particular, por ejemplo, el área de seguridad de protocolos DeFi. Hay diferentes vectores de ataque y nuevos tipos de vulnerabilidades. Y necesitas tener una muy buena motivación o habilidades para intentar estudiar estas nuevas cosas. Cómo aprender rápidamente estas nuevas cosas y cómo digerir rápidamente el nuevo conocimiento son mis ventajas. Y por supuesto, habrá muchas personas inteligentes que entrarán en este campo. Pero diría que porque he sido entrenado como doctor, sé cómo entrar rápidamente en un nuevo área, cómo entender rápidamente el estado del arte, cómo encontrar rápidamente un buen problema en el que trabajar, y cómo tomar técnicas de otra área para traerlas a esta área y resolver este problema. Creo que eso es lo que me diferencia de los demás.
DeGatchi 34:56
Cien por ciento. Creo que si piensas en un grupo de personas y todas son inteligentes y capaces, la principal diferencia es solo la creatividad; eso parece que si todos están en un campo de juego nivelado, lo cual nunca es cierto o simplemente igualmente inteligentes. Y lo más importante es la creatividad, ¿verdad? Todos pensamos de manera diferente y tenemos diferentes puntos de vista. Así que creo que eso es lo principal, como creer verdaderamente en ti mismo y creer cuando otros no creen que puedes hacer algo y nadie más realmente lo está haciendo, y crees que se puede hacer y puede que no sepas cómo se puede hacer, pero mientras sigas empujando y tengas la pasión para encontrarlo, es realmente lo más importante. Ser capaz de identificar nuevas tendencias y capitalizarlas es lo más importante. Y sucede tan a menudo; solo tienes que estar preparado con el conocimiento para capitalizarlo y aprovechar la oportunidad.
DeGatchi 35:45
Desafortunadamente, yo no lo he hecho, porque no conozco la IA. Se trata de estar en el lugar correcto en el momento correcto con las habilidades correctas. Creo que la IA es verdaderamente la próxima frontera, y cualquiera que no se actualice en ella, creo, se quedará atrás. No importa en mundos de desarrolladores si tienes conocimiento del dominio y también IA, pero si los combinas, no estás haciendo una diferencia mundial porque tienes conocimiento de ambas áreas. Y así puedes pensar en mejores soluciones a los problemas versus conocimiento compartimentado. Supongo que un buen ejemplo es entender las matemáticas. Ves el mundo de manera diferente a alguien que no las entiende. Y si combinas eso con cosas diferentes, como el sector financiero, entonces puedes pensar en formas de construir sistemas de trading algorítmico realmente eficientes, ¿verdad? Y ganar una ventaja increíble aquí para la competencia. Creo que ese tipo en AVAX capturó, creo, el 90% de todos los arbitrajes porque simplemente tenía una ventaja matemática. Eso es lo que quiero decir. Si tienes solo dos dominios, realmente puedes capturar muchas oportunidades. porque simplemente es difícil aprender estas cosas. Y cuantos más dominios conoces que se pueden combinar, menos competencia hay; simplemente se aleja.
DeGatchi 36:55
¿Entonces dónde te ves a ti mismo y a BlockSec en el futuro? ¿Cómo te ves progresando en tu carrera y en la empresa misma? ¿Y hacia dónde crees que va la industria, y hacia dónde debería ir?
Andy Zhou 37:05
Creo que para la industria, porque Web3 es un área muy nueva y todavía estamos en las etapas tempranas de este nuevo campo. Desde mi perspectiva, la industria se está moviendo muy rápido. Al mismo tiempo, hay tantos problemas de seguridad que la industria no ha abordado. Estamos tratando de usar nuestras propias soluciones para ayudar al ecosistema a moverse rápido pero también de forma segura. Tenemos los productos y protocolos para proteger sus activos. Esto es una cosa. También vemos en el futuro que habrá un par de diferentes usuarios de Web3 en este campo. Los usuarios también necesitan protección de seguridad porque es un poco complicado para ellos usar los productos de Web3 actualmente. Necesitan tener un muy buen método para proteger sus claves privadas y sus activos, porque la mayoría de los usuarios no entienden el proceso de aprobación de los tokens ERC20. Simplemente aprueban todos los tokens en el contrato malicioso.
Andy Zhou 38:10
Así que necesitamos tener un muy buen sistema de protección para los usuarios de DeFi, que no ha sido abordado por la industria actual. Por supuesto, hay algunas empresas que están haciendo esto, pero hay mejores formas de proteger a los usuarios.
DeGatchi 38:27
Creo que además del fuzzer, puedes expandirte a algo como una billetera cuando hablas de proteger a los usuarios. Quiero decir, hay dos maneras diferentes o tres maneras diferentes. Es como las transacciones pendientes, que no son 100% seguras. Así que tienes que ir un poco más detallado. Y eso podría ser como encontrar los días cero ellos mismos. Pero si eso no es una opción, entonces simplemente tener la capacidad de incrustar el análisis en la billetera misma podría ser bueno, incluso si es como uno rápido, ¿verdad? Van a estar haciendo tokens o lo que sea en lo que se metan. Pero si puedes realizar algún análisis antes de que hagan la transacción, y creo que alguien ha hecho esto antes.
Andy Zhou 39:01
Hay un par de empresas haciendo eso para simular las transacciones y decirles a los usuarios las consecuencias de una transacción si la firman.
DeGatchi 39:10
Creo que eso es realmente inteligente, y creo que es una progresión fácil hacia la empresa o cualquier cosa que haga seguridad, lo cual creo que es una manera realmente genial. Así que dáselo directamente. Creo que era fire o algo así. No recuerdo. Pero sí, esos son realmente buenos, las simulaciones, pero creo que tienen algunas fallas porque estás haciendo como una transacción en un LP, por ejemplo. La gente haría bytecode personalizado y haría funcionalidad condicional. Digamos que esos 100 tipos de LPs cambian a hacer otra cosa. Así que la simulación inicial de cuando tiene su dinero o lo que sea no aparecería a menos que realmente probaras todo, cada ruta de función. Eso es algo en lo que estaba pensando. Pero también, hay tantos problemas difíciles. Tienes que elegir tu veneno. ¿Qué te emociona del futuro de la ciber, la ciberseg, y la combinación de IA? Estoy seguro de que vas a usar mucho más. ¿Cuáles son tus planes y cómo te ves yendo por ese camino?
Andy Zhou 40:06
Sí, en cuanto a mi plan, creo que queremos, ya sabes, combinar estas nuevas técnicas para proteger mejor a la comunidad y a los usuarios. Continuaremos invirtiendo nuestros recursos en IA, ya que la IA combinada con las escenas de seguridad de Web3 producirá mejores productos. Queremos impulsar las cosas más allá para tener un mejor sistema de detección de ataques, un mejor sistema de fuzzing, y mejores soluciones para proteger los activos de los usuarios. Así que este es nuestro plan actual dentro de BlockSec.
DeGatchi 40:36
Interesante. De acuerdo. Estoy seguro de que mejora mucho y puedes hacer mucho más. Ya estás haciendo mucho para prevenir todos estos hacks. Pero creo que hay tanto margen para más innovación, y apenas está comenzando. Creo que una vez que la gente empiece a enterarse de ello y prevengas más hacks, se volverá mucho más prominente y habrá mucha más competencia, lo cual es genial. Competencia saludable para prevenir hacks y realmente expandir el ecosistema. Porque el objetivo final es reemplazar CeFi, ¿verdad? No quieres esperar cuatro meses para sacar dinero de tus cuentas bancarias. Es bastante ridículo. Los esfuerzos en el sector de la información en realidad están infravaluados por el retail y los protocolos existentes. Solo lo saben realmente cuando son hackeados. Creo que así es como algunas personas se meten en ello. Pero hombre, estoy súper emocionado por lo que están construyendo, y soy muy optimista sobre el futuro con la ciber y el cripto. Pero hombre, realmente aprecio que hayas venido. Estoy muy contento de haber sido el primer podcast en el que saltaste. Sí, realmente aprecio tu tiempo, Andy. Ha sido una gran charla.
Andy Zhou 41:38
Sí, es un honor estar aquí. Gracias, DeGatchi.



