Hackeando puentes

TL;DR Bridges juega un papel cada vez más importante al permitir que varias cadenas de bloques se comuniquen entre sí. Los hermanos y fundadores de Sayfer, Nir Duan (CEO) y Or Duan (CTO), compartieron la experiencia de la piratería informática práctica y su nuevo liderazgo en el campo de la auditoría web3 en Israel Crypto Community (ICC) el 22/9/. 2022 sobre por qué los puentes son tan susceptibles a los ataques, cómo se piratean y cuáles son los mejores enfoques para una auditoría de contrato inteligente exitosa en un puente.

¿Por qué se debe auditar un puente?

Los puentes son un objetivo extremadamente lucrativo para los piratas informáticos criptográficos. Más de $ 1.6 mil millones fueron robados solo en 2022. Esto, en combinación con la complejidad inherente que conlleva la codificación de un puente, hace que la auditoría sea una parte indispensable del proceso de implementación. Sayfer ayuda a otras empresas a ser más seguras mediante la realización de pruebas de penetración, que son una parte crucial de una auditoría de seguridad completa. La auditoría de contratos inteligentes es una parte especializada de la auditoría de seguridad diseñada para el código orientado a la cadena de bloques de una aplicación web3, descentralizada o dapp moderna. El proceso de auditoría tiene como objetivo garantizar que una vez que el contrato inmutable se implemente en la cadena de bloques, solo pueda hacer lo que está destinado a hacer. Los puentes presentan un caso aún más especializado para los auditores, ya que contienen componentes de código en ambas cadenas, así como un componente fuera de la cadena. si es apropiado mentalidad de seguridad y la auditoría no se implementará en este ámbito del desarrollo web3, es muy probable que se sigan drenando millones de dólares en tokens de puentes mal diseñados.

Guía paso a paso para auditar un puente

Aprenda sobre la arquitectura

Naturalmente, la auditoría requiere invocar la mentalidad de un hacker de sombrero blanco de buscar vulnerabilidades y formas de atacar el contrato de la misma manera que lo haría un hacker de sombrero negro. La parte más importante antes de decidir cómo abordar el ataque a un puente es comprender su modelo de seguridad. En el sentido más general, los puentes pueden ser de confianzao confiable. El modelo de confianza, o el centralizado bridge, se basa en un componente de gobierno que, en última instancia, puede decidir cuánto dinero se mueve de una cadena a otra. En una confianza o Descentralizado puente, hay un mecanismo de consenso separado, que valida cada solicitud para transferir el dinero entre las cadenas. Esta parte es sumamente importante cuando decidimos cómo vamos a hackear, o para nuestros propósitos, auditar este puente. Si bien un puente centralizado puede ser considerado indigno por muchos en la comunidad criptográfica, debido a su dependencia de una sola entidad, las complicaciones de seguridad que conlleva el mantenimiento de un mecanismo de consenso completamente separado no dejan a los puentes sin confianza sin sus propias advertencias.

Gestión de claves

¿Quién controla las llaves? Porque si eso no es seguro, nada lo es, como hemos visto con el Ronin cortar a tajos. Incluso si el consenso se distribuye entre varias entidades diferentes, tenemos que considerar qué tan fácil sería tomar el control y qué tan lejos alguien estaría dispuesto a llegar para hacerlo.

Arquitectura del validador

Cuando se trata de puentes descentralizados, no hay una o pocas entidades rectoras, por lo que el enfoque es puramente en la calidad de los validadores, quiénes son, cuál es el mecanismo de consenso, quién puede unirse, cómo la comunicación entre pares entre validadores se hace, etc.

Comprender la base del código

Después de profundizar en la arquitectura básica, si es de confianza o no, y quién tiene el control de las claves del protocolo, podemos analizar los componentes del código base. El primer paso es leer la documentación proporcionada por los desarrolladores. Un buen equipo de desarrollo de puentes debe documentar cada cambio debido a la complejidad inherente de la tarea. Si es posible, hable con el equipo e intente reducir el ciclo de comentarios más adelante respondiendo las preguntas en vivo.

Los scripts de implementación de contratos son quizás una de las partes más importantes de la auditoría; Léalos detenidamente, porque a veces las vulnerabilidades surgen solo de los scripts de implementación, en lugar de directamente del contrato inteligente. Si tiene las herramientas, ejecute los scripts localmente en su computadora, pero no tiene que devolver implemente cualquier cosa en una red principal pública o red de prueba durante una auditoría.

A continuación, mire las pruebas proporcionadas por los desarrolladores. Pueden ayudarlo a comprender mejor la base del código, pero también a probar más adelante sus propias pruebas de explotación y vulnerabilidad. ¡No tienes que reinventar la rueda! Si tiene pruebas con configuraciones y desmontajes, simplemente puede copiar una prueba, cambiarla y crear la suya propia.

Finalmente, y lo más importante cuando se revisa un puente, viene la revisión del flujo de transacciones de extremo a extremo: comprender cómo fluye exactamente el dinero de la cadena A a la cadena B. Aquí es donde se encuentran las vulnerabilidades reales en los puentes, y donde los ojos de los piratas informáticos están como bien. Esto, por supuesto, requiere una mirada más profunda al código de los contratos en sí, así como comenzar a usar varias herramientas de código abierto para ayudar a enumerar el código y buscar vulnerabilidades.

Herramientas de auditoría

Trazando un gráfico de llamada de función puede ser de gran ayuda para entender la estructura de los contratos y las funciones dentro de ellos. Surya by ConsenSys ofrece esta funcionalidad.

Las herramientas que ofrecen análisis diferencial también son muy útiles para la auditoría de contratos, bajo la premisa de que muchos de los proyectos de blockchain más populares y confiables basan su código sobre otros proyectos de código abierto. Si una base de código principal que ha sido auditada varias veces por líderes de la industria se usa en otro proyecto, aunque eso no significa que no se pueda piratear, podemos suponer que es relativamente seguro y centrar nuestros esfuerzos de auditoría en las partes del código que realmente cambiado entre los dos proyectos. Cada vez más, Sayfer ve clientes donde encuentran vulnerabilidades graves solo en la diferencia. Es por eso que desarrollaron una herramienta interna llamada diferencia inteligente, que compara el código fuente de los contratos inteligentes y se basa en las API de Etherscan y Diffchecker.

Los escáneres automatizados son nuestros amigos como auditores para encontrar la "fruta madura". La herramienta más utilizada es deslizan. O enfatiza la importancia del enfoque para ejecutar el escáner de vulnerabilidades: no ejecute simplemente la herramienta y espere que no haya advertencias rojas. Trátelo exactamente como tal: una herramienta. Para ayudar a reducir el ruido de su salida, use banderas para excluir rutas, dependencias o detectores específicos de su escaneo. También puede usar la opción de formato de salida a .json, lo que hace que sea relativamente fácil filtrar y hacer una lista de tareas específicas para su auditoría.

Otra área para verificar son los eventos y errores en cadena. Analizando estos registros de eventos en un explorador de bloques como etherscan es una excelente manera de comprender los casos extremos en el código de contrato inteligente. A menudo, un solo código de error no es motivo de preocupación, pero si el mismo error ocurre una y otra vez, debe comenzar a investigar el patrón y comprender por qué se está comportando mal.

El último paso del proceso es la auditoría manual. Revise todas sus notas y toda la información recopilada hasta el momento. Cuando mire un gran sistema de contratos como un puente, trate de evitar profundizar demasiado en el análisis de rutas específicas, porque puede pasar días buscando vulnerabilidades en lo que termina siendo un callejón sin salida. Trate de ir más allá y encontrar todos los exploits posibles en el marco de tiempo que tiene en lugar de profundizar.

Incluso después de la etapa de auditoría, es importante monitorear los eventos de los contratos después de la implementación para detectar y responder a cualquier ataque, y asegurarse de que los eventos en general correspondan al comportamiento esperado.

Después de aprender estas metodologías, mire la parte en la que Nir y Or demostraron un desafío en vivo en la ICC sobre cómo encontrar la vulnerabilidad en un código:

Resumen

Esperamos que esta publicación le brinde una mejor comprensión de por qué los puentes están siendo atacados en primer lugar, una idea de nuestra metodología y cómo auditamos el contrato inteligente de un puente específico, y le brinde un ejemplo de la vida real de un exploit. Mire la parte final del video para las preguntas y respuestas:

Escrito por: zoe ronen


Escrito por
trituradora anna

Anna es investigadora de seguridad en Sayfer. Le apasiona comprender e investigar los vectores de ataque y defensa que aparecen en las nuevas tecnologías emergentes.

Ir al contenido