AMLConsensus · curso
Programa · Lección 7.5
Sección 7 · Lección 7.5

Envenenamiento de direcciones

El envenenamiento de direcciones (address poisoning) es un ataque no al protocolo sino a la persona y a sus hábitos. El atacante crea una dirección «gemela», parecida por fuera a otra con la que la víctima ya ha interactuado, y la cuela en el historial de transacciones para que, en la siguiente transferencia, la víctima copie la dirección equivocada. Un clic de «copiar del historial» y una gran suma va a parar al atacante. Desmontemos la mecánica de la gemela, recordemos un caso real de 68 millones de dólares, entendamos por qué funciona esto y cómo protegerse.

La mecánica de la gemela

Las direcciones cripto son largas e ilegibles (0xd9A1...853a91), así que las carteras y los exploradores casi siempre las muestran abreviadas: los primeros caracteres, unos puntos suspensivos, los últimos caracteres. Una persona no comprueba los 40 caracteres hexadecimales: mira el «principio y el final». Es precisamente este hábito el que explota el ataque.

Usando un generador de vanity-address, el atacante encuentra una dirección cuyos primeros y últimos caracteres coinciden con la dirección de destino real de la víctima. Una coincidencia total de cada carácter es criptográficamente imposible, pero una coincidencia de «cabeza y cola» es cuestión de fuerza bruta computacional, y basta para engañar al ojo con la visualización abreviada.

How address poisoning works

La dirección gemela coincide con la original en el principio y en el final: con la visualización abreviada (0xAbCd…1234) se ven idénticas.

Atacante
genera una dirección gemela
→
Tx de envenenamiento
micro-transferencia/token falso
en el historial de la víctima
→
La víctima copia
del historial
→
El dinero al atacante

Cómo llega la gemela al historial de la víctima

  1. Reconocimiento. El atacante monitoriza carteras grandes y sus contrapartes frecuentes: a quién y a qué direcciones envía fondos la víctima con regularidad.Todo esto es público en la blockchain.
  2. Generación de la gemela. Para la dirección de destino objetivo se encuentra una vanity address con el mismo principio y final.Cuanto más largo sea el prefijo/sufijo coincidente, más convincente —y más cara— la búsqueda.
  3. «Envenenar» el historial. Desde la gemela se envía a la víctima algo que se asentará en su feed de transacciones junto a las reales: (a) una micro-transferencia de la moneda nativa o de una stablecoin por céntimos; (b) una transferencia de un token falso con el mismo ticker; (c) especialmente pérfido: una transferencia de valor cero vía la vulnerabilidad de transferFrom por 0 tokens, que no requiere consentimiento de la víctima pero aparece en su historial como «saliente hacia la gemela».La última variante hace que parezca que la propia víctima ya había enviado a esta dirección.
  4. Esperar el error. La próxima vez, con prisa, la víctima copia la dirección «conocida» del historial y transfiere al atacante.El ataque es pasivo: la propia víctima comete la acción fatal.

Un caso real: 68 millones de dólares en una sola transferencia

Uno de los incidentes más notorios: la víctima pretendía enviar una gran suma en WBTC a su dirección habitual, pero copió una dirección gemela del historial y transfirió unos 68 millones de dólares directamente al atacante. Los detalles on-chain del caso (para practicar: así se ve el desglose en un explorador):

La lección importante del caso: la víctima fue un poseedor experimentado con un gran saldo. El envenenamiento de direcciones no va de «inexperiencia», va del hábito humano universal de confiar en la vista abreviada de una dirección.

Por qué funciona esto

La raíz del problema es la visualización abreviada de la dirección. Las interfaces de carteras y exploradores ocultan el centro de la dirección por legibilidad. El cerebro comprueba 4–6 caracteres al principio y 4–6 al final y concluye «esta es». El atacante no necesita romper la criptografía: le basta con hacer coincidir la parte visible. Súmale la prisa, la memoria muscular del «copiar del historial», la confianza en el propio feed de transacciones (al fin y al cabo, «no se puede falsificar») y el mal hábito de reutilizar direcciones, y obtienes una trampa de ingeniería social casi perfecta, incrustada en la propia UX.

Una capa adicional pérfida es el envenenamiento por transferencia de valor cero: el atacante fabrica un registro en el historial como si hubiera sido la propia víctima quien hubiera enviado antes a la dirección gemela. Psicológicamente, una transacción saliente inspira más confianza que una entrante («ya que yo mismo envié allí, esa dirección debe de ser la mía correcta»), y la probabilidad de copiarla aumenta.

Cómo reconocerlo y protegerse

Una señal en el grafo para el analista. El envenenamiento se reconoce así: poco antes de una gran transferencia «errónea», aparece en el historial de la víctima una micro-transferencia entrante o una transferencia de valor cero desde una dirección cuyo principio y final coinciden con el destinatario real. Dos direcciones «gemelas» una junto a otra en el feed son casi un diagnóstico. Si estás investigando un incidente, busca esta dirección gemela y su transacción de «envenenamiento» inmediatamente antes de la pérdida de los fondos.

En suma: el envenenamiento de direcciones es un ataque al hábito de confiar en la vista abreviada de una dirección. La mecánica: una gemela vanity con principio y final coincidentes, plantada en el historial de la víctima vía una micro-transferencia, un token falso o una transferencia de valor cero, a la espera de una copia «del historial». El caso real de ~68 millones de dólares (tx 0x87c6e5…bf73, dirección envenenadora 0xd9A1…853a91) demostró que incluso los poseedores grandes y experimentados son vulnerables. La defensa es no copiar del historial, mantener una lista blanca, verificar la dirección por completo y hacer transferencias de prueba. En la lección final de la sección reuniremos las técnicas adyacentes de la capa «basura»: exchanges anidados, dusting y tokens de spam.

Este material tiene fines educativos.