El equipo de PeckShield analizó en el artículo anterior "PeckShield: análisis tecnológico extremo, la historia del protocolo bZx atacado por vulnerabilidades de piratas informáticos" que el contrato bZx no es perfecto para juzgar el estado de la garantía.
El 18 de febrero, bZx se encontró nuevamente con un ataque similar. El principio técnico de este ataque era diferente al anterior. Esta vez, el hacker "engañaba" el contrato de bZx manipulando el precio de Oracle.
Desde la perspectiva del proceso de ataque, esta vez es justo lo contrario de la última vez, pero el método de arbitraje general sigue siendo el mismo. La causa principal se debe principalmente a la pequeña liquidez compartida entre plataformas y las fallas de diseño en el mecanismo de precios. .
Figura: cinco pasos de explotación con manipulación de Oracle
La intención original de este artículo es analizar algunos detalles del ataque de esta vulnerabilidad para que todos puedan tener una comprensión más intuitiva del ataque y esperamos que pueda conducir a discusiones más profundas. Creemos que estas discusiones serán muy beneficiosas para la mejora y el desarrollo de la comunidad DeFi, especialmente cuando la parte del proyecto está desarrollando la próxima generación de productos DeFi, puede ayudar a diseñar un modelo de distribución de liquidez más seguro y confiable.
Los detalles del ataque de la vulnerabilidad son los siguientes:
Este ataque ocurrió el 2020-02-18 11:18:58 hora de Beijing (altura del bloque #9504627 ). La información de la transacción del atacante se puede encontrar en etherscan. Este proceso de ataque se puede dividir en los siguientes cinco pasos:
Paso 1: préstamo flash para obtener activos disponibles
El contrato bZx tiene una interfaz flashBorrowToken(), que permite a la persona que llama tomar prestados activos de la plataforma bZx para participar en actividades DeFi a "costo cero" y luego reembolsar esta parte de los activos cuando se completa la transacción. Y la persona que llama puede especificar la dirección del destinatario del activo mientras presta el activo.
Datos: el número actual de transacciones no confirmadas en toda la red Bitcoin es 6868: Jinse Finance News, según los últimos datos, el número actual de transacciones no confirmadas en toda la red Bitcoin es 6868 y la potencia informática de toda la red es 218,35 EH/s, transacciones de 24 horas La tasa es de 3,43 transacciones/segundo, y la dificultad actual de toda la red es de 29,57 T. Se prevé que la próxima dificultad aumente en un 0,24 % a 29,64 T, y quedan 4 días y Faltan 19 horas para el ajuste. [2022/7/2 1:45:30]
Figura 1: Préstamo Flashloan de bZx
Esta vez, el atacante prestó 7500 ETH a la plataforma bZx y designó el contrato del atacante (que se había implementado antes) como la dirección del receptor de activos. Esta parte es la función básica de préstamo, y no se dará más explicación aquí.
Después de este paso, la distribución de los activos del sistema se muestra en la siguiente tabla:
Paso 2: recaudar sUSD
En primer lugar, presentemos el mejor papel de apoyo de los atacantes de hoy: sUSD, sUSD es una moneda estable emitida por el partido del proyecto Synthetix. Su precio de moneda es normalmente igual a 1 dólar estadounidense, y la circulación total es de 5,563,037 piezas (estadísticas en febrero 2020 18).
Después de obtener ETH a través del primer préstamo flash, el atacante intercambió un total de 900 ETH por sUSD a través de KyberNetwork DEX en dos lotes. Entre ellos, se intercambiaron por primera vez 540 ETH (el precio de KyberUniswap obtenido por la consulta interna de KyberNetwork es el mejor), el atacante obtuvo 92 419 sUSD; el segundo lote se dividió en 18 veces, cada uno de los cuales se intercambió por 20 ETH, (Kyber- sUSD se confirmó después de la consulta de KyberNetwork El precio es el más adecuado), el atacante obtuvo 63 584 sUSD y obtuvo un total de 156 003 sUSD.
El oro al contado se situó en 1.850 dólares la onza por primera vez desde el 23 de noviembre: El mercado mostró que el oro al contado se situó en 1.850 dólares la onza por primera vez desde el 23 de noviembre, un aumento de más del 0,6 % en el día. La plata al contado subió más de un 1% a 24,37 dólares la onza. [2020/12/8 14:31:03]
Figura 2: Bombeo con Kyber (y Uniswap)
Estos dos pasos también son un proceso normal de intercambio DEX Después de estos dos lotes de operaciones, el precio de sUSD a ETH se disparó a 0,00899, que es 2,5 veces el precio de mercado.
Después de este paso, el precio de sUSD se elevó 1,5 veces y los activos en manos del atacante aún interactuaban con KyberNetwork con normalidad y no se produjo ningún ataque sustancial. Sin embargo, KybrNetwork usa internamente Uniswap para completar la conversión entre sUSD y ETH, lo que hace que otras plataformas (como bZx) que usan Uniswap como sUSD/ETH Oracle crean erróneamente que el precio actual de sUSD es realmente tan alto que desencadena el ataque posterior. . En este punto, los activos del sistema son los siguientes:
Paso tres: adquiere más fichas
El atacante espera cambiar los 6000 ETH que tiene en la mano por USD a través de la interfaz ExchangeEtherForSynths() de Synthetix. Y Synthetix no tenía suficientes sUSD para facilitar esta transacción. Solo se intercambiaron 3518 ETH, y los 2482 ETH restantes se devolvieron al atacante. El atacante obtuvo 943 837 sUSD.
Figura 3: Acaparamiento de Synthetix
Hasta el momento, el atacante tiene un total de 1.099.841 sUSD, lo que representa el 19,7% de la circulación total.
Los datos del libro mayor en el sistema actual son los siguientes:
Paso cuatro: préstamos hipotecarios
El atacante hipotecó todos los 1.099.841 sUSD que tenía en la mano en el contrato bZx a través de la interfaz de bZx. de es demasiado alto, por lo que se prestaron 6.796 ETH y se tomaron prestados 2.868 ETH más.
Figura 4: Préstamos garantizados de bZx
Hasta el momento, la información del libro mayor del sistema es la siguiente:
Paso 5: Pago rápido del préstamo
El atacante usó los 6796 ETH prestados de bZx y los activos restantes en su mano para devolver los 7500 ETH prestados previamente de bZx, y luego se fue para completar la operación de préstamo rápido.
Figura 5: Reembolsar el préstamo flash a bZx
Después de completar todo el proceso de préstamo flash, la situación actual de los activos:
1) 6.796 ETH prestados por la plataforma bZx al atacante;
2) La plataforma bZx posee 1,099,841 sUSD;
3) El atacante todavía tiene 2378 ETH.
Al final, los 2378 ETH en poder del atacante le generaron una ganancia por un total de $665 840 (el precio actual de ETH es de $280); mientras que la plataforma bZx tiene un pasivo de 2868 ETH (6796 - 1 099 841/280), o $803 040.
Resumen
En este ataque, podemos ver varios problemas evidentes en el proceso de diseño de los productos DeFi:
1) Al introducir un Token de terceros, es necesario examinar la seguridad del Token de terceros, si es posible que el mercado lo manipule unilateralmente, causando así fluctuaciones de precios;
2) La plataforma DeFi en sí misma debe tener un mecanismo de tolerancia e inspección de precios. Cuando se utiliza un Oracle de terceros para obtener precios, debe haber tanta verificación como sea posible de los datos de otras partes;
3) La plataforma en sí también debe configurar un mecanismo de válvula de cierre de agua por el precio.
La pérdida de 1271 ETH del primer ataque bZx, y la pérdida de 2378 esta vez, y la diferencia entre los dos ataques es de solo 3 días, muestra que los problemas de seguridad de los proyectos especiales de DeFi son muy serios.
Dado que cada proyecto es desarrollado por diferentes equipos y tienen una comprensión limitada del diseño y la implementación de sus respectivos productos, es probable que los productos integrados tengan problemas de seguridad en el proceso de interacción con plataformas de terceros y luego sufran enemigos. PeckShield sugiere que antes de que el proyecto DeFi entre en línea, debe hacer todo lo posible para encontrar un equipo con una investigación profunda sobre el diseño del producto de cada enlace de DeFi para realizar una auditoría de seguridad completa para evitar posibles riesgos de seguridad.
Tags:
Resumen Hora: 10:00, 17 de febrero de 2020Moderador: Song Jiaji.
Dado que el comercio al contado de bitcoin está abierto todo el año, y los futuros de bitcoin de CME solo se negocian entre semana, si el precio del mercado al contado de bitcoin cambia mucho los fines de semana.
El CEO de Ripple, Brad Garlinghouse, tiene la misión de disipar los temores de los banqueros sobre las criptomonedas y hacer que acepten esta nueva clase de activos.En una entrevista reciente con CNN.
El equipo de PeckShield analizó en el artículo anterior "PeckShield: análisis tecnológico extremo.
(José Roulin, Van Gogh) Prólogo: Para muchas personas, ETH2.0 solo se entiende a medias. Al mismo tiempo, hay muchos malentendidos sobre ETH2.0. Tomará más información y más tiempo entender realmente ETH2.0.
Análisis de mercado Los alcistas de Bitcoin (BTC) están celebrando el primer aumento del activo digital por encima de los $10 000 en los años 20.
Esta mañana, una cuenta de ballena afirmó que su cuenta de criptomonedas fue pirateada y que se robaron $ 15 millones en BTC y $ 30 millones en BCH.