En febrero de 2025, un equipo de respuesta ante incidentes detectó actividad sospechosa en servidores que utilizaban CraftCMS, un sistema de gestión de contenidos basado en PHP muy popular para la creación de sitios web y tiendas digitales. La investigación reveló que atacantes habían aprovechado una vulnerabilidad crítica, denominada CVE-2025-32432, que permitía la ejecución remota de código (RCE) sin necesidad de autenticación previa. La amenaza generada por esta brecha subraya la importancia de mantener actualizado este software y comprender en profundidad las técnicas empleadas por los ciberdelincuentes para mitigar riesgos efectivos en entornos reales. CraftCMS es una plataforma flexible y ampliamente adoptada que permite a administradores de contenido y desarrolladores gestionar activos digitales como imágenes, documentos y otros ficheros. Una de sus características es la funcionalidad de transformación de imágenes, que permite modificar dimensiones y formatos de contenidos multimedia de forma dinámica.
No obstante, esta misma funcionalidad fue el vector de ataque que los actores maliciosos utilizaron para infiltrarse y comprometer servidores. La dinámica de la brecha comenzó con la búsqueda automatizada de IDs válidos de activos mediante solicitudes POST consecutivas al endpoint responsable de aplicar las transformaciones a imágenes. Al analizar los registros de acceso y de la propia plataforma, se constató que los agresores enviaban consultas incrementales a la ruta /index.php?p=admin/actions/assets/generate-transform tratando de identificar activos existentes. Aquellas respuestas HTTP 302 indicaban la existencia del activo, mientras que los códigos 404 denotaban intentos infructuosos.
Una vez hallado un ID válido, los atacantes efectuaron pruebas para determinar si el servidor era vulnerable. En este paso inicial, enviaron un cuerpo modificado en las solicitudes POST que incluía un campo ilegítimo bajo la sintaxis "as session" con un objeto cuyas propiedades desencadenaban la llamada a la función nativa phpinfo(). Este método confirmó la posibilidad de ejecución de comandos PHP arbitrarios dentro del contexto del servidor comprometido. A continuación, la explotación avanzó en dos fases principales. Primero, se introdujo código PHP malicioso a través de parámetros GET en la página administrativa, con fragmentos que descargaban un archivo gestor de ficheros en PHP, denominado filemanager.
php, desde un repositorio público de GitHub. Aunque inicialmente sin autenticación, las redirecciones aseguraban la escritura de este código dentro de archivos de sesión PHP del sistema, que posteriormente serían invocados mediante solicitudes manipuladas a la función de transformación de imágenes. La etapa siguiente consistió en emplear la clase PhpManager del framework Yii, en la que se incluían dinámicamente archivos de sesión que contenían código PHP inyectado. Esta técnica permitía la ejecución remota completa, habilitando a los atacantes para intervenir el servidor con comandos arbitrarios, descargando, modificando o eliminando archivos críticos, y estableciendo puertas traseras persistentes. La investigación detalló que la automatización inicial por parte de los atacantes enfrentó dificultades, reflejadas por fallos en los intentos de descarga del gestor de ficheros.
Sin embargo, tras modificar su metodología y alternar agentes de usuario, lograron administrar eficazmente el despliegue de tools maliciosas y continuaron con subidas de archivos adicionales, presuntamente para ampliar su control o desplegar cargas útiles adicionales. Entre los archivos comprometidos destacó el renombramiento estratégico de filemanager.php a autoload_classmap.php para evadir detección y facilitar el abuso continuado. El análisis forense también reveló accesos sospechosos a ficheros tales como wp-22.
php y style.php, sin que estos estuvieran presentes en el sistema durante la inspección, lo que sugiere técnicas de ocultación, uso de capacidades en memoria o posibles cargas residuales dentro del gestor de archivos instalado. La persistencia y el incremento progresivo de actividad maliciosa derivaron en tiempos posteriores con sobrescrituras y destrucción de archivos legítimos, originando paradas de los servicios web afectados. Desde el punto técnico, esta vulnerabilidad se encuentra en el proceso de normalización de transformaciones de imágenes, donde el mecanismo permite adjuntar comportamientos (behaviors) arbitrarios mediante configuraciones JSON sin adecuada validación ni autenticación. La particularidad radica en el manejo flexible de clases y objetos que permiten cargar componentes comportamentales de forma dinámica.
El exploit aprovecha el sistema de creación de objetos del framework Yii, forzando la construcción de cadenas de gadgets (gadget chains) que desatan la ejecución de funciones nativas PHP a través de efectos secundarios como destructores de objetos. El uso combinado de las clases GuzzleHttp Psr7 FnStream y Yii Rbac PhpManager permitió a los atacantes no solo provocar la ejecución inmediata de funciones sino también incluir archivos PHP maliciosos alojados en sesiones específicas, desplazándose así fuera del alcance de mecanismos convencionales de control y acceso. Este vector de ataque exige la existencia de un ID válido de activos y la ausencia de mecanismos de protección robustos en endpoints críticos. La evolución del código vulnerado entre las versiones 3.x, 4.
x y 5.x de CraftCMS se relaciona con la posición en la que se realiza la validación del ID dentro del flujo de transformación, complicando pero no imposibilitando la explotación cross-version. Debido a la gravedad y a la naturaleza auténtica de los ataques, los equipos de seguridad realizaron un rastreo masivo a nivel global detectando aproximadamente 13000 instancias vulnerables en internet vinculadas a unos 6300 IPs diferentes, con una mayor concentración en Estados Unidos. Al menos 300 servidores evidenciaron signos de compromisos similares a la campaña descrita, patrón identificado a través de restos específicos como los nombres y hash de archivos maliciosos dejados en el webroot. La respuesta coordinada impulsó la asignación y publicación de referencias oficiales CVE, así como la rápida liberación de parches y versiones corregidas por CraftCMS, cubriendo las ramas afectadas con versiones de mantenimiento destinadas a mitigar la amenaza.
Estas correcciones actúan fortaleciendo la validación de las entradas y limitando el mecanismo de comportamiento dinámico explotado. Para proteger instalaciones de CraftCMS, es imprescindible revisar regularmente las solicitudes POST en /index.php?p=admin/actions/assets/generate-transform, monitorizando la aparición de campos con prefijos "as" que pueden indicar intentos de inyección. Asimismo, analizar los registros de acceso web para identificar patrones inusuales como múltiples intentos de transformación de imágenes con assetIds incrementales, llamadas a endpoints administrativos con código inyectado o códigos HTTP indicativos de redirección inesperada. En el contexto de la seguridad operativa, habilitar políticas estrictas de CSRF (Cross-Site Request Forgery), controlar meticulosamente los permisos de archivos y directorios, aplicar actualizaciones constantes y segmentar el acceso a zonas administrativas son prácticas esenciales para minimizar el impacto potencial de incidentes similares.
Los mecanismos basados en detección automática, como plantillas para herramientas de escaneo Nuclei, también pueden ayudar a identificar rápidamente activos vulnerables, permitiendo así anticipar y neutralizar riesgos antes de que sean explotados. Estas herramientas basan su eficacia en replicar el patrón de solicitudes que desencadenan la vulnerabilidad, confirmando su presencia sin necesidad de autenticación. El caso de CVE-2025-32432 sirve como una advertencia crucial sobre la interacción compleja entre la evolución del software, la adaptación de los actores malintencionados y la importancia de una postura defensiva proactiva. El estudio técnico detallado y la puesta en común de indicadores de compromiso proporcionan una base sólida para que administradores, desarrolladores y especialistas en seguridad comprendan tanto la amenaza concreta como las técnicas que permiten detectarla y contenerla. En resumen, la explotación RCE en CraftCMS demuestra las consecuencias devastadoras de vulnerabilidades en funcionalidades consideradas rutinarias, como la gestión y transformación de imágenes.
La combinación de un exploit que aprovecha características permitidas en el framework subyacente y la falta de bloqueo efectivo conduce a incidentes masivos que afectan la integridad, disponibilidad y confianza en entornos web. La clave reside no solo en parches técnicos, sino en la concienciación constante y la implementación de controles amplios que engloben prevención, detección y respuesta inmediata ante anomalías. Mantener ante todo la vigilancia, auditar sistemáticamente las actividades y establecer procesos de revisión continua favorece que plataformas como CraftCMS puedan seguir siendo utilizadas de forma segura sin convertirse en vectores para campañas maliciosas que dañan usuarios y organizaciones por igual.