Vulnerabilidad Ghost CMS: Campaña masiva ClickFix secuestra sitios

Contenido del artículo
En el cambiante tablero de la ciberseguridad, los atacantes de hoy ya no necesitan derribar la puerta principal con fuerza bruta si pueden convencer al propio usuario de que les entregue las llaves del reino. La reciente oleada de ciberataques que ha comprometido a más de 700 sitios web legítimos en todo el mundo ha encendido las alarmas de la comunidad de seguridad informática. Este incidente masivo, detectado inicialmente a principios de mayo de 2026, tiene su origen en la explotación activa de una crítica vulnerabilidad Ghost CMS, catalogada bajo el identificador CVE-2026-26980.
Lo que hace especialmente alarmante a esta campaña no es solo la sofisticación de su cadena de infección, sino también el perfil de las víctimas. Entre los cientos de dominios afectados se encuentran portales oficiales de prestigiosas instituciones académicas como la Universidad de Harvard, la Universidad de Oxford y la Universidad de Auburn, así como plataformas de empresas tecnológicas orientadas a la privacidad, como el motor de búsqueda DuckDuckGo. Al comprometer la confianza de estos portales de alta reputación, los ciberdelincuentes han logrado distribuir malware de alta peligrosidad con un índice de éxito inusualmente elevado.
El origen del caos: La vulnerabilidad Ghost CMS y el vector de inyección SQL
Ghost es un sistema de gestión de contenidos (CMS) de código abierto sumamente popular, basado en Node.js y utilizado por más de 100,000 sitios web globales para blogs, boletines informativos y monetización de audiencias. Sin embargo, su robustez estructural se vio comprometida con el descubrimiento de la vulnerabilidad Ghost CMS en su Content API. El fallo de seguridad afecta de manera directa a todas las versiones comprendidas entre la 3.24.0 y la 6.19.0.
De manera sumamente interesante para la historia de la ciberseguridad moderna, esta vulnerabilidad fue identificada inicialmente por la firma de inteligencia artificial Anthropic, utilizando su propio modelo de lenguaje, Claude. Tras su reporte ético, el equipo de desarrollo de Ghost (TryGhost) lanzó de inmediato un parche corrector el 19 de febrero de 2026 con la versión 6.19.1. No obstante, la conocida “brecha de parcheo” (el tiempo que transcurre entre la publicación de una actualización y su implementación real por parte de los administradores de sistemas) permitió que cientos de servidores quedaran expuestos de cara al internet público.
Desde el punto de vista puramente técnico, el CVE-2026-26980 es una inyección SQL ciega (Blind SQLi) no autenticada con una puntuación de gravedad CVSS de 9.4 (Crítica). El problema reside en el serializador de entradas dentro del archivo slug-filter-order.js, que gestiona el ordenamiento de los contenidos del API público de Ghost. Al procesar las solicitudes de filtrado, el sistema insertaba los valores del parámetro slug directamente en una cláusula raw de tipo ORDER BY sin la debida parametrización ni saneamiento. Un atacante remoto, sin necesidad de credenciales ni interacción de ningún usuario, podía enviar una sola solicitud HTTP modificada para forzar al motor de la base de datos a ejecutar consultas arbitrarias. Esto abría la puerta para extraer información confidencial directamente del backend, incluyendo credenciales de usuarios y, de manera crítica, las claves de la API de administración (Admin API Keys).
De la inyección SQL al secuestro de contenidos: El flujo de compromiso
Una vez que los atacantes explotan con éxito la inyección SQL y sustraen las llaves de la API de administración, el panorama cambia drásticamente. En un ataque web convencional, los delincuentes buscan desfigurar la página (defacement) o instalar una puerta trasera (webshell) en el servidor de archivos. En este caso, el método de intrusión es mucho más elegante y silencioso.
Al poseer la clave de la API de administración, los atacantes adquieren privilegios legítimos para interactuar con la infraestructura del CMS a través de canales autorizados. Utilizando scripts automatizados, realizan llamadas masivas a la Ghost Admin API con los siguientes objetivos:
- Auditoría interna: Identificar los artículos y páginas con mayor tráfico dentro del sitio web comprometido.
- Inyección silenciosa: Modificar de forma masiva los contenidos de los artículos publicados.
- Persistencia de código: Insertar una etiqueta de script maliciosa (un cargador o loader de JavaScript de peso ligero) al final de cada artículo o página comprometida.
Este procedimiento evita por completo la modificación de archivos del núcleo del sistema (core), evadiendo con éxito la mayoría de los sistemas de detección de intrusos (IDS) basados en la integridad de archivos del servidor. El CMS sigue funcionando con total normalidad, y los editores humanos no ven cambios estéticos alarmantes en su panel de control, mientras que cada visitante del sitio web comienza a cargar involuntariamente el código malicioso.
El motor de ingeniería social: ¿Qué es la campaña “ClickFix”?
El código JavaScript inyectado de forma silenciosa actúa como la primera etapa de una de las tácticas de ingeniería social más agresivas y efectivas de la actualidad: las campañas conocidas como “ClickFix”. Esta metodología explota la confianza ciega de los usuarios en los mecanismos de seguridad de navegación modernos.
Cuando un usuario accede a una de las páginas comprometidas, el script malicioso se ejecuta en el navegador e interrumpe la experiencia de usuario de manera dramática. En lugar del artículo que deseaba leer, la pantalla se cubre por completo con un iframe superpuesto diseñado con extrema precisión visual. Este overlay imita a la perfección una pantalla legítima de verificación humana de Cloudflare o un sistema CAPTCHA convencional.
Para consumar el engaño, la pantalla falsa simula un “error técnico de carga” o un fallo de verificación y despliega un mensaje instructivo sumamente convincente. Se le indica al usuario que, para resolver el inconveniente y continuar de manera segura, debe seguir una serie de pasos manuales:
- Hacer clic en un botón que, de manera silenciosa, copia una cadena de comando codificada en Base64 en el portapapeles del sistema operativo.
- Presionar la combinación de teclas
Windows + R(para abrir el cuadro de diálogo “Ejecutar” de Windows) o abrir la Terminal de macOS. - Pegar el contenido del portapapeles y presionar la tecla Enter.
A través de este engaño, los atacantes logran sortear la totalidad de las defensas del navegador. Dado que el usuario copia y ejecuta el código de manera manual, las protecciones de tipo “Sandbox” del navegador no tienen jurisdicción sobre la acción. El sistema operativo interpreta que un administrador legítimo está ejecutando conscientemente un comando a través de utilidades nativas del sistema, como PowerShell o los intérpretes de comandos de Windows. Al no existir la descarga directa de un archivo ejecutable malicioso desde el navegador, los antivirus tradicionales, los filtros de correo electrónico y muchas soluciones EDR (Endpoint Detection and Response) se vuelven completamente inútiles ante la ejecución inicial.
Evasión avanzada: Sistemas de distribución de tráfico (TDS) y Cloaking
Los cerebros detrás de esta campaña comprenden que la longevidad de su operación depende de su capacidad para permanecer ocultos ante los investigadores de seguridad y los rastreadores automatizados de motores de búsqueda. Por ello, el cargador inicial de JavaScript implementa técnicas avanzadas de evasión y filtrado (cloaking).
Cuando el script inicial se carga en el navegador del visitante, no despliega el ataque de forma inmediata. Primero, realiza un análisis del entorno del visitante enviando datos de telemetría a un Sistema de Distribución de Tráfico (TDS) controlado por los atacantes. Este sistema evalúa múltiples variables en milisegundos:
- La dirección IP del usuario y su geolocalización.
- El agente de usuario (User Agent) del navegador.
- La presencia de herramientas de depuración (Developer Tools) abiertas.
- La resolución de la pantalla y la presencia de variables de entornos virtualizados o sandboxes de análisis automatizado.
Si el sistema detecta que el visitante es un analista de seguridad, un crawler de motores de búsqueda (como Googlebot) o un sandbox de seguridad de red, el script simplemente se desactiva y el sitio de Ghost CMS carga el contenido original sin mostrar ninguna anomalía. Solo si el TDS determina que se trata de un usuario real, residencial y desprotegido, se sirve el iframe de segunda etapa que despliega la pantalla falsa de ClickFix.
Guerra de pandillas digitales: Actores en conflicto por el mismo botín
Las investigaciones de la empresa de seguridad china QiAnXin XLab, que ha estado monitoreando de cerca la campaña desde el 7 de mayo de 2026, revelaron un fenómeno sumamente inusual en el ecosistema del cibercrimen moderno: una lucha territorial digital directa en los servidores de las víctimas.
El análisis de la telemetría confirmó la existencia de al menos dos grupos de ciberdelincuentes distintos explotando de manera independiente la misma vulnerabilidad Ghost CMS. Debido a la enorme cantidad de sitios web que permanecían sin actualizar, ambos grupos comenzaron a escanear masivamente el direccionamiento IPv4 de internet para recolectar claves Admin API.
En múltiples ocasiones, los investigadores documentaron casos donde el “Grupo A” explotaba el CVE-2026-26980 e inyectaba su código malicioso en un portal académico. Pocas horas después, el “Grupo B” escaneaba el mismo servidor, sustraía la misma clave API, ejecutaba un comando para limpiar el script de su competidor y colocaba su propio cargador JavaScript. Esta competencia frenética demuestra el inmenso valor monetario que los atacantes otorgan al secuestro de portales de alta reputación institucional para sus campañas de distribución de malware.
Cargamentos letales: Malware de robo de información y puertas traseras
El comando de PowerShell que el usuario engañado ejecuta en su sistema operativo no es más que el inicio de una pesadilla de seguridad. El script inicial se conecta a la infraestructura de comando y control (C2) de los atacantes para descargar y ejecutar las fases finales de la infección. Los analistas de seguridad han identificado una amplia variedad de cargas útiles (payloads) de alta severidad distribuidas en esta campaña:
- Infostealers de credenciales: Malware sumamente agresivo como Lumma Stealer y StealC, diseñados específicamente para extraer credenciales guardadas en navegadores, tokens de sesión de Discord y Telegram, cookies de autenticación activa y carteras de criptomonedas.
- JS Droppers y DLL Loaders: Scripts intermedios diseñados para inyectar bibliotecas de enlace dinámico (DLL) maliciosas directamente en la memoria de procesos legítimos del sistema operativo, evadiendo defensas basadas en firmas.
- Puertas traseras persistentes basadas en Electron: Una de las variantes más peligrosas instala una aplicación persistente y silenciosa que simula procesos del sistema pero que, por debajo, realiza consultas periódicas (polling) al servidor C2 del atacante cada 30 segundos, esperando nuevas instrucciones o comandos para ejecutar de forma remota.
Mitigación y defensa: Cómo proteger su infraestructura Ghost CMS
La escala institucional de este ataque exige una respuesta coordinada e inmediata por parte de los administradores de sistemas y equipos de seguridad que tengan a su cargo instancias autohospedadas de Ghost CMS. Dado que la explotación es completamente silenciosa y no requiere interacción, cualquier instalación expuesta a la red pública es un objetivo potencial legítimo.
Para mitigar la vulnerabilidad Ghost CMS y sanear un entorno potencialmente comprometido, se deben seguir de forma estricta los siguientes pasos de respuesta a incidentes:
- Actualización inmediata de software: Actualizar de manera prioritaria todas las instancias de Ghost CMS a la versión 6.19.1 o posterior. Las instalaciones que se encuentren en versiones muy antiguas deben migrarse de inmediato para cerrar el vector de inyección SQL.
- Revocación de claves Admin API: Es vital comprender que el simple parcheo del software no desautoriza a los atacantes que ya han sustraído previamente las Admin API Keys. Los administradores deben ingresar a su panel de administración, auditar minuciosamente el apartado de integraciones y revocar y regenerar todas las claves de la API de administración activas.
- Auditoría de logs del API: Analizar los registros de acceso (logs) de los últimos 30 días, prestando especial atención a peticiones de tipo
POSToPUTdirigidas a los endpoints de artículos (/posts/) o páginas realizadas a través de la Admin API. Cualquier modificación masiva de artículos debe considerarse un indicador de compromiso (IoC) confirmado. - Saneamiento de base de datos: Realizar un análisis de la base de datos de producción buscando etiquetas de tipo
<script>sospechosas o enlaces externos no autorizados insertados al final del cuerpo de los artículos publicados. - Implementación de cabeceras de seguridad: Configurar una política de seguridad de contenido (CSP – Content Security Policy) estricta en el servidor web de cara al cliente, restringiendo la carga de scripts de JavaScript únicamente a dominios de extrema confianza y bloqueando conexiones a dominios desconocidos.
La campaña ClickFix que explota la vulnerabilidad de Ghost CMS sirve como un recordatorio contundente de que las defensas perimetrales convencionales y la confianza basada en la reputación de los nombres de dominio ya no son suficientes en el panorama tecnológico actual. En un mundo donde la inteligencia artificial puede descubrir vulnerabilidades críticas y los delincuentes pueden automatizar la explotación masiva a las pocas horas de su publicación, la actualización ágil de sistemas y la desconfianza sistemática ante instrucciones inusuales en la web siguen siendo los pilares fundamentales de la ciberseguridad corporativa.
Escrito por
TempMail Ninja
Experto en privacidad digital y seguridad en línea. Apasionado por crear herramientas que protejan la identidad de los usuarios en internet.


