Un exploit de contrato inteligente de Ethereum recientemente descubierto ha resultado en la generación de miles de millones de tokens ERC20, lo que ha provocado que las principales casas de intercambio hayan detenido temporalmente los depósitos y retiros de ERC20 hasta que se pueda evaluar la vulnerabilidad de todos los tokens.
El exploit, denominado batchOverflow, se observó por primera vez el 22 de abril, cuando se crearon 115 octodecillion BEC (Beauty Coin) en dos transacciones. En ese momento, BEC cotizaba a $ 0.32 por token, lo que hace que el valor total en dólares del exploit sea de $ 3.7 novemdecillion, una cifra verdaderamente absurda, que es un 1 seguido de 60 ceros.
La comunidad de criptomonedas en general se dio cuenta del exploit el 24 de abril, cuando se usó el mismo exploit en el token Smart Mesh para generar más de $ 5 octodecillion USD en tokens.
Varias casas de intercambio importantes han cerrado por completo el depósito de token ERC20 o retiros posteriores a las transacciones. La central con sede en Hong Kong OKEx, el tercer mercado de criptomonedas más grande del mundo, anunció la suspensión de todos los depósitos de fichas ERC20 en una publicación oficial del blog el martes.
La función vulnerable se encuentra en batchTransfer. Como se indica en la línea 257, la cantidad de la variable local se calcula como el producto de cnt y _value. El segundo parámetro, es decir, _value, puede ser un entero arbitrario de 256 bits, por ejemplo 0x8000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000 (63 0’s). Pasándole dos _receivers, a batchTransfer (), con ese valor extremadamente grande, podemos desbordar el unit256 y hacerlo valer cero. Con la cantidad puesta a cero, un atacante puede pasar los controles de las líneas 258-259 y hacer que la resta en la línea 261 sea irrelevante. Finalmente, aquí viene la parte interesante: como se muestra en las líneas 262-265, el saldo de los dos receptores se agregará por el valor extremadamente grande sin que cueste un centavo en el bolsillo del atacante.
Vía Cryptoslate y Medium