Un robo on-chain causado por el almacenamiento transitorio: detrás de una pérdida de 300,000 dólares
El 30 de marzo de 2025, un proyecto de trading apalancado en la cadena de Ethereum llamado SIR.trading fue atacado, lo que resultó en una pérdida de activos de más de 300,000 dólares. El equipo de seguridad llevó a cabo un análisis profundo de este incidente, revelando los detalles y las causas del ataque.
Antecedentes del evento
Los atacantes aprovecharon la característica de almacenamiento transitorio introducida en la versión 0.8.24 de Solidity. Esta nueva ubicación de almacenamiento de datos está diseñada para proporcionar una forma de almacenamiento temporal efectiva y de bajo costo durante la transacción. Las principales características del almacenamiento transitorio incluyen:
Bajo costo de gas: el costo de operación es fijo en 100 gas.
Persistencia de la transacción: los datos permanecen válidos durante toda la transacción.
Eliminación automática: Después de que la transacción haya finalizado, el almacenamiento se restablece automáticamente a cero.
Raíz del ataque
La raíz del ataque radica en que los valores almacenados transitoriamente mediante tstore en la función no se borran al finalizar la llamada a la función. Esto permite a los atacantes construir direcciones maliciosas específicas, eludir la verificación de permisos y transferir tokens.
Proceso de ataque
El atacante crea dos tokens maliciosos A y B, y crea piscinas para estos dos tokens en un DEX e inyecta liquidez.
El atacante llama a la función initialize del contrato Vault, utilizando el token A como colateral y el token B como token de deuda para crear un mercado de comercio apalancado.
El atacante llama a la función mint del contrato de Vault, depositando el token de deuda B para acuñar el token apalancado. En este proceso, la dirección del pool DEX y la cantidad acuñada se almacenan de forma transitoria.
El atacante crea un contrato malicioso cuya dirección es la misma que la cantidad de acuñación almacenada temporalmente anteriormente.
El atacante llamó a la función de devolución de llamada del contrato Vault a través de un contrato malicioso, y debido a que los valores en el almacenamiento transitorio no se habían limpiado, logró eludir la verificación de permisos.
Por último, el atacante llama directamente a la función de retorno del contrato Vault mediante un ataque al contrato, transfiriendo otros tokens (como WBTC, WETH) para obtener ganancias.
Análisis del flujo de capital
Según los datos de la herramienta de análisis on-chain, los atacantes robaron aproximadamente 300,000 dólares en activos, incluyendo:
17,814.8626 USDC
1.4085 WBTC
119.871 WETH
Estos activos fueron luego convertidos a WETH y finalmente transferidos a una herramienta de anonimato. La fuente inicial de fondos del atacante fue de 0.3 ETH transferidos desde esa herramienta.
Sugerencias de seguridad
Para prevenir ataques similares, el equipo del proyecto debe:
Después de que finalice la llamada a la función, use inmediatamente tstore(key para limpiar los valores en el almacenamiento transitorio.
Fortalecer la auditoría del código de los contratos y las pruebas de seguridad.
Use con precaución las nuevas características del lenguaje introducidas, comprendiendo plenamente sus riesgos potenciales.
Este incidente enfatiza una vez más la importancia de mantener un equilibrio entre la seguridad y la aplicación de nuevas tecnologías en el desarrollo de proyectos de blockchain. A medida que la tecnología avanza constantemente, los desarrolladores y expertos en seguridad deben mantenerse alerta, identificando y respondiendo a nuevos desafíos de seguridad de manera oportuna.
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.
11 me gusta
Recompensa
11
7
Compartir
Comentar
0/400
MemeTokenGenius
· hace14h
¿Qué adorable es esto? ¿Se lanza sin siquiera una prueba?
Ver originalesResponder0
quiet_lurker
· hace14h
Otro proyecto ha sido aplastado contra el suelo.
Ver originalesResponder0
PumpBeforeRug
· hace14h
Escuché que esta vez se dio la vuelta y salió corriendo~contratos inteligentes pequeño fallo
Ver originalesResponder0
MEVHunter
· hace14h
¡30 mil es demasiado barato! Ni siquiera vale la pena usar Flash Loans.
Ver originalesResponder0
ContractSurrender
· hace15h
Viejos proyectos Todo dentro nuevas características Fresco...
Una vulnerabilidad de almacenamiento transitorio llevó a un ataque de 300,000 dólares por parte de un hacker en un proyecto de Ethereum.
Un robo on-chain causado por el almacenamiento transitorio: detrás de una pérdida de 300,000 dólares
El 30 de marzo de 2025, un proyecto de trading apalancado en la cadena de Ethereum llamado SIR.trading fue atacado, lo que resultó en una pérdida de activos de más de 300,000 dólares. El equipo de seguridad llevó a cabo un análisis profundo de este incidente, revelando los detalles y las causas del ataque.
Antecedentes del evento
Los atacantes aprovecharon la característica de almacenamiento transitorio introducida en la versión 0.8.24 de Solidity. Esta nueva ubicación de almacenamiento de datos está diseñada para proporcionar una forma de almacenamiento temporal efectiva y de bajo costo durante la transacción. Las principales características del almacenamiento transitorio incluyen:
Raíz del ataque
La raíz del ataque radica en que los valores almacenados transitoriamente mediante tstore en la función no se borran al finalizar la llamada a la función. Esto permite a los atacantes construir direcciones maliciosas específicas, eludir la verificación de permisos y transferir tokens.
Proceso de ataque
El atacante crea dos tokens maliciosos A y B, y crea piscinas para estos dos tokens en un DEX e inyecta liquidez.
El atacante llama a la función initialize del contrato Vault, utilizando el token A como colateral y el token B como token de deuda para crear un mercado de comercio apalancado.
El atacante llama a la función mint del contrato de Vault, depositando el token de deuda B para acuñar el token apalancado. En este proceso, la dirección del pool DEX y la cantidad acuñada se almacenan de forma transitoria.
El atacante crea un contrato malicioso cuya dirección es la misma que la cantidad de acuñación almacenada temporalmente anteriormente.
El atacante llamó a la función de devolución de llamada del contrato Vault a través de un contrato malicioso, y debido a que los valores en el almacenamiento transitorio no se habían limpiado, logró eludir la verificación de permisos.
Por último, el atacante llama directamente a la función de retorno del contrato Vault mediante un ataque al contrato, transfiriendo otros tokens (como WBTC, WETH) para obtener ganancias.
Análisis del flujo de capital
Según los datos de la herramienta de análisis on-chain, los atacantes robaron aproximadamente 300,000 dólares en activos, incluyendo:
Estos activos fueron luego convertidos a WETH y finalmente transferidos a una herramienta de anonimato. La fuente inicial de fondos del atacante fue de 0.3 ETH transferidos desde esa herramienta.
Sugerencias de seguridad
Para prevenir ataques similares, el equipo del proyecto debe:
Este incidente enfatiza una vez más la importancia de mantener un equilibrio entre la seguridad y la aplicación de nuevas tecnologías en el desarrollo de proyectos de blockchain. A medida que la tecnología avanza constantemente, los desarrolladores y expertos en seguridad deben mantenerse alerta, identificando y respondiendo a nuevos desafíos de seguridad de manera oportuna.