Error de análisis y explotación de ETH. $ 140k en fondos fueron tomados por un objetivo… de THORChain THORChain Junio ​​de 2021

$ 140k en fondos fueron tomados por un exploit dirigido a un error lógico en el ETH Bifrost. La red fue detenida por nodos y parcheada. Los intercambios se reactivaron 6 horas después.

La línea de código que causó el error.

Un pequeño error lógico en Ethereum Bifröst provocó que un ERC-20 cuidadosamente elaborado se malinterpretara como ETH.ETH y se intercambiara en la red.

Total de fondos robados:

– 9352,4874282 PERP- 1.43974743 YFI- 2437.936 SUSHI- 10.615 ETH Valor total: ~ $ 139k

El error era que todos los activos que no eran de ETH se inicializaban con common.ETHAsset (ETH), pero si el símbolo devolvía "ETH", saltaba. Esto significa que se informaba como ETH.ETH y no como ETH.ETH-0xaddress.

La solución es inicializar los activos con common.EmptyAsset y volver antes de manipular los ERC20. Esto se fusionó.

https://gitlab.com/thorchain/thornode/-/merge_requests/1783/diffs

Protección temporal

El otro problema que tenía que resolverse era que había varias transacciones de ataque pendientes que THORChain aún no había observado, ya que el atacante continuó con sus transacciones después de que se detuviera la red. Si la red volviera a estar en línea antes de procesar la actualización, estas transacciones se habrían procesado, lo que habría sido una tontería y una pérdida de fondos. Se agregó lógica para ignorar estas transacciones específicas, provenientes de direcciones específicas.

THORChain se gestiona por consenso de la supermayoría. Si la gran mayoría elige ejecutar un código que pueda proteger su capital (y el capital de LP, por consecuencia) de ataques obvios, entonces lo harán. Los LP optan por poner su capital en una red con un conjunto de reglas fijo: si el conjunto de reglas cambia desfavorablemente a través de actualizaciones, entonces los LP pueden retirarse. Los nodos eligen ejecutar código, si se les presenta una actualización con la que no están de acuerdo, no pueden actualizar (bloqueando la actualización hasta que se eliminen debido a su antigüedad) o SALIR de la red y no ejecutarla en absoluto. Alternativamente, pueden presentar una contraactualización a la comunidad que restablezca las reglas con las que están de acuerdo.

Ejemplo de transacción: https://etherscan.io/tx/0x966cb083d116da2e0d1d115a99381db2200bd39ff75d38cfacdc17b1368f1159

Se realizaron cinco transacciones:
14.9 ETHOS para PERP

Pero 0 ETH en transacción:

https://etherscan.io/tx/0x966CB083D116DA2E0D1D115A99381DB2200BD39FF75D38CFAC DC17B1368F1159

14.1 ETHOS para PERP

https://etherscan.io/tx/0xB74F4860E24F04E9E32ACE36735285D518A8A36BF8E8DCC868D7 508BB60947C9

9.151 ETHOS para SUSHI

https://etherscan.io/tx/0xB56DF76D4BF1384DC2744692D744DE44EFADCEC7226C6255532 A0D1EBDB5ABCC

12.014 ETHOS para YFI

https://etherscan.io/tx/0x7CF72852118597E6FF65226A17EAE5A078B6DE7AF791A6324906 D9D456F2B1B6

11.872 ETHOS para YFI

https://etherscan.io/tx/0x514C90C817C270663513E91492D77E9F7282598F5AFC3711800E 311B6E00BE99

Cuando aprobaron el comercio de ETH, se detuvo el comercio. Luego intentaron hacer una transacción más después de que se detuviera el comercio:

https://etherscan.io/tx/0xAE3FAB1E5CFAE0A04F25155EC9047CF0F99DF4DDF7DDA1F1351E D4720FA3C030

Por lo que obtuvieron un reembolso de REAL ETH.

Descubrimiento y actualización

0 minutos: transacción inusual informada por los usuarios
5 minutos: los DEV lo reconocen e informan a los operadores de nodo
20 minutos: los nodos detienen la red, se necesita una gran mayoría.
2h: corrección de software
4h: Súper mayoría de nodos actualizados / arreglados
6h: reanudar intercambios

Recuperación

Restaurar la solvencia de las bóvedas (financiado por el Tesoro) Reembolso de bonos de operador de nodo que se recortaron cuando la red se volvió a poner en línea parcialmente y no tenía un consenso total Pagar la recompensa por error al usuario informante

La comunidad está buscando 30 días sin errores importantes antes de la red principal. Esto se clasifica como un error importante, por lo que los relojes se reinician.

Hay una auditoría de TrailOfBits programada en 2 semanas, que hará una revisión completa del código. El equipo de THORChain continuará encontrando y programando auditorías, especialmente desde que el código se está actualizando para dar servicio a THORFi, lo que aumenta la complejidad del teatro.

Además, el equipo establecerá de manera más prominente una recompensa de errores para encontrar y reportar errores. Los atacantes siempre tendrán los ojos puestos en el código en busca de lagunas. La comunidad de THORChain también puede incentivar este comportamiento, pero de manera favorable para la red.