A las cuatro de la mañana del 5 de agosto, algunos usuarios informaron en el foro de opyn que los saldos de sus cuentas desaparecieron sin ningún motivo, y algunos usuarios encontraron información de transacciones sospechosas, como se muestra en la siguiente figura:
El partido del proyecto Opyn respondió después de un análisis preliminar de la situación y dijo: los fondos han sido transferidos y se está buscando la causa del problema.
Al cierre de esta edición, el funcionario emitió una respuesta al incidente: fue pirateado y los activos que pueden ser atacados han sido transferidos, pero esta vulnerabilidad solo involucra el contrato ETH y no afecta a otros contratos. Como se muestra abajo:
Chengdu Lianan-Security Lab rastreó y analizó este incidente por primera vez. La siguiente es la dirección del contrato del atacante que el sistema de conocimiento de la situación detectó el robo:
0xe7870231992ab4b1a01814fa0a599115fe94203f
0xb837531bf4eb8ebfa3e20948bd14be067c18cbd3
0xb72e60ea1d0c04605f406c158dce9ac6ae6d224c
Restauración del método de ataque del atacante:
1. El atacante llama al contrato para enviar n USDC al contrato para aumentar la hipoteca y obtener la moneda del contrato oETH
El total actual de posiciones de contrato de red de BTC es de 3568 millones de dólares estadounidenses, un aumento de 64 millones de dólares estadounidenses en 24 horas: según el informe de posición de contrato, el total actual de posiciones de contrato de red es de 3568 millones de dólares estadounidenses, un aumento de 64 millones de dólares estadounidenses. dólares en 24 horas. Entre ellos, el contrato de Huobi fue de US$707 millones, un aumento de 0,18% en 24 horas; el contrato de OKEx fue de US$899 millones, una disminución de 0,84% en 24 horas; el contrato de BitMEX fue de US$496 millones, un aumento de 4,16% en 24 horas; el contrato de Binance fue de US$770 millones, un aumento de 2,68% en 24 horas; los contratos de Bybit ascendieron a US$694 millones, un aumento de 6,14% en 24 horas. [2020/12/8 14:35:52]
2. El atacante llama al contrato para enviar ETH por hipoteca y destruye oETH para canjear su propio USDC
3. El atacante rescata su ETH hipotecado.
En el paso 2, el atacante llama a la función de ejercicio y le pasa dos direcciones A (la dirección propia del atacante), B (la dirección donde otros no han canjeado el USDC) y el doble del USDC que merecen, y el programa se ejecuta normalmente. los fondos de la dirección B se verán comprometidos.
Comercio
0x56de6c4bd906ee0c067a332e64966db8b1e866c7965c044163a503de6ee6552a
Como ejemplo, el atacante pasa el contrato
0xe7870231992ab4b1a01814fa0a599115fe94203f contrato de pareja 0x951D51bAeFb72319d9FBE941E1615938d89ABfe2
Se lanzó el ataque y la ganancia total de esta transacción fue de $9907. Como se muestra abajo:
El atacante llamó primero a la función addERC20CollateralOption y envió 9900 USDC al contrato, como se muestra en la siguiente figura:
addERC20Collateral(msg.sender, amtCollateral); en esta función es responsable de la transferencia de agencia de USDC; emitOTokens(amtToCreate, receptor); en la función es responsable de acuñar oETH. Esta transacción acuña 30 oETH y los envía al atacante, como se muestra en la siguiente figura:
Una vez hecho esto, se modifican los parámetros de la bóveda del atacante. bóveda.oTokensIssued y bóveda.collateral se actualizan a 300000000 y 9900000000 respectivamente, como se muestra en la siguiente figura:
Luego, el atacante procedió a intercambiar oETH.
Llame a exercise, el parámetro de construcción oTokensToExercise es 60, y vaultsToExerciseFrom son dos direcciones, una de las cuales es la dirección de otra persona que también cumple las condiciones. Como se muestra abajo:
La función Exercise ejecuta la rama _exercise(vault.oTokensIssued, vaultOwner); y envía el USDC correspondiente a 30oETH a la persona que llama, como se muestra en la siguiente figura:
Podemos notar que en la transferencia final, _exercise transfiere USDC a msg.sender, que es el atacante.
Volvamos a ver el bucle for del ejercicio: la entrada del atacante de oTokensToExercise es 60, por lo que cuando el contrato verifique que la segunda dirección cumple las condiciones, seguirá transfiriendo el saldo a msg.sender, que es el atacante. Esto le permite al atacante obtener USDC dos veces, obteniendo así una ganancia.
En este incidente, el atacante aprovechó la falla lógica de la función de ejercicio. Esta función no verifica si la persona que llama tiene derecho a canjear el USDC de esta dirección antes de realizar la transferencia final, sino que simplemente verifica si la dirección puede canjearse. Es una vulnerabilidad lógica en la capa de código y, según la respuesta oficial, este contrato ha sido objeto de una auditoría de seguridad. Chengdu Lianan recuerda por la presente a todas las partes del proyecto:
1. Se deben realizar auditorías de seguridad suficientes y efectivas antes de que el proyecto entre en línea, preferiblemente auditorías de múltiples partes.
2. Para el contrato, se deben establecer funciones como la suspensión de las transacciones del contrato para garantizar la seguridad de los fondos en caso de un incidente de seguridad.
3. La seguridad es un proceso continuo y no es suficiente garantizar la seguridad con una sola auditoría. Es muy importante establecer una cooperación a largo plazo con empresas de seguridad de terceros.
Tags:
Este artículo es una contribución de Standard Blockchain y está autorizado por Jinse Finance para su publicación.Recientemente, debido al gratificante auge de Bitcoin y Ethereum.
La red de prueba multicliente de Ethereum, Medalla, se lanzará el 4 de agosto, según el coordinador de lanzamiento de Ethereum.
La imagen de arriba es un gráfico comparativo de la tendencia mensual a largo plazo del oro al contado desde 1980 hasta 2009 y la tendencia actual a largo plazo desde 2011 hasta 2020.
A las cuatro de la mañana del 5 de agosto, algunos usuarios informaron en el foro de opyn que los saldos de sus cuentas desaparecieron sin ningún motivo.
El interés compuesto de los activos es un proceso de bola de nieve.
El 1 de agosto, la CFTC publicó el último informe semanal de futuros de Bitcoin de CME (del 22 de julio al 28 de julio).Durante el último período estadístico.
El Technology Weekly de esta semana contiene noticias técnicas sobre las cuatro redes de Bitcoin, Ethereum, Polkadot y Filecoin.Bitcoin Core 0.20.1 ya está disponibleSegún el equipo de desarrollo de Bitcoin Core.