Cómo una función de Solana pensada para facilitarte la vida terminó regalándole más de 270 millones a los hackers de Drift
La bronca con Drift Protocol no fue un hackeo común y corriente. Nadie encontró un bug, ni rompió una llave privada, ni usaron flash loans o manipularon oráculos.
Lo que pasó fue que un hacker usó una función que existe de forma legit en Solana llamada “durable nonces” para hacerle trampa al consejo de seguridad de Drift. Básicamente, los convenció de firmar transacciones que se iban a ejecutar semanas después, en un momento y bajo condiciones que nadie esperaba ni firmó.
El resultado: se pelaron al menos 270 millones de dólares en menos de un minuto, pero eso sí, se tardaron más de una semana en planear todo.
¿Qué son los durable nonces y para qué sirven?
En Solana, cada transacción lleva un “recent blockhash”, que es como un sello de tiempo que asegura que la transacción es reciente. Pero ese sello se vence en uno o dos minutos. Si la transacción no llega a la red rápido, pierde validez. Esto evita que alguien repita transacciones viejas.
Los durable nonces cancelan esa regla. En lugar del sello que se vence, usan un código fijo guardado en una cuenta especial en la cadena, que mantiene válida la transacción hasta que alguien decida enviarla.
Esto existe por razones buenas: para carteras de hardware, firmas offline o custodias institucionales que a veces necesitan preparar y aprobar transacciones sin apurarse a enviarlas en 90 segundos.
Pero aquí está el detalle: si te hacen firmar algo hoy, se puede ejecutar cuando sea, la próxima semana o hasta el mes que viene, porque la transacción no expira. Y el que firmó no puede cancelar esa aprobación, a menos que se actualice manualmente la cuenta nonce, cosa que casi nadie revisa.
¿Cómo lo usó el atacante?
Drift tenía un multisig, o sea, un consejo de seguridad donde cinco personas debían firmar para aprobar algo, mínimo dos firmas por acción. Esta es una medida estándar para que no se pierda plata si alguien se rifa solo.
Pero el atacante no tuvo que robar llaves ni nada así. Solo necesitó que dos personas firmaran, y al parecer las engañó con “aprobaciones no autorizadas o mal entendidas”, o sea, les hicieron pensar que firmaban una transacción normal.
Aquí la línea del tiempo que publicó Drift:
- El 23 de marzo crearon cuatro cuentas de durable nonce. Dos eran de miembros legales del consejo, las otras dos del atacante. Eso quiere decir que ya tenían firmas oficiales de dos miembros, pero con transacciones que no vencen.
- El 27 de marzo, Drift hizo un cambio en el consejo, sacando a un miembro. El atacante se adaptó y para el 30 de marzo apareció una nueva cuenta nonce ligada al nuevo miembro, mostrando que todavía tenía las dos firmas necesarias.
- El 1 de abril fue la ejecución. Primero, hicieron un retiro legítimo del fondo de seguros para que todo se viera normal. Un minutito después, el atacante mandó las transacciones firmadas semanas atrás. Con dos movimientos separados, logró crear, aprobar y ejecutar una transferencia admin maliciosa.
- En minutos, el atacante tenía control total y sacó la lana metiendo un método fraudulento para vaciar las bóvedas.
¿Qué se robaron y a dónde fue la feria?
Los investigadores en la cadena siguieron la pista en tiempo real. Al final, se robaron unos 270 millones de dólares en un montón de tokens.
Lo más gordo fue:
- 155.6 millones en JPL tokens
- 60.4 millones en USDC
- 11.3 millones en CBBTC (un bitcoin envuelto de Coinbase)
- y varias monedas más como USDT, ETH, WBTC, DSOL y hasta un token llamado FARTCOIN, entre otros.
La wallet principal del ladrón la impulsaron ocho días antes del ataque usando NEAR Protocol, pero no la usaron hasta el día del saqueo. Luego movieron todo a wallets intermediarios financiados apenas un día antes usando Backpack, un exchange que pide identificación, lo que podría ayudar a las investigaciones.
De ahí, la lana se mandó a Ethereum usando Wormhole, que cruza cadenas. En Ethereum usaron Tornado Cash para ocultar el origen – ese mezclador privado ya sancionado por ser usado en agarrones ilegales.
Un investigador famoso, ZachXBT, dijo que más de 230 millones en USDC se movieron de Solana a Ethereum usando CCTP de Circle, en más de 100 transacciones. Criticó que Circle, el que emite USDC, no congeló esos fondos durante las seis horas clave después del ataque.
¿Qué falló y qué no?
Lo que se chingó fue la parte humana que opera el multisig. Los durable nonce permitieron que la aprobación y la ejecución pasaran con una diferencia de semanas, y los firmantes aprobaron algo que ya no era lo que pensaban.
Todo lo relacionado con depósitos, préstamos, bóvedas y fondos de trading en Drift se afectó. Pero los tokens DSOL que no estaban dentro de Drift ni los que estaban apostados en sus validadores, no sufrieron. El fondo de seguros andaba en movimiento para proteger lo que quedó. El protocolo ya está congelado y sacaron a la wallet comprometida del multisig.
Este es el tercer rollo gordo en meses que no tuvo que ver con bugs en el código. El chiste está en la ingeniería social y en fallas en la seguridad operativa. Cada vez es más común que el dinero se pierda por estas razones y no por bugs técnicos.
El vicio con los durable nonce es bien fregadazo porque aprovecha una función que está ahí por buenas razones y defenderse sin cambiar cómo funcionan las firmas múltiples en Solana es un dolor de cabeza.
La pregunta que Drift tendrá que responder pronto en su post-mortem es cómo dos miembros firmaron algo que no entendían, y si hay formas o herramientas de mostrar que esas transacciones con durable nonce necesitan más cuidado.
Si quieres echarle ojo a la nota original, aquí está el link bien chido:
North Koreans hackers likely behind $286 million Drift Protocol exploit

Respuestas