Según los investigadores de GoDaddy, unos 1.980 sitios basados en WordPress han resultado infectados con un malware de varias etapas que utiliza perfiles de Steam Community como canal de mando. El código malicioso emplea esteganografía basada en caracteres Unicode invisibles para transmitir de forma encubierta las direcciones de la carga útil y, en la fase final, despliega un backdoor completo del lado del servidor con ejecución remota de código PHP. Según se informa, la campaña está activa al menos desde julio de 2025. Se recomienda a los propietarios de recursos WordPress que comprueben de inmediato los logs en busca de accesos a Steam Community y al dominio hello-mywordl[.]info.
Mecanismo de ataque: de caracteres invisibles a ejecución remota de código
El vector inicial de compromiso no se ha establecido por el momento. Los investigadores de plantean varios escenarios posibles: robo de credenciales de administradores o de FTP/SFTP, compromiso de la cadena de suministro, así como explotación de temas y plugins vulnerables de WordPress. La ausencia de un vector confirmado implica que las medidas de protección estándar —actualizar plugins, cambiar contraseñas, limitar el acceso— siguen siendo simultáneamente relevantes.
Tras obtener acceso, los atacantes inyectan el primer componente del malware, que al cargarse las páginas consulta determinados perfiles de Steam Community. La característica clave de la campaña es el método de transmisión de los datos de control. Los comentarios en los perfiles de Steam parecen texto normal, pero contienen caracteres Unicode invisibles que transportan la carga útil codificada.
Seis caracteres para la esteganografía
Para codificar los datos, los atacantes utilizan seis caracteres Unicode concretos:
- U+200C — Zero-width non-joiner
- U+200D — Zero-width joiner
- U+2061 — Function application
- U+2062 — Invisible times
- U+2063 — Invisible separator
- U+2064 — Invisible plus
El malware ignora por completo el texto visible del comentario y procesa únicamente estos caracteres, convirtiendo su secuencia en datos binarios. Este enfoque es destacable porque seis caracteres permiten codificar algo más de 2,5 bits por carácter (log₂6 ≈ 2,58), lo que basta para transmitir de forma compacta una URL o comandos cortos, manteniéndose completamente invisible para una persona que visualice el perfil de Steam.
Tras la decodificación, el malware extrae la dirección del dominio hello-mywordl[.]info, desde donde descarga código JavaScript. Este script se inyecta en todas las páginas del sitio infectado. Para camuflarse se usan nombres de archivo que imitan bibliotecas legítimas: asahi-jquery-min-bundle y lodash.core.min.js.
Backdoor en el servidor
En la fase final se despliega en el servidor un backdoor que queda a la espera de peticiones POST especialmente formateadas. La activación solo se produce si está presente una cookie de autenticación concreta; sin ella, el backdoor permanece inactivo, lo que dificulta su detección mediante escaneos. Tras una autenticación correcta, los atacantes obtienen la capacidad de enviar al servidor código PHP en codificación Base64 y ejecutarlo de forma remota. En la práctica, esto les otorga control total sobre el servidor.
Técnicas de evasión de detección
La campaña demuestra un conjunto bien pensado de métodos de camuflaje. Según los investigadores de GoDaddy, el malware utiliza ofuscación de cadenas mediante secuencias hexadecimales y octales, nombres de funciones generados aleatoriamente, así como un uso intensivo de las API estándar de WordPress. Este último recurso es especialmente eficaz: la actividad maliciosa se mezcla con las llamadas legítimas de WordPress, lo que la hace prácticamente indistinguible del funcionamiento normal del CMS al analizar los logs sin herramientas especializadas.
La elección de Steam Community como infraestructura de mando es otra capa de camuflaje. El tráfico hacia Steam no despierta sospechas en la mayoría de los sistemas de filtrado, y la propia plataforma no está controlada directamente por los atacantes, lo que complica el bloqueo desde el lado de los defensores. Al mismo tiempo, los atacantes pueden cambiar rápidamente el contenido de los comentarios, actualizando las direcciones de la carga útil sin necesidad de volver a acceder a los sitios infectados.
Evaluación del impacto
El alcance de unos ~1.980 sitios infectados, según una única fuente, indica una campaña masiva y automatizada. WordPress representa más del 40 % del mercado de CMS, y los recursos comprometidos pueden pertenecer a sectores muy diversos: desde pequeñas empresas hasta medios y comercio electrónico. La presencia de un backdoor completo con ejecución remota de código significa que los servidores comprometidos pueden utilizarse para ataques posteriores: alojar páginas de phishing, redireccionar a los visitantes a recursos maliciosos, robar datos de las bases de WordPress o aprovechar la capacidad de los servidores para hacer de proxy de tráfico.
Indicadores de compromiso y recomendaciones
Para detectar una infección, deben revisarse los siguientes indicadores:
- Peticiones salientes a dominios de Steam Community (steamcommunity.com) desde scripts en el servidor
- Conexiones con el dominio hello-mywordl[.]info
- Archivos JavaScript sospechosos con nombres que imitan bibliotecas populares (
asahi-jquery-min-bundle,lodash.core.min.js) - Presencia de caracteres Unicode invisibles (U+200C, U+200D, U+2061–U+2064) en el código del sitio
- Entradas inusuales
_transient_caption_en la base de datos de WordPress - Verificación SSL deshabilitada en peticiones cURL
- Peticiones POST con el parámetro
new_code
Pasos prácticos de respuesta:
- Revisar los logs del servidor en busca de los indicadores mencionados mediante
grepo herramientas similares - Buscar caracteres Unicode invisibles en los archivos del tema y los plugins:
grep -rP '[\x{200C}\x{200D}\x{2061}-\x{2064}]' /path/to/wordpress/ - Cambiar todas las contraseñas administrativas y las claves de acceso FTP/SFTP
- Actualizar WordPress, todos los plugins y temas a sus versiones actuales
- Si se detecta infección, restaurar los archivos desde una copia de seguridad conocida como limpia, en lugar de intentar «limpiar» el malware manualmente
- Bloquear a nivel de firewall o WAF las conexiones salientes con hello-mywordl[.]info
Dado que el vector inicial de ataque no está establecido y el backdoor proporciona control remoto completo sobre el servidor, los propietarios de sitios WordPress deberían dar prioridad a la comprobación de los indicadores de compromiso enumerados. Especial atención a los archivos JavaScript con nombres atípicos y a las conexiones salientes hacia Steam Community desde el entorno del servidor: son precisamente estos indicios los que distinguen de forma más fiable esta campaña de otros tipos de malware para WordPress.