De acuerdo con el monitoreo de riesgos de seguridad Beosin EagleEye, la alerta temprana y el monitoreo de la plataforma de bloqueo de la empresa de auditoría de seguridad blockchain Beosin, **, el contrato LibertiVault en la cadena Polygon fue atacado y la pérdida de alrededor de 123ETH y 56,234USDT por un valor aproximado de 290,000 dólares estadounidenses. , y la cadena Ethereum 35ETH y 96223USDT valen alrededor de US$160.000, totalizando más de US$450.000. **El personal técnico analizó y descubrió que este ataque fue causado por una vulnerabilidad de reingreso en el contrato de LibertiVault.
El atacante tomó prestados 5 millones de USDT utilizando el préstamo flash y llamó a la función de depósito del contrato LibertiVault para comprometerse. La lógica de compromiso utilizará parte de los tokens comprometidos para el intercambio y luego calculará la cantidad de monedas acuñadas. La cantidad de monedas acuñadas se basa en el contrato y el depósito. El cálculo se basa en la proporción de la cantidad de fichas depositadas al saldo antes de que se deposite el contrato.
El intercambio de operaciones de intercambio llamará al contrato del pirata informático. En este momento, el pirata informático vuelve a ingresar al depósito de llamada por primera vez y vuelve a ingresar a esta función por segunda vez, depositando 2.5 millones de USDT en el contrato.
Después del segundo reingreso, el contrato acuñará monedas para el pirata informático de acuerdo con la proporción de 2,5 millones de USDT al saldo de USDT del contrato anterior.Después de completar la función de depósito de primer reingreso, el pirata informático deposita otros 2,5 millones de USDT en él.
En este momento, se completa la operación de intercambio en la función de depósito externo y el contrato acuñará monedas de acuerdo con la proporción de 2,5 millones de USDT al saldo de USDT del contrato.
El problema está en el cuarto punto, lógicamente el segundo cálculo del saldo del contrato debería ser el saldo anterior más el saldo de 2,5 millones ingresado por primera vez como parámetro para este cálculo, pero aquí está el En forma de reingreso, el saldo del contrato se obtuvo desde el principio, por lo que los parámetros no han cambiado, y el saldo original todavía se usa para el cálculo, lo que resulta en la acuñación de una gran cantidad de tokens de cupones para piratas informáticos.
Finalmente, el pirata informático eliminó los tokens y devolvió el préstamo flash para obtener ganancias.
Ver originales
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.
Análisis del ataque al contrato de LibertiVault en Polygon Chain
De acuerdo con el monitoreo de riesgos de seguridad Beosin EagleEye, la alerta temprana y el monitoreo de la plataforma de bloqueo de la empresa de auditoría de seguridad blockchain Beosin, **, el contrato LibertiVault en la cadena Polygon fue atacado y la pérdida de alrededor de 123ETH y 56,234USDT por un valor aproximado de 290,000 dólares estadounidenses. , y la cadena Ethereum 35ETH y 96223USDT valen alrededor de US$160.000, totalizando más de US$450.000. **El personal técnico analizó y descubrió que este ataque fue causado por una vulnerabilidad de reingreso en el contrato de LibertiVault.
El atacante tomó prestados 5 millones de USDT utilizando el préstamo flash y llamó a la función de depósito del contrato LibertiVault para comprometerse. La lógica de compromiso utilizará parte de los tokens comprometidos para el intercambio y luego calculará la cantidad de monedas acuñadas. La cantidad de monedas acuñadas se basa en el contrato y el depósito. El cálculo se basa en la proporción de la cantidad de fichas depositadas al saldo antes de que se deposite el contrato.
El intercambio de operaciones de intercambio llamará al contrato del pirata informático. En este momento, el pirata informático vuelve a ingresar al depósito de llamada por primera vez y vuelve a ingresar a esta función por segunda vez, depositando 2.5 millones de USDT en el contrato.
Después del segundo reingreso, el contrato acuñará monedas para el pirata informático de acuerdo con la proporción de 2,5 millones de USDT al saldo de USDT del contrato anterior.Después de completar la función de depósito de primer reingreso, el pirata informático deposita otros 2,5 millones de USDT en él.
En este momento, se completa la operación de intercambio en la función de depósito externo y el contrato acuñará monedas de acuerdo con la proporción de 2,5 millones de USDT al saldo de USDT del contrato.
El problema está en el cuarto punto, lógicamente el segundo cálculo del saldo del contrato debería ser el saldo anterior más el saldo de 2,5 millones ingresado por primera vez como parámetro para este cálculo, pero aquí está el En forma de reingreso, el saldo del contrato se obtuvo desde el principio, por lo que los parámetros no han cambiado, y el saldo original todavía se usa para el cálculo, lo que resulta en la acuñación de una gran cantidad de tokens de cupones para piratas informáticos.
Finalmente, el pirata informático eliminó los tokens y devolvió el préstamo flash para obtener ganancias.