
El 16 de enero de 2024, Socket Tech fue atacado y perdió alrededor de 3,3 millones de dólares estadounidenses.El atacante aprovechó las lagunas en la sesión de verificación de datos en un contrato de socket para robar los fondos del usuario del contrato autorizado a través de la entrada de datos maliciosos.Este ataque trajo pérdidas a 230 direcciones, y la mayor pérdida de dirección individual fue de aproximadamente 656,000 dólares estadounidenses.
Introducción de fondo
Socket es un protocolo interoperable que sirve a la seguridad de la cadena cruzada, datos eficientes y transmisión de activos.El contrato de Gateway de Socket es el punto de acceso para toda la interacción con la capa de liquidez del socket. .
Tres días antes del ataque de piratería, el administrador de contratos de socket ejecutó el comando AddRoute y agregó una nueva ruta al sistema.El propósito de agregar rutas es extender la función de la puerta de enlace del zócalo, pero inadvertidamente introdujo una laguna clave.
La siguiente figura es un registro de agregar enrutamiento a través del administrador del contrato
>
Describir
1. A las 15:03, el 16 de enero, la hora de Beijing, la billetera del atacante fue transferida a los fondos utilizados por el ataque de nuestro tiempo muestra que los fondos son de 0xe620, que está relacionado con 10 BNB extraídos del efectivo de Tornado.
>
2. Estos fondos se utilizan para crear y ejecutar dos contratos para usar las lagunas de Socket.El primer contrato está dirigido al USDC (captura de pantalla de la siguiente manera) en la dirección de la dirección de Socketgateway;
>
3. Luego, el segundo contrato apunta a Weth, USDT, WBTC, DAI y Matic en la dirección de la víctima.Como resultado, las otras 104 víctimas perdieron los siguientes activos:
-42.47526105 Weth
-347,005.65 USDT
-2.88962154 WBTC
-13,821.01 Dai
-165,356.99 Matic
4. El atacante convierte el USDC y el USDT en ETH.
>
Vulnerabilidad
Las vulnerabilidades utilizadas por el atacante existen en la dirección de enrutamiento recientemente agregada Routeaddress.
La función original de la función PerformAction en esta dirección es ayudar a la función de envolver y desenvolver.Sin embargo, aparece una vulnerabilidad clave en esta función: los usuarios llaman directamente datos externos a través de Swapextradata en .call () sin verificación, lo que significa que los atacantes pueden ejecutar funciones maliciosas arbitrarias.
>
En este incidente, el atacante realizó una entrada maliciosa de swapextradata para activar la función de transferencia.La llamada maliciosa aprovechó la autorización del usuario del contrato de Socketgateway y les robó fondos.
Aunque el contrato se asegurará de que el saldo del usuario cambie correctamente después de que se llame a la información verificando la verificación del saldo para garantizar que el saldo del usuario cambie, pero la función no considera que el atacante establece la cantidad a 0.
>
Restaurar el proceso de ataque
1. Use un contrato de ataque para llamar 0x00000196 () en el contrato de puerta de enlace de Socket.
>
2. Fallback () usa la firma hexagonal 196 para llamar a las lagunas.
>
3. En la captura de pantalla a continuación, podemos ver la falsa entrada utilizada por el atacante.
>
4. A continuación, llamará a WrappedTokenWapperImpl.performAction () para intercambiar.
>
5. Sin ninguna verificación, el falso swapextradata es aceptado y ejecutado por FromToken (Weth).
>
6. El atacante ejecuta repetidamente el proceso anterior hasta que los activos de la víctima estén agotados.Después de que apareció la transacción maliciosa, el enchufe rápidamente llamó a Disableuteute, bloqueando el enrutamiento de las lagunas antes, evitando el mayor rango de ataques.
7. El 23 de enero, Socket anunció que había recuperado 1032 ETR y anunció el 25 que compensaría todas las pérdidas.Este evento está resuelto.
>
Resumen de eventos
En un contrato de enrutamiento autorizado por usuarios ilimitados, los ataques maliciosos de llamada de llamada no son infrecuentes.Los ataques similares incluyen Dexible y Héctor Bridge.El 17 de febrero de 2023, el intercambio descentralizado dexible fue atacado y perdió más de 1.5 millones de dólares estadounidenses.Las utilidades de vulnerabilidad ingresan los días de llamada maliciosa a la función relleno () de los activos de los usuarios dexibles para robar.El 2 de junio de 2023, el protocolo de la red Héctor fue atacado.El atacante desplegó un falso contrato del USDC y aprobó los llamados maliciosos para transferir 652,000 USDC reales del contrato de la víctima.
La plataforma de polímero blockchain generalmente utiliza una serie de puentes y contratos de enrutamiento para mejorar la liquidez y reducir las pérdidas.Sin embargo, este complicado envasado puede traer más problemas a la seguridad.Nos complace ver que el incidente del socket se puede resolver, y CERTIK continuará comprometido a proporcionar una auditoría y pruebas integrales para la plataforma, reduciendo varios riesgos agregados y mejorando el nivel de seguridad de la confianza comunitaria y toda la industria.