
Fuente: Beosin
El 30 de enero de 2024, el tiempo de Beijing, según el monitoreo de riesgos de seguridad Eagleeye de Beosin, la pantalla de monitoreo de la plataforma de advertencia y bloqueo temprano, la pantalla,El Protocolo Defi MIM_SPELL fue atacado por Hackers Lightning Loan, lo que resultó en una pérdida de más de 6 millones de dólares estadounidenses.En la actualidad, el atacante intercambiará los fondos robados a ETH y los transferirá a las dos direcciones de los atacantes.
Análisis de vulnerabilidad
La razón principal de este incidente esEl atacante utiliza el contrato del Partido del Proyecto para usar el algoritmo ascendente y controlar el parámetro a 1. El control de error máximo que se asumirá hacia arriba se utiliza, lo que conducirá a desequilibrios en el libro mayor.
Hay dos funciones en el contrato, que son prestadas y pagas, una es pedir dinero prestado del contrato, y la otra es pagar el contrato al contrato.
La función de préstamo especificará el monto de los préstamos, y el valor de la deuda se calcula mediante la conversión proporcional, y se actualiza el valor total de la deuda de la persona que llama.Como se muestra en la figura a continuación, el algoritmo Agregar del contrato aquí usa hacia arriba.
La función de préstamo especificará el valor de la deuda de reembolso, y el monto de reembolso se calcula mediante la conversión proporcional, y el monto del reembolso se transfiere al contrato.Como se muestra en la figura a continuación, el sub algoritmo del contrato aquí todavía se usa hacia arriba.
Comprenda el proceso de préstamo y reembolso, veamos cómo los piratas informáticos usan la vulnerabilidad.
El hacker primero controló el monto y el valor de la deuda del contrato a 0 y 97 (cómo controlar se introducirá en la siguiente sección).
A continuación, las funciones de préstamo y reembolso no se detienen, y los valores de préstamo y reembolso son 1. Finalmente, la cantidad de préstamo y valor de deuda se controla a 0 y 120080183818866665215049728, lo que resulta en un desequilibrio grave.
De acuerdo con las reglas del código anteriores (elastic = 0, base = 97), cuando el atacante llama al préstamo una vez y se pasa en 1, el libro mayor se convertirá en elástico = 1, base = 98 (Elastic es 0 y aumentará de acuerdo con a la sincronización del valor.
A continuación, el atacante llama a la función de reembolso para pasar 1 y llamar a la función subconterrita.Se puede ver que en este momento elástico no cambia, pero la base se duplica.
El atacante utiliza múltiples métodos anteriores para traer elástico = 0, base = 120080183810686665215049728.Finalmente tomó prestado un contrato con más de 5 millones de MIM a través de una préstamo.
Proceso de ataque
Comprenda la función de la función, echemos un vistazo a cómo el atacante realiza el ataque (una de las transacciones como ejemplo).
1. El atacante primero tomó 300,000 mims.
2. Posteriormente, el atacante consulta el monto y el valor de la deuda en la función de devolución de llamada.
3. A continuación, el atacante llama a la función de reembolso, devolvió 240,000 tokens MIM para controlar elastic.
4. A continuación, el atacante devolvió los pasivos de otros usuarios a través de la función de reembolso y finalmente controló el monto de préstamo y valor de deuda a 0 y 97.
5. El atacante crea un nuevo contrato y controla la cantidad de préstamos y valores de deuda a 0 y 12008018381886665215049728 al apelar préstamos y pagar.
6. Finalmente, 5 millones MIM tomó prestados 5 millones MIM a través de un préstamo de préstamo y reembolsos.
Seguimiento de fondos
Al momento de la publicación, los fondos robados de más de 6 millones de dólares estadounidenses se intercambian por ETH, y la dirección del hacker no se ha movido.