570M de USD robados en Tokens BNBs de la Binance Smart Chain (BSC)
Y es que el jueves por la noche cundió el pánico en la comunidad cripto por cómo se veía que uno de los “bridges” más importantes de la Blockchain de Binance “minteaba” en solamente 2 transacciones un total de 2.000.000 BNBs la moneda oficial de esta red; el equivalente en dólares serían de unos 527 millones, uno de los mayores ataques jamás ocurridos en el ámbito Blockchain. Y sí, el robo fue en la Blockchain “descentralizada” de Binance y no directamente a la empresa como muchos medios han comunicado.
Bridges
En el ecosistema Blockchain existe un problema muy grande sin una clara solución aun, la interoperabilidad entre las diferentes Blockchain (ya sean L1 o L2) de una manera descentralizada. La mayoría de las veces el traspaso de información y activos de unas a otras se suele hacer por medio de Bridges o “Puentes” en Español.
Figura 2: Libro dedicado a “Bitcoin: La tecnología Blockchain y su investigación” de Yaiza Rubio y Félix Brezo |
La mayoría de estos funcionan de una manera centralizada en el que a cada lado del puente se encuentra un SmartContract en una Blockchain y de por medio un servidor centralizado. A la hora de por ejemplo enviar tokens de una Blockchain A a otra distinta B lo que en verdad ocurre es que estos tokens se van a bloquear en el SmartContract de la Blockchain A y el SmartContract de la Blockchain B va a enviar los activos a tu wallet de esa Blockchain. Aquí tenéis una ilustración de cómo funciona el proceso.
Los Bridges descentralizados para evitar tener una entidad central que se encargue de gestionar las transacciones usan las llamadas “Zero Knowledge proofs” o pruebas de cero conocimiento. En un artículo futuro explicaremos detenidamente cómo funcionan este tipo de pruebas y veremos como son el futuro de la escalabilidad en las cadenas de Blockchain.
Pero para lo que hoy nos atañe nos basta saber que estas pruebas son muy seguras y que en nuestro caso las emite el SmartContract de la Blockchain A cuando le enviamos Tokens y si se la pasamos al SmartContract de la Blockchain B este nos enviara a nuestro wallet el importe de tokens que hayamos depositado en la anterior Blockchain.
Ataque a la Binance Smart Chain
El robo se produjo el jueves por la noche y este se debió a un exploit que contenía el Bridge de Binance uno de los puentes más importantes de la red debido a que este tiene acceso a mintear nuevos BNBs, además de ser el puente oficial que usa la propia Binance.
Este es un puente “descentralizado” como en el ejemplo del que hemos hablado antes, el exploit tomaba ventaja de un bug en el SmartContract de la red de la BSC que permite validar pruebas que a priori serían inválidas. Esta no es la primera vez que se lleva a cabo un ataque del estilo, ya ha ocurrido otras veces que un puente entre dos cadenas de Blockchain ha sido vulnerado por vectores similares.
El atacante creo una prueba en la que le decía al SmartContract que había depositado una cantidad de 1.000.000 BNBs en la Beacon Chain de Binance y que quería recibir en la Binance Smart Chain los Tokens, un sistema sin fallos habría detectado que esta prueba era inválida, pero el código del contrato contenía un bug por el cual permitía que esa prueba fuera validada. Luego usó esta prueba para enviar dos transacciones distintas al puente por lo que pudo sustraer con éxito 2 millones de BNBs lo que serían unos 570M USD. Aquí podemos ver las dos transacciones.
Este modelo permitiría sustraer todos los activos del puente y mintear una cantidad ilimitada de BNBs creando una inflación que arrasase con el precio del Token, pero por practicidad el ladrón solo sustrajo los 2.000.000 BNBs. Si nos fijamos bien en las dos transacciones podremos ver que la prueba enviada en cada una de estas es mucho más corta de lo normal si lo comparamos con otras transacciones que se envían al Bridge.
Conclusiones finales
El ataque podría haber sido mucho peor y por cómo ha movido de lento los fondos y lo “mal” que los ha gestionado para que no se los bloquearan podemos deducir que el criminal no está muy experimentado en DeFi. Este tipo de ataques a Bridges no es la primera vez que ocurren y volverán a ocurrir, tenemos que tener en cuenta que el verificar pruebas de cero conocimiento implica una complejidad muy grande y por ello detectar este tipo de bugs es muy complicado. Nos vemos en los siguientes artículos.
Más artículos de Web3, Blockchain & SmartContracts
- Blockchain & SmartContracts: Una serie para aprender
- BlockChain & SmartContrats: Primer SmartContract con Solidity
- Blockchain & SmartContracts: Cómo probar y desplegar un SmartContract en Ethereum
- WWW, Web 1.0, Web 2.0, Web 3.0, Web3 y ¿Web 4.0?
- Metaverso, multiverso y las tierras digitales en que vivimos en forma de avatar
- Los Fan Tokens vs. las Criptomonedas y los NFTs: Level 101
- Tokenomics: Las criptomonedas y las “Proof-of-work”: Level 101
- Los NFTs y el registro mundial de los dueños de activos digitales en el Metaverso
- BitCoin: Blockchain y su investigación
- BlockChain & SmartContrats: El Internet descentralizado y el almacenamiento off-chain en IPFS
- Reentrancy Attack: Cómo te roban criptomonedas por un bug en tu SmartContract
- BlockChain & SmartContract: Bugs que pueden dejar tu SmartContrat “fuera de juego”
- Blockchain & SmartContracts: Patrones y buenas prácticas de seguridad
- Blockchain & SmartContracts: Herramientas de Auditoría de Seguridad de SmartContracts
- BlockChain & SmartContracts: Ataque de phishing a tx.origin y robo de criptomonedas
- BlockChain & SmartContracts: Ataques de Ice Phishing
- Blockchain & SmartContracts: Herramientas de análisis dinámico
- ZIION: Una distribución Linux para auditar SmartContracts (& BlockChain)
- Dominios Web3 en Etherenum Name Service y la trazabilizad de las transacciones Blockchain
- BlockChain & SmartContracts: Actualizar SmartContracts como los grandes protocolos
- Jumping level up (from) web2 (to) web3: Vulnerabilities & SCAMs – SmartContracts
- 20 millones (Euros) en Tokens de Optimism perdidos por no saber cómo funcionan los Wallets Multifirma
- BlockChain & SmartContracts: Cómo crear una DApp de la Web3 con Python (y Flask)
Powered by WPeMatico