TempMail Ninja
//

Vulnerabilidad WordPress: Alerta crítica por el exploit wp2shell

8 min de lectura
TempMail Ninja
Vulnerabilidad WordPress: Alerta crítica por el exploit wp2shell

El día en que la web tembló: wp2shell y el caos absoluto de la ciberseguridad

El 17 de julio de 2026 quedará registrado como uno de los momentos más críticos en la historia de la infraestructura digital moderna. En una maniobra de emergencia sin precedentes, el equipo de seguridad de WordPress se vio obligado a desplegar actualizaciones forzadas globales para corregir una devastadora **vulnerabilidad WordPress** bautizada como wp2shell. A diferencia de la inmensa mayoría de los fallos de seguridad que afectan a este ecosistema, los cuales suelen originarse en plugins o temas de terceros, esta amenaza reside directamente en el núcleo (core) de la plataforma. Esto significa que cualquier instalación limpia, estándar y sin un solo plugin activo es completamente vulnerable a la explotación remota por parte de atacantes anónimos.

Considerando que WordPress da soporte a más del 43% de todos los sitios web activos en internet, la vulnerabilidad representa una amenaza sistémica global. La gravedad del asunto es tal que los proveedores de infraestructura de seguridad más importantes, como Cloudflare, tuvieron que coordinarse en secreto con los desarrolladores de WordPress para desplegar reglas de mitigación en sus Firewalls de Aplicaciones Web (WAF) horas antes de que el fallo se hiciera público. La urgencia es real, los exploits públicos ya están circulando en la red, y la carrera entre los administradores de sistemas y los cibercriminales ha comenzado.

¿Qué es wp2shell? Anatomía de una vulnerabilidad WordPress devastadora

El término wp2shell no es una exageración publicitaria; describe con precisión quirúrgica el objetivo final del ataque: permitir que un usuario malintencionado y sin credenciales obtenga un webshell (consola de comandos remota) en el servidor de la víctima. Este compromiso absoluto se logra mediante el encadenamiento (chaining) de dos fallos independientes que, al unirse, destruyen por completo el esquema de privilegios de WordPress:

  • CVE-2026-60137: Una vulnerabilidad de inyección SQL (SQLi) de alta severidad localizada en el parámetro author__not_in de la clase fundamental de consultas de la base de datos de WordPress, conocida como WP_Query.
  • CVE-2026-63030: Un fallo crítico de control de acceso e interpretación de lógica (confusión de rutas) en el endpoint de procesamiento por lotes (batch) de la REST API de WordPress (batch/v1).

Por separado, el fallo de inyección SQL requiere autenticación en la mayoría de los escenarios prácticos para poder ser alcanzado por un atacante. Sin embargo, al combinarlo con la confusión de rutas en el endpoint de lotes de la REST API, un atacante anónimo puede eludir por completo los controles de permisos. Esto le permite enviar una solicitud HTTP maliciosa que interactúa directamente con la base de datos sin necesidad de iniciar sesión, logrando eventualmente la ejecución remota de código (RCE) en el sistema operativo del servidor.

El mecanismo técnico: Diseccionando la cadena de explotación

Para comprender la magnitud del riesgo, es vital analizar cómo interactúan estos componentes a nivel de código. La arquitectura de WordPress procesa las consultas de contenido y las peticiones web utilizando estructuras estandarizadas. Es aquí donde los atacantes encontraron las grietas estructurales.

La inyección SQL en WP_Query (CVE-2026-60137)

La clase WP_Query es el motor que WordPress utiliza para interactuar con la base de datos MySQL o MariaDB. Uno de sus parámetros de filtrado es author__not_in, diseñado para excluir publicaciones de ciertos autores mediante una lista de identificadores numéricos. El fallo radica en que el núcleo de WordPress no sanitizaba ni escapaba adecuadamente este parámetro si se le enviaba una cadena de texto (string) en lugar del arreglo de enteros (array) esperado.

Al procesar un valor no esperado, la lógica interna omitía las validaciones de tipo y concatenaba la cadena directamente en la consulta SQL final. Esto abre la puerta a una inyección SQL ciega basada en tiempo (blind SQL injection) o basada en errores, permitiendo a un atacante extraer información confidencial de la base de datos, incluyendo hashes de contraseñas de administradores, tokens de sesión y configuraciones del sistema.

Confusión de rutas en la REST API Batch (CVE-2026-63030)

Introducido en la versión 6.9, el endpoint de lotes de la REST API (disponible por defecto en /wp-json/batch/v1 o mediante el parámetro /?rest_route=/batch/v1) permite enviar múltiples sub-solicitudes en un solo paquete HTTP para mejorar el rendimiento. Internamente, WordPress procesa estas sub-solicitudes utilizando arreglos paralelos para rastrear tanto las peticiones individuales como sus respectivos controladores de ruta.

El fallo crítico de lógica ocurre cuando una de las sub-solicitudes genera un error de procesamiento específico. Este fallo desalinea los arreglos paralelos por un índice (desfase por uno). Como consecuencia, una sub-solicitud posterior es ejecutada bajo el contexto de seguridad y el controlador de otra ruta diferente, logrando un bypass total de autenticación (authentication bypass). Un usuario anónimo puede aprovechar este desajuste para forzar al sistema a ejecutar llamadas internas reservadas únicamente para administradores, como aquellas que interactúan directamente con la consulta vulnerable de WP_Query.

La tormenta perfecta: Del bypass al control total (RCE)

El impacto práctico de la cadena wp2shell es devastador. Una vez que el atacante logra eludir la autenticación mediante la confusión de rutas, utiliza la inyección SQL para comprometer el servidor. Los investigadores de seguridad han señalado que el camino hacia la ejecución remota de código varía según el entorno de red:

  1. Extracción de contraseñas: El atacante utiliza la inyección SQL para volcar la tabla wp_users, obteniendo los hashes de las contraseñas de los administradores del sitio.
  2. Acceso administrativo: Tras romper el hash mediante ataques de fuerza bruta o utilizando tokens de sesión válidos recuperados de la base de datos, el atacante accede al panel de administración.
  3. Inyección del Webshell: Una vez dentro del panel administrativo de WordPress, el atacante sube un plugin malicioso que contiene un script en PHP. Esto le otorga control total sobre el servidor web.

Es importante destacar que, de acuerdo con los análisis de Cloudflare y firmas de ciberseguridad, la cadena de ejecución directa de RCE se ve facilitada notablemente en servidores que no utilizan un sistema de almacenamiento en caché de objetos persistente (como Redis o Memcached). Sin embargo, la presencia de estas cachés no previene de ninguna manera el robo de datos mediante la inyección SQL subyacente, por lo que la mitigación parcial no debe considerarse una solución de seguridad válida.

Versiones afectadas y el impacto en la infraestructura global

La exposición al riesgo está rígidamente definida por las versiones del sistema operativo del gestor de contenidos. Las ramas afectadas se dividen de la siguiente manera:

  • WordPress versiones 6.8.0 a 6.8.5: Únicamente vulnerables a la porción de inyección SQL (CVE-2026-60137). Esta rama fue corregida en la versión de mantenimiento 6.8.6.
  • WordPress versiones 6.9.0 a 6.9.4: Totalmente vulnerables a la cadena completa de ejecución remota de código sin autenticación. Solucionado en la versión de emergencia 6.9.5.
  • WordPress versiones 7.0.0 a 7.0.1: Totalmente vulnerables a la cadena completa de ejecución remota de código sin autenticación. Solucionado en la versión de emergencia 7.0.2.
  • WordPress versión 7.1 Beta 1: Afectada por los fallos. Los parches correctivos se integraron directamente en la versión 7.1 Beta 2.

Para poner este incidente en perspectiva, las estadísticas de seguridad de WordPress para 2026 de Patchstack revelan que el año anterior se descubrieron 11,334 vulnerabilidades en el ecosistema, de las cuales el 91% pertenecían a plugins. Encontrar un fallo crítico de RCE sin autenticación en el propio núcleo de WordPress es un evento sumamente inusual y de extrema gravedad. El peligro es especialmente crítico en entornos de hosting compartido, donde un solo sitio web comprometido puede ser utilizado como plataforma de salto (pivotaje) para infectar a decenas de otros sitios web alojados en el mismo servidor físico.

Medidas de mitigación inmediatas: Cómo proteger tu ecosistema

Debido al peligro inminente y a la existencia de códigos de explotación públicos que ya están siendo utilizados activamente por actores de amenazas, es perentorio actuar de inmediato. Sigue estos pasos para mitigar el riesgo de forma definitiva:

1. Validar la actualización del Core

Aunque el equipo de seguridad de WordPress.org activó las actualizaciones automáticas forzadas para todos los sitios compatibles, muchos servidores tienen estas funciones bloqueadas por políticas de TI internas, configuraciones en el archivo wp-config.php o permisos de escritura restrictivos en el sistema de archivos. No asumas que tu sitio se ha actualizado solo. Accede al panel de control de tu WordPress y confirma de inmediato que estás ejecutando una de las siguientes versiones seguras:

  • 6.8.6 (si estás en la rama 6.8)
  • 6.9.5 (si estás en la rama 6.9)
  • 7.0.2 (si estás en la rama 7.0 o superior)

2. Utilizar la herramienta de validación de wp2shell

El equipo de investigación de Searchlight Cyber ha lanzado una herramienta pública y gratuita en el sitio web wp2shell.com. Los administradores de sistemas pueden ingresar la URL de sus portales en este validador seguro para determinar de forma externa si el servidor web responde de manera que revele la exposición a la confusión de rutas.

3. Bloqueo temporal del endpoint de la REST API

Si por razones operativas de compatibilidad no puedes actualizar el núcleo de WordPress de inmediato, debes restringir el acceso al endpoint vulnerable. Añade una regla a nivel de servidor web (Nginx o Apache) o utiliza tu WAF para bloquear por completo las peticiones dirigidas a la ruta de procesamiento por lotes:

/wp-json/batch/v1
/?rest_route=/batch/v1

El bloqueo de esta ruta específica detendrá los intentos de explotación de wp2shell sin romper la funcionalidad general del sitio web, a excepción de aplicaciones muy específicas que dependan del procesamiento agrupado de la REST API.

4. Implementación de reglas WAF de Cloudflare

Si tu sitio web utiliza la red de entrega de contenido (CDN) de Cloudflare, asegúrate de tener activo el Firewall de Aplicaciones Web. Cloudflare ha desplegado reglas especializadas para neutralizar de inmediato las firmas de ataque asociadas con el parámetro author__not_in y las peticiones corruptas a la API de lotes. Sin embargo, recuerda que estas medidas son un escudo temporal y nunca sustituyen la instalación del parche oficial de WordPress.

TN

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.