Prólogo
El 1 de julio de 2020, el contrato de VETH fue pirateado. Después de recibir la inteligencia, el equipo de seguridad de SlowMist realizó un análisis exhaustivo del ataque. El siguiente es un análisis técnico detallado del ataque.
Detalles del ataque
La transacción de ataque es la siguiente 0xdd1120a90ed4112b634266d6a244b93ca86785317bc75f0e170ab0cd97c65224
A través de la descripción general de la transacción, podemos ver que el atacante usó 0.9 ETH para intercambiar por VETH en Uniswap, y luego usó VETH para operar en el contrato de Vether, y finalmente robó una gran cantidad de VETH.
AirDAO lanza un puente de cadena cruzada entre la red de Capa 1 Ambrosius y Ethereum: Jinse Finance informó que AirDAO, la organización autónoma descentralizada que administra la red de Capa 1 Ambrosius, ha lanzado un puente de cadena cruzada con Ethereum para su ecosistema de cadena de bloques, el puente ETH se expande El kit de herramientas multicadena de AirDAO, que permite a los usuarios transferir criptomonedas desde la cadena de bloques de Ethereum a través de cadenas a la red Ambrosus de AirDAO. [2022/11/3 12:14:14]
Ahora use el navegador de contratos OKO para analizar los detalles específicos del ataque (la siguiente figura solo muestra una parte)
Viceprimer Ministro de Ucrania: Recibió $ 54 millones en donaciones de cifrado para la compra de suministros militares: Golden Finance informó que el Viceprimer Ministro de Ucrania y Ministro de Transformación Digital de Ucrania, Mikhailo Fedorov (Mykhailo Fedorov), declaró en las redes sociales, Ucrania El gobierno de Ucrania ha planteado $ 54 millones en donaciones de criptomonedas, que se han utilizado para comprar equipo militar, trajes blindados, medicamentos e incluso vehículos.
En marzo, el presidente de Ucrania, Volodymyr Zelenskyy, firmó un proyecto de ley de activos virtuales que legaliza las criptomonedas en el país, que ha recibido millones de dólares en donaciones de criptomonedas en su guerra con Rusia por asistencia militar y humanitaria. (Forkast) [2022/8/19 12:35:40]
Al analizar los detalles específicos de la transacción, se puede encontrar que: el atacante primero creó un contrato 0x47Ed415006C6F8052Fff05fe983f31D6D24B8fDB a través de este contrato para llamar a la función changeExcluded(unknown37217349) y la función transferFrom en el contrato de Vether.
La plataforma de opciones cifradas SignalPlus anunció la finalización de la financiación de la Serie A, dirigida por HashKey: el 10 de agosto, SignalPlus Ltd. anunció la finalización de la financiación de la Serie A, dirigida por HashKey. Además, SignalPlus dijo que sus primeros inversores y otros inversores, incluidos (y que actúan como asesores) GBV Capital, Incuba Alpha, Chiron Partners, Paradigm Co., SNZ Holding, Baboon.vc y Stratified Capital, han recaudado más de $ 12 millones en total.
Se informa que SignalPlus Ltd. se enfoca en construir un conjunto completo de plataformas de opciones encriptadas. [2022/8/10 12:16:10]
A continuación, analice el código específico de estas dos funciones:
El número de monedas estables basadas en el euro ha aumentado un 1683 % desde 2020, pero ha disminuido un 14,17 % desde enero de este año: Golden Financial News, la emisión de monedas estables ancladas en el euro ha aumentado desde un valor de 31,9 millones de dólares estadounidenses el 3 de enero , 2020 a $ 569 millones de hoy, un aumento del 1683%. Desde noviembre de 2021, el número de monedas estables en euros ha aumentado un 85,34 %, pero desde enero de 2022 hasta el presente, el número de monedas estables en euros ha disminuido un 14,17 % en los últimos siete meses. [2022/8/2 2:52:17]
Se puede ver que en la función transferFrom , se realiza un juicio si en mapAddress_Excluded[msg.sender] primero. La lógica específica es que cuando mapAddress_Excluded[msg.sender] es falso, la autorización del El contrato del atacante se verificará Cuota y luego llamará a la función _transfer para transferir. Y esta lógica obviamente no funciona, el contrato del atacante no tiene ninguna cuota de autorización. Por lo tanto, mapAddress_Excluded[msg.sender] solo puede ser verdadero y luego llamar directamente a la función _transfer para transferir.
La prima de kimchi de Bitcoin una vez se disparó a un máximo de 2022 y luego cayó a 3,39%: noticias del 11 de mayo, según datos de CryptoQuant, la prima de kimchi de Bitcoin de Corea del Sur cayó a alrededor de 3,39% el miércoles y alcanzó el nivel más alto desde diciembre del año pasado el martes Nivel 6.28 % Según los informes, el fuerte aumento en la prima de kimchi puede estar relacionado con "Kakao Bank está considerando cooperar con un cambio de moneda digital", que se rumorea que es Upbit. Nota: "Kimchi premium" se refiere a la gran diferencia de precios entre los tokens en los intercambios coreanos y el promedio mundial.
Según noticias anteriores, Kakao Bank, el banco en línea más grande de Corea del Sur, está considerando cooperar con un cambio de moneda digital, y el director ejecutivo de la compañía, Yun Ho-young, confirmó el plan. Indicó que dado que las criptomonedas son el principal activo de los clientes, están evaluando cómo brindar servicios o activos virtuales en forma de negocios de manera ventajosa. (Forkast)[2022/5/11 3:06:15]
A continuación, analice cómo establecer mapAddress_Excluded[msg.sender] en verdadero:
Puede averiguarlo consultando el contrato:
Cuando se inicializa el contrato, solo address(this) y mapAddress_Excluded de burnAddress se establecen en verdadero, por lo que es seguro que hay otras lógicas que pueden establecer mapAddress_Excluded. Al analizar el contrato de Vether, se puede encontrar que la función changeExcluded puede darse cuenta de la configuración de mapAddress_Excluded.
Al analizar la función changeExcluded se puede encontrar que su visibilidad es externa, por lo que el contrato del atacante puede llamar directamente a la función changeExcluded, en este momento el mapAddress_Excluded del contrato del atacante es falso, por lo que entrará en la lógica de if.
A continuación, analice el código en la lógica if en detalle:
Después de realizar la lógica if, primero debe pagar la tarifa de manejo, específicamente la línea 3 en el bloque de código anterior, entonces, ¿de dónde proviene la tarifa de manejo? La respuesta son los 0,9 ETH que el atacante transfirió inicialmente al contrato.
Como se puede ver en la figura, 0,9 ETH se convierte en unos 138 VETH.
Al calcular mapEra_Emission/16 en el código, podemos obtener la tarifa de transacción que el atacante debe pagar: leemos mapEra_Emission en el contrato y sabemos que mapEra_Emission es 2048.
En este momento, la tarifa de manejo obtenida al calcular mapEra_Emission/16 es 2048/16 = 128 VETH, y el atacante intercambió alrededor de 138 VETH es suficiente para pagar la tarifa de manejo, por lo que el contrato del atacante se puede convertir para establecer mapAddress_Excluded en verdadero.
Cree un contrato de ataque y convierta 0.9 ETH en aproximadamente 138 VETH a través de Uniswap (aquí, el cambio de moneda es para el pago posterior de las tarifas de manejo)
Llame a la función changeExcluded en el contrato de Vether y use los 138 VETH intercambiados previamente en Uniswap para pagar la tarifa de manejo de 128 VETH, y luego establezca mapAddress_Excluded en verdadero
Llame a la función transferFrom , use mapAddress_Excluded para que sea verdadero y realice directamente la operación de transferencia
Toma el dinero y vete
0xfa2700e67065bc364136b5e7f57112083cb2a0cd
0x75572098dc462f976127f59f8c97dfa291f81d8b
Soluciones sugeridas
Este ataque utiliza principalmente la visibilidad de la función changeExcluded en el contrato de Vether como externa y no tiene restricciones de permisos, los usuarios pueden hacer llamadas externas directamente para crear las condiciones necesarias para el ataque. Por lo tanto, el permiso o la visibilidad de la función changeExcluded debe restringirse para evitar que cualquier usuario llame directamente a la función changeExcluded externamente.
Tags:
En los últimos años, con el desarrollo de la ciencia y la tecnología y la mejora general de la conciencia de los usuarios sociales.
Antes del 312, el valor de los activos bloqueados en DeFi alcanzó un máximo de alrededor de 1250 millones de dólares EE. UU. Después de tres meses de recuperación.
En 2017, el precio de Bitcoin marcó el comienzo de un máximo histórico.
Prólogo El 1 de julio de 2020, el contrato de VETH fue pirateado. Después de recibir la inteligencia.
La primera columna de retransmisiones en directo del mercado 20:00 Kim Últimas noticias, contratos puntuales.
Bancor fue el primero en introducir el modelo AMM en la práctica, pero fue Uniswap quien realmente lo inició. Después de eso, AMM floreció en casi todas partes. Después de un período de silencio.
Cuando un país levanta un gran garrote e intenta desvincular a sus aliados de China. El poder de las organizaciones empresariales está utilizando blockchain para fortalecer las transacciones comerciales.