Un préstamo flash se hace con dos escaños de gobernanza: ¿qué nos enseña el robo de X100?

ETH
USDT
Seguridad DeFiGobernanza DAOataque de gobernanzaX100Robo de fondosPréstamos flash
hace 5 horasFuente: blockweeks.com
Un préstamo flash se hace con dos escaños de gobernanza: ¿qué nos enseña el robo de X100?


Original | Odaily Planet Daily (@OdailyChina)

Author | Asher (@Asher_0210)

Flash Loan Seizes Two Governance Seats, What Does the X100 Exploit Teach the Industry?

El 24 de octubre, el proyecto DeFi de Ethereum X100 sufrió un ataque de gobernanza, con aproximadamente 4,85 millones de USDT robados. Según datos de GMGN, la capitalización de mercado del token X cayó de unos 760 millones de dólares antes del ataque a unos 24 millones de dólares, una caída en un solo día de más del 96%.

Flash Loan Seizes Two Governance Seats, What Does the X100 Exploit Teach the Industry?

Una tesorería originalmente gestionada conjuntamente por tres escaños del "Senado" fue tomada por un hacker que utilizó fondos prestados mediante un préstamo flash para capturar dos de los tres escaños. Con la mayoría de los votos en mano, el hacker presentó una propuesta maliciosa y luego utilizó los escaños que controlaba para votarla y aprobarla, haciendo que la tesorería aprobara una transacción que enviaba los activos a sí mismo. Después de que la primera ronda de ataque tuvo éxito, otros atacantes explotaron sucesivamente el mismo mecanismo de gobernanza para continuar transfiriendo los activos del proyecto.

A continuación, Odaily Planet Daily repasará todo el proceso de este ataque de gobernanza, así como los riesgos de seguridad de la gobernanza DAO expuestos detrás del incidente de X100.

Pidiendo prestados 1,94 millones de dólares, ¿cómo capturó el hacker dos escaños del "Senado"?

La tesorería de X100 está gestionada por un "Senado" de tres escaños llamado Senate, cuyos miembros votan para decidir operaciones como la venta de tokens de la tesorería y el despliegue de liquidez. Mientras se controlen dos de los escaños, se pueden aprobar propuestas y movilizar los activos de la tesorería. Los tenedores depositan el token del proyecto X en el contrato Freezer, eligen congelarlo durante uno, tres o cinco años, y luego pagan una tarifa de registro de 100 X para participar en la elección. Los tres escaños se clasifican en tiempo real según el saldo congelado actual de las direcciones participantes, y los tres primeros obtienen derechos de gobernanza.

Este mecanismo no restringe que un mismo controlador obtenga escaños a través de múltiples direcciones, ni establece un período de espera para que los derechos de gobernanza surtan efecto. Un atacante solo necesita hacer que los saldos congelados de dos direcciones controladas entren simultáneamente en los tres primeros puestos para apoderarse de inmediato de la mayoría de los votos; una propuesta aprobada también puede ejecutarse de inmediato, permitiendo que la captura de escaños y la transferencia de activos se completen en la misma transacción.

Antes del ataque, la dirección del segundo escaño había congelado unos 19.000 X. A las 22:11 del 24 de octubre, el hacker pidió prestados unos 1,94 millones de USDT mediante un préstamo flash de Aave, compró X y lo distribuyó a dos contratos auxiliares para completar respectivamente la congelación y la campaña electoral. Cada contrato congeló 19.000,000001 X, solo una millonésima de token más que el segundo escaño original, pero aun así ocuparon simultáneamente el segundo y tercer escaño, empujando al segundo escaño original fuera de la lista de gobernanza.Flash Loan Seizes Two Governance Seats, What Does the X100 Exploit Teach the Industry?

Después de obtener la mayoría de los votos, ¿cómo hizo el hacker para que los activos de la tesorería fluyeran a sus propias manos?

Dos votos afirmativos permiten a la tesorería vender 400.000 X por 35,68 dólares

Tras asegurar dos escaños, el hacker envió inmediatamente una propuesta maliciosa que exigía a la tesorería vender 400.000 X en un pool X/USDT de PancakeSwap V3 creado por el hacker, con la cantidad mínima recibida establecida en cero, y luego votó a favor a través de otro contrato controlado, permitiendo que la propuesta se aprobara con dos votos y se ejecutara de inmediato. Según el análisis de GoPlus, X100 permite que las propuestas de gobernanza especifiquen el pool de negociación, pero carece de una protección eficaz de la cantidad mínima de transacción. El hacker podía tanto decidir dónde vendía tokens la tesorería como establecer él mismo las condiciones de la transacción, y luego aprobar la transacción con los votos mayoritarios que controlaba.

El pool anterior fue creado por el hacker en la misma transacción, con solo unos 100 dólares de liquidez inyectada. Cuando la tesorería vendió 400.000 X en él, el pool solo pudo pagar una pequeña cantidad de USDT, y como la cantidad mínima recibida era cero, la transacción no falló por rendimientos excesivamente bajos. En última instancia, la tesorería entregó 400.000 X y recibió solo unos 35,68 dólares a cambio. El hacker luego retiró la liquidez del pool autocreado, recuperó los X contenidos en él y vendió parte de los tokens en el pool de negociación X/USDT de Uniswap V3 existente a cambio de USDT. Tras reembolsar el préstamo flash y otros gastos, el primer hacker obtuvo una ganancia de unos 4,75 millones de USDT.

Desde pedir fondos prestados para comprar tokens y apoderarse de escaños, hasta aprobar la venta de tokens a bajo precio de la tesorería y cobrar para reembolsar el préstamo, todo se completó en la misma transacción. Los tokens entregados por la tesorería se convirtieron en las fichas del hacker para cobrar, mientras que el USDT del pool de negociación real se utilizó para reembolsar el préstamo y convertirse en ganancias del ataque.

Los ataques posteriores ocurrieron uno tras otro, ¿a dónde fueron los fondos robados?

Unos 24 minutos después del primer ataque, un segundo hacker volvió a apoderarse de dos escaños de gobernanza mediante un préstamo flash, retiró parte de las posiciones de liquidez de Uniswap V3 en poder de Freezer y utilizó un pool de negociación autocreado para seguir transfiriendo activos, obteniendo unos 96.400 USDT. Unos cinco minutos después, una tercera cartera explotó un contrato auxiliar dejado por el segundo hacker que no restringía a los llamadores, tomando directamente prestados sus escaños de gobernanza para aprobar una propuesta y transferir unos 550.000 X. Las dos primeras rondas de ataques causaron una pérdida total de unos 4,85 millones de USDT, y la tercera ronda transfirió otros aproximadamente 550.000 X; las tres rondas de ataques ocurrieron en menos de media hora.

Según el seguimiento de Bitquery, el primer hacker convirtió las principales ganancias en USDT a ETH en cuestión de minutos tras el ataque, y luego las dispersó a cinco carteras, totalizando unos 2.022,86 ETH. El segundo hacker convirtió USDT a ETH y lo canalizó a través de direcciones intermediarias hacia ChangeNOW, con todo el proceso de transferencia tomando unos 21 minutos.

Una vez perdida la autoridad de gobernanza, la transferencia de activos evolucionó rápidamente del ataque único del primer hacker a un saqueo sucesivo por múltiples carteras. Los participantes posteriores ni siquiera necesitaban volver a comprar tokens para hacer campaña; podían usar la autoridad existente para seguir transfiriendo activos.

Un mundo on-chain donde el costo de los ataques de gobernanza es cada vez menor

X100 no es un caso aislado, y los ataques de gobernanza no requieren necesariamente que los hackers inviertan fondos enormes por adelantado. Los atacantes pueden comprar tokens para obtener derechos de voto o explotar umbrales de propuesta bajos para buscar oportunidades, mientras que los préstamos flash permiten además que los fondos prestados participen en la toma del poder de gobernanza.

Desde principios de este año, ataques de gobernanza similares han causado repetidamente grandes pérdidas. En julio, el atacante de Bonk DAO gastó unos 4,09 millones de dólares para comprar tokens que representaban el 1,003% del suministro, superando por poco el umbral de aprobación de gobernanza, y luego transfirió unos 20,5 millones de dólares en activos mediante una propuesta maliciosa, e incluso recuperó los tokens en staking después de que terminara la votación. En agosto, Term Finance perdió unos 8,5 millones de dólares debido a un ataque de gobernanza. Incluso si se necesitan millones de dólares para comprar derechos de voto, este dinero puede no ser el costo que finalmente asume el atacante.

El umbral para algunos intentos de ataque fue incluso de solo unos cientos de dólares. En marzo de este año, un atacante de Moonwell gastó solo unos 1.808 dólares para comprar MFAM y autodelegarse, y luego envió una propuesta maliciosa intentando obtener derechos de gestión sobre siete mercados de préstamo y contratos centrales que involucraban unos 1,08 millones de dólares en fondos de usuarios. En septiembre, un atacante de Olas gastó solo unos 135 dólares para bloquear 5.100 OLAS, superando el umbral de propuesta. Aunque ambos ataques fueron interceptados, muestran que los atacantes no necesariamente necesitan poseer una mayoría de votos; simplemente obtener la elegibilidad para proponer puede crear oportunidades de ataque.

El 22 de octubre, Arkadiko también sufrió un ataque de gobernanza. El atacante compró suficientes DIKO, votó por sí solo a favor de una propuesta que introducía un contrato malicioso, sin votos en contra durante el proceso, y la pérdida estimada fue de aproximadamente 1,09 millones de dólares.

Los derechos de gobernanza se pueden pedir prestados y los activos se pueden transferir una vez que se aprueba una votación. Cuando el control sobre un tesoro cambia de manos con tanta facilidad, ¿a quién puede proteger realmente la llamada gobernanza descentralizada?



Enlace de la fuente