6 min de lectura Por Excello Mail Team

El Asunto Se Leía Perfectamente Normal. Caracteres Invisibles Ocultos Adentro Dejaron Ciego a Cada Filtro de Palabras Clave.

El investigador Jan Kopriva, del SANS Internet Storm Center, documentó una campaña de phishing que oculta guiones suaves invisibles de Unicode dentro de líneas de asunto codificadas en MIME, dividiendo palabras como password a nivel de bytes mientras cada destinatario ve un texto plano y ordinario. DMARC nunca entra en juego, y el truco expone lo frágil que se ha vuelto el filtrado por palabras clave.

Un destinatario que abría el correo veía una línea de asunto ordinaria: “Your Password is About to Expire”. Nada en ella parecía inusual. Pero cuando Jan Kopriva, del SANS Internet Storm Center, desarmó los encabezados en bruto, el asunto no era una frase limpia. Era una cadena de palabras codificadas en MIME, cada fragmento decodificado en Base64 separado por un carácter Unicode invisible, el guion suave, U+00AD, insertado entre casi cada letra. Ningún cliente de correo llegó a renderizar esos caracteres. Ningún destinatario notó jamás un espacio. Y ningún filtro de palabras clave que buscara frases como “password expire” o “account update” logró coincidir con la cadena tampoco, porque a nivel de bytes, la palabra “password” ya no estaba ahí.

Cómo una Pista de Salto de Línea de los Años 90 Se Convirtió en un Bypass de Filtros

El guion suave nunca fue diseñado para esto. Existe en Unicode como una pista de formato, un marcador que le indica a un renderizador dónde puede cortarse una palabra al final de una línea si falta espacio, y está pensado para permanecer invisible en cualquier otro contexto. El RFC 2047 le da al correo electrónico un mecanismo relacionado, la palabra codificada, que permite que una línea de asunto lleve texto no ASCII o codificado de forma especial, envuelto en una sintaxis como =?charset?encoding?text?=. Los clientes de correo la decodifican de forma transparente antes de mostrarla, y es justamente eso lo que la convierte en un escondite tan conveniente. La campaña que documentó Kopriva dividió una línea de asunto ordinaria en varias palabras codificadas, entretejió guiones suaves entre las letras, y codificó en Base64 la cadena completa. Un cliente de correo la decodifica, descarta los caracteres invisibles, y le muestra al destinatario un texto limpio y legible. Un filtro que compara patrones contra esa misma cadena decodificada ve algo más parecido a “p­a­s­s­w­o­r­d”, fragmentado de una forma que una regla de palabras clave nunca fue escrita para detectar.

Por Qué DMARC Jamás Iba a Detener Esto, y Qué Dice Eso de la Capa Que Está Debajo

DMARC, SPF y DKIM autentican una sola cosa: si el dominio que dice enviar un mensaje realmente tiene la autoridad para enviarlo en su nombre. No dicen nada sobre lo que contiene la línea de asunto o el cuerpo del mensaje. El filtrado basado en contenido, la coincidencia de palabras y frases que marca “urgente”, “verifica tu cuenta” o “tu contraseña expira”, siempre ha sido una capa separada, añadida sobre la autenticación por el proveedor de buzones o una pasarela de seguridad. Esta técnica no toca en absoluto la capa de autenticación. Un mensaje que la use puede provenir de un dominio con un registro DMARC limpio y en aplicación, pasar cada verificación de autenticación sin problemas, y aun así llevar una línea de asunto diseñada desde cero para esquivar exactamente las reglas de coincidencia de frases que un equipo de seguridad pasó años afinando.

El Mismo Punto Débil Con el Que Han Convivido Siempre los Equipos de Entregabilidad

La puntuación por palabras clave y frases no es exclusiva de las pasarelas de seguridad. El filtro de spam de cada gran proveedor de buzones sigue ponderando el lenguaje de la línea de asunto como una señal más entre muchas al decidir dónde aterriza un mensaje, y cada ESP comercial le dice a sus clientes que eviten frases “spamosas” por la misma razón. Lo que realmente demuestra el hallazgo de Kopriva es lo frágil que se ha vuelto toda esa categoría de filtrado: un truco de codificación de cinco minutos la derrota por completo, ya sea que la cadena que se disfraza sea un señuelo de phishing o, hipotéticamente, una frase promocional que un remitente menos escrupuloso quisiera colar más allá de un clasificador de carpeta de spam. Ese segundo escenario no es tan hipotético como para ignorarlo. Los reguladores han pasado este año produciendo acuerdos multimillonarios, Costco con catorce millones de dólares, Lululemon con cerca de setecientos mil, por líneas de asunto que apenas eran engañosas, sin necesidad de estar técnicamente alteradas con caracteres ocultos. La CAN-SPAM ya trata los encabezados de correo engañosos como una infracción con sanciones civiles de hasta $53,088 por mensaje. Un remitente que usara caracteres invisibles para manipular cómo un sistema automatizado lee una línea de asunto estaría construyendo, contra sí mismo, exactamente el tipo de reclamo por encabezado engañoso que los reguladores ya han demostrado estar dispuestos a perseguir.

Qué Significa Esto Para Tu Programa

Decodifica antes de filtrar. Cualquier regla de contenido, de seguridad o de spam, que compare patrones contra una línea de asunto en bruto o parcialmente decodificada pasará por alto por completo los trucos de palabras codificadas. La decodificación MIME tiene que ocurrir antes de que corra la coincidencia de frases, no después.

Trata los caracteres invisibles como una señal por sí sola. Una densidad inusual de guiones suaves, espacios de ancho cero, uniones de ancho cero o uniones de palabra dentro de una línea de asunto es sospechosa sin importar qué frase estén ocultando. Esa proporción vale la pena marcarla por sí misma.

Deja de tratar el filtrado por palabras clave como un control primario. Siempre ha sido la capa más fácil de vencer, y esto es la prueba de lo fácil que resulta. Combínalo con autenticación, reputación del remitente y señales de comportamiento, en lugar de apoyarte únicamente en él.

Audita tu propia herramienta de envío en busca de caracteres invisibles accidentales. Las herramientas de diseño, los constructores de plantillas y el copiar y pegar desde editores de texto enriquecido pueden dejar caracteres de ancho cero o de formato incrustados en las líneas de asunto sin que nadie lo haya buscado. Para un filtro receptor, uno accidental se ve idéntico a uno deliberado, y cualquiera de los dos puede hundir la colocación en la bandeja de entrada.

La Conclusión

La técnica en sí es pequeña: un carácter Unicode, un RFC antiguo, un envoltorio en Base64. Lo que expone es más grande: el filtrado de contenido basado en palabras clave, la capa que se sienta encima de DMARC y no dentro de él, es mucho más fácil de vencer de lo que suponen la mayoría de los programas de seguridad y entregabilidad. DMARC seguirá diciéndote si un dominio tenía derecho a enviar. Nunca iba a decirte si las palabras dentro del mensaje significaban lo que parecían significar, y esto es una demostración clara de cuánta distancia sigue habiendo entre esas dos preguntas.


La autenticación responde quién tiene permitido enviar. No puede decirte qué vio realmente un filtro una vez que tu mensaje se decodificó. Excello Mail convierte tus reportes agregados de DMARC en un registro claro y continuo de cada servicio que envía correo en nombre de tu dominio, autenticado o no, para que la parte de tu programa que sí está bajo tu control siga siendo visible. Regístrate gratis en Excello Mail y construye la capa de visibilidad que un filtro de palabras clave nunca te iba a dar.