Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 por la tarde, los contratos de Orion Protocol en Ethereum y Binance Smart Chain sufrieron un ataque de reentrada debido a una vulnerabilidad, con pérdidas de aproximadamente 2.9 millones de dólares, que incluyen 2,844,766 USDT en la cadena de Ethereum y 191,606 BUSD en la cadena BSC.
Análisis del proceso de ataque
El atacante primero creó un contrato de Token especial y llevó a cabo una serie de preparativos. Luego, el atacante utilizó la función de intercambio de un DEX para pedir prestado y llamó al método swapThroughOrionPool de OrionProtocol para intercambiar tokens. La ruta de intercambio incluía la dirección del contrato de Token creado por el atacante, lo que sentó las bases para un ataque de devolución posterior.
Durante el proceso de intercambio, el contrato Token del atacante activa la devolución de llamada a través de la función Transfer, llamando repetidamente a la función depositAsset de OrionProtocol, lo que provoca que el monto del depósito se acumule continuamente. Al final, el atacante completó su ganancia mediante la operación de retiro.
Flujo de fondos
Los fondos iniciales del atacante provienen de una cuenta de cartera caliente de una plataforma de intercambio. De las 1,651 ETH obtenidas, 657.5 todavía permanecen en la dirección de la billetera del atacante, mientras que el resto ha sido transferido a través de servicios de mezcla.
Análisis de Vulnerabilidades
El núcleo de la vulnerabilidad radica en la implementación de las funciones doSwapThroughOrionPool y _doSwapTokens. El contrato actualiza la variable curBalance después de la operación de transferencia, lo que crea condiciones para un ataque de reentrada. El atacante, al agregar lógica de devolución de llamada en la función transfer de un Token personalizado, provoca una actualización incorrecta de curBalance, lo que finalmente permite al atacante retirar fondos adicionales después de reembolsar el préstamo relámpago.
Reproducción de ataques
Los investigadores proporcionaron parte del código POC, simulando el proceso de ataque. Los resultados de las pruebas muestran que el atacante logró explotar la vulnerabilidad para obtener USDT adicional.
Sugerencias de seguridad
Al diseñar el contrato, se deben considerar las posibles situaciones inesperadas que pueden surgir debido a la variedad de tokens y rutas de intercambio.
Seguir la norma de codificación "primero juzgar, luego escribir en variables, y después realizar llamadas externas" (patrón Checks-Effects-Interactions).
Fortalecer las restricciones y verificaciones sobre las llamadas externas, especialmente aquellas relacionadas con operaciones de transferencia de fondos.
Realizar auditorías de seguridad periódicas para detectar y corregir potenciales vulnerabilidades a tiempo.
Implementar medidas de seguridad adicionales como la firma múltiple para prevenir fallos de un solo punto.
Este incidente destaca una vez más los desafíos de seguridad que enfrentan los proyectos DeFi. Los desarrolladores deben mantenerse siempre alerta y mejorar continuamente la seguridad de los contratos para proteger los activos de los usuarios y la reputación del proyecto.
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
17 me gusta
Recompensa
17
6
Compartir
Comentar
0/400
SellLowExpert
· hace1h
Otra vez reentrada. Esta moneda ya debería haber colapsado.
Ver originalesResponder0
WalletWhisperer
· 07-31 16:43
Otro proyecto que ha sido afectado.
Ver originalesResponder0
SatoshiHeir
· 07-30 13:22
Es necesario señalar que el riesgo de reentrancy de los contratos inteligentes ya se menciona en la primera página del libro de texto de Solidity, parece que otro grupo de proyecto no ha hecho su tarea...
Ver originalesResponder0
SnapshotDayLaborer
· 07-30 13:22
tomar a la gente por tonta tomar a la gente por tonta~
Ver originalesResponder0
ChainComedian
· 07-30 12:59
Otra vez 290w, Ser engañados, ¡agárrense y corran!
OrionProtocol sufrió un ataque de reentrada, perdiendo 2.9 millones de dólares.
Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023 por la tarde, los contratos de Orion Protocol en Ethereum y Binance Smart Chain sufrieron un ataque de reentrada debido a una vulnerabilidad, con pérdidas de aproximadamente 2.9 millones de dólares, que incluyen 2,844,766 USDT en la cadena de Ethereum y 191,606 BUSD en la cadena BSC.
Análisis del proceso de ataque
El atacante primero creó un contrato de Token especial y llevó a cabo una serie de preparativos. Luego, el atacante utilizó la función de intercambio de un DEX para pedir prestado y llamó al método swapThroughOrionPool de OrionProtocol para intercambiar tokens. La ruta de intercambio incluía la dirección del contrato de Token creado por el atacante, lo que sentó las bases para un ataque de devolución posterior.
Durante el proceso de intercambio, el contrato Token del atacante activa la devolución de llamada a través de la función Transfer, llamando repetidamente a la función depositAsset de OrionProtocol, lo que provoca que el monto del depósito se acumule continuamente. Al final, el atacante completó su ganancia mediante la operación de retiro.
Flujo de fondos
Los fondos iniciales del atacante provienen de una cuenta de cartera caliente de una plataforma de intercambio. De las 1,651 ETH obtenidas, 657.5 todavía permanecen en la dirección de la billetera del atacante, mientras que el resto ha sido transferido a través de servicios de mezcla.
Análisis de Vulnerabilidades
El núcleo de la vulnerabilidad radica en la implementación de las funciones doSwapThroughOrionPool y _doSwapTokens. El contrato actualiza la variable curBalance después de la operación de transferencia, lo que crea condiciones para un ataque de reentrada. El atacante, al agregar lógica de devolución de llamada en la función transfer de un Token personalizado, provoca una actualización incorrecta de curBalance, lo que finalmente permite al atacante retirar fondos adicionales después de reembolsar el préstamo relámpago.
Reproducción de ataques
Los investigadores proporcionaron parte del código POC, simulando el proceso de ataque. Los resultados de las pruebas muestran que el atacante logró explotar la vulnerabilidad para obtener USDT adicional.
Sugerencias de seguridad
Este incidente destaca una vez más los desafíos de seguridad que enfrentan los proyectos DeFi. Los desarrolladores deben mantenerse siempre alerta y mejorar continuamente la seguridad de los contratos para proteger los activos de los usuarios y la reputación del proyecto.