Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023, el proyecto OrionProtocol en Ethereum y Binance Smart Chain sufrió un ataque de reentrada debido a una vulnerabilidad en el contrato, con una pérdida total de aproximadamente 2.9 millones de dólares en activos criptográficos, que incluyen 2,844,766 USDT (Ethereum) y 191,606 BUSD (BSC).
Análisis del proceso de ataque
El atacante primero implementó un contrato de Token personalizado y realizó las operaciones de transferencia y autorización correspondientes, preparándose para el ataque posterior. Luego, el atacante tomó prestados fondos a través de la función de intercambio de un intercambio descentralizado y llamó al método ExchangeWithAtomic.swapThroughOrionPool de OrionProtocol para realizar el intercambio de tokens. La ruta de intercambio se configuró como USDC → Token personalizado del atacante → USDT.
Durante el proceso de intercambio, un atacante aprovechó la función de callback en el contrato del Token personalizado, llamando repetidamente al método ExchangeWithAtomic.depositAsset, lo que provocó que la cantidad depositada se acumulara. Finalmente, el atacante realizó una operación de retiro para obtener ganancias.
Flujo de fondos
Los fondos iniciales del atacante provienen de la billetera caliente de una gran plataforma de intercambio. De los 1,651 ETH obtenidos, 657.5 aún permanecen en la dirección de la billetera del atacante, mientras que el resto ha sido transferido a través de herramientas de mezcla.
Análisis de Vulnerabilidades
El problema central radica en la función doSwapThroughOrionPool del contrato ExchangeWithAtomic. Esta función actualiza la variable curBalance después de realizar la transferencia de tokens, lo que crea condiciones propicias para un ataque de reentrada. El atacante agrega lógica de callback en la función transfer del Token personalizado, llamando repetidamente a la función depositAsset, lo que provoca una actualización incorrecta de curBalance. Finalmente, tras reembolsar el préstamo relámpago, el atacante retira fondos excesivos a través de la función withdraw.
Sugerencias de prevención
El desarrollo de contratos debe seguir el modelo "Checks-Effects-Interactions" (verificaciones-efectos-interacciones), evitando llamadas externas antes de la actualización del estado.
Al implementar la función de intercambio de tokens, se deben considerar los riesgos de seguridad que pueden surgir de los diferentes tipos de tokens y las posibles rutas de intercambio.
Añadir mecanismos de seguridad como bloqueos de reentrada para prevenir ataques de reentrada.
Implementar controles de acceso y medidas de límite para operaciones clave.
Realizar una auditoría de seguridad completa, prestando especial atención a las funciones centrales relacionadas con las operaciones de fondos.
Este evento destaca nuevamente la importancia de la seguridad de los contratos inteligentes. Los proyectos deben prestar atención continua a la seguridad de los contratos, realizar auditorías de código y corregir vulnerabilidades de manera regular para garantizar la seguridad de los activos de los usuarios. Al mismo tiempo, los usuarios también deben mantenerse alerta al participar en nuevos proyectos, prestando atención al estado de seguridad del proyecto y a los informes de auditoría.
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.
13 me gusta
Recompensa
13
6
Republicar
Compartir
Comentar
0/400
ShamedApeSeller
· 07-24 12:02
Otro más que se va.
Ver originalesResponder0
CoffeeOnChain
· 07-24 09:46
¿No hacen auditorías de contratos? Se lo merecen por ser despojados.
Ver originalesResponder0
FlippedSignal
· 07-23 09:34
Otra vez me hackearon.
Ver originalesResponder0
SchrodingersFOMO
· 07-23 09:26
¿Todavía no has terminado de negociar moneda y ya ha explotado otra vez?
Ver originalesResponder0
ETHReserveBank
· 07-23 09:25
Otra vez, enseñanza en línea de expertos en 0day.
Ver originalesResponder0
FlatlineTrader
· 07-23 09:15
¿Todavía no sabes cómo prevenir ataques de reentrada? ¡Eres un novato!
OrionProtocol sufrió un ataque de reentrada, perdiendo 2.9 millones de dólares en encriptación.
Análisis del incidente de ataque de reentrada de OrionProtocol
El 2 de febrero de 2023, el proyecto OrionProtocol en Ethereum y Binance Smart Chain sufrió un ataque de reentrada debido a una vulnerabilidad en el contrato, con una pérdida total de aproximadamente 2.9 millones de dólares en activos criptográficos, que incluyen 2,844,766 USDT (Ethereum) y 191,606 BUSD (BSC).
Análisis del proceso de ataque
El atacante primero implementó un contrato de Token personalizado y realizó las operaciones de transferencia y autorización correspondientes, preparándose para el ataque posterior. Luego, el atacante tomó prestados fondos a través de la función de intercambio de un intercambio descentralizado y llamó al método ExchangeWithAtomic.swapThroughOrionPool de OrionProtocol para realizar el intercambio de tokens. La ruta de intercambio se configuró como USDC → Token personalizado del atacante → USDT.
Durante el proceso de intercambio, un atacante aprovechó la función de callback en el contrato del Token personalizado, llamando repetidamente al método ExchangeWithAtomic.depositAsset, lo que provocó que la cantidad depositada se acumulara. Finalmente, el atacante realizó una operación de retiro para obtener ganancias.
Flujo de fondos
Los fondos iniciales del atacante provienen de la billetera caliente de una gran plataforma de intercambio. De los 1,651 ETH obtenidos, 657.5 aún permanecen en la dirección de la billetera del atacante, mientras que el resto ha sido transferido a través de herramientas de mezcla.
Análisis de Vulnerabilidades
El problema central radica en la función doSwapThroughOrionPool del contrato ExchangeWithAtomic. Esta función actualiza la variable curBalance después de realizar la transferencia de tokens, lo que crea condiciones propicias para un ataque de reentrada. El atacante agrega lógica de callback en la función transfer del Token personalizado, llamando repetidamente a la función depositAsset, lo que provoca una actualización incorrecta de curBalance. Finalmente, tras reembolsar el préstamo relámpago, el atacante retira fondos excesivos a través de la función withdraw.
Sugerencias de prevención
El desarrollo de contratos debe seguir el modelo "Checks-Effects-Interactions" (verificaciones-efectos-interacciones), evitando llamadas externas antes de la actualización del estado.
Al implementar la función de intercambio de tokens, se deben considerar los riesgos de seguridad que pueden surgir de los diferentes tipos de tokens y las posibles rutas de intercambio.
Añadir mecanismos de seguridad como bloqueos de reentrada para prevenir ataques de reentrada.
Implementar controles de acceso y medidas de límite para operaciones clave.
Realizar una auditoría de seguridad completa, prestando especial atención a las funciones centrales relacionadas con las operaciones de fondos.
Este evento destaca nuevamente la importancia de la seguridad de los contratos inteligentes. Los proyectos deben prestar atención continua a la seguridad de los contratos, realizar auditorías de código y corregir vulnerabilidades de manera regular para garantizar la seguridad de los activos de los usuarios. Al mismo tiempo, los usuarios también deben mantenerse alerta al participar en nuevos proyectos, prestando atención al estado de seguridad del proyecto y a los informes de auditoría.