Introducción

Hace 48 horas, Searchlight Cyber hizo público un vector de ataque llamado wp2shell que combina dos vulnerabilidades críticas en WordPress Core para lograr Remote Code Execution (RCE) sin autenticación. Los exploits ya están disponibles en GitHub y, según watchTowr, se registraron los primeros intentos de explotación en entornos reales. El riesgo es crítico: más de 500 millones de sitios usan WordPress, y la cadena de ataque funciona incluso en instalaciones por defecto sin plugins.

WordPress respondió con actualizaciones forzadas automáticas para versiones afectadas (6.9.x y 7.0.x), pero el impacto ya es masivo. Si tu infraestructura aloja sitios WordPress, este artículo detalla los componentes afectados, los vectores de ataque, y los pasos concretos para mitigar el riesgo antes de que los atacantes automatizen el escaneo y explotación.

Qué ocurrió

El 12 de mayo de 2026, el equipo de Searchlight Cyber descubrió y reportó a WordPress dos fallos críticos en Core que, al encadenarse, permiten RCE sin autenticación. Los detalles técnicos se mantuvieron en reserva inicialmente para dar tiempo a los administradores a parchear, pero los exploits públicos ya circulan en GitHub y se detectaron intentos de explotación en la naturaleza.

Los fallos afectan a:

  • CVE-2026-63030: Confusión en la ruta de la REST API (introducida en WordPress 6.9).
  • CVE-2026-60137: Inyección SQL en el parámetro author__not_in de WP_Query (presente desde WordPress 6.8).

La combinación de ambos permite a un atacante ejecutar código arbitrario en el servidor sin necesidad de credenciales, incluso en instalaciones por defecto. WordPress activó actualizaciones automáticas para versiones 6.9.5 y 7.0.2, pero el 54% de los ataques exitosos no son detectados por los equipos de seguridad según el whitepaper de Picus, lo que aumenta el riesgo de explotación masiva.

Impacto para DevOps / Infraestructura / Cloud / Seguridad

Para equipos de DevOps e infraestructura

  • Alcance: Afecta a todas las versiones de WordPress entre 6.9.0 y 7.0.1, incluyendo instalaciones por defecto sin plugins.
  • Impacto en cloud: Si tu infraestructura aloja sitios WordPress en AWS, Kubernetes (EKS), o cualquier entorno cloud, el riesgo es alto porque los atacantes pueden escalar de RCE a toma de control del contenedor o instancia.
  • Mitigación temporal: Cloudflare ya desplegó reglas en su WAF para bloquear intentos de explotación (incluyendo planes gratuitos), pero no reemplaza el parcheo. Las reglas bloquean:
– Inyección SQL (CVE-2026-60137).

– Confusión en la REST API (CVE-2026-63030).

Para equipos de seguridad

  • CVSS: El vector de RCE sin autenticación tiene un CVSS v3.1 de 9.8 (Crítico).
  • Explotación en la naturaleza: watchTowr reportó los primeros intentos de explotación horas después de la publicación de los exploits públicos.
  • Detección: Los equipos de seguridad deben priorizar la búsqueda de:
– Logs con intentos de inyección SQL en /wp-json/wp/v2/users.

– Peticiones maliciosas a la REST API con rutas ambiguas (ej: POST /wp-json/wp/v2/batch).

Para entornos híbridos o multi-nube

  • AWS: Si usás Amazon EKS con WordPress en pods, el riesgo de lateralización es alto. Un atacante con RCE puede:
– Exfiltrar credenciales de IAM desde los metadatos de instancia (si el pod tiene permisos sts:AssumeRole).

– Persistir mediante creación de pods con imágenes maliciosas.

  • VPNs y firewalls: Los equipos deben revisar reglas de WAF (Cloudflare, AWS WAF, Azure Front Door) para bloquear los payloads conocidos.

Detalles técnicos

CVE-2026-63030: Confusión en la REST API

  • Versiones afectadas: WordPress 6.9.0 a 6.9.4 y 7.0.0 a 7.0.1.
  • Vector: La REST API en WordPress 6.9 introdujo un endpoint /wp-json/wp/v2/batch que permite procesar múltiples solicitudes en una sola petición. La confusión ocurre cuando un atacante envía una petición con una ruta ambigua (ej: /wp-json/wp/v2/batch?route=/users/me), lo que lleva a la ejecución de código en el contexto de WordPress.
  • Exploit público: Un ejemplo en GitHub muestra cómo enviar una petición maliciosa para listar usuarios y luego ejecutar comandos:
  POST /wp-json/wp/v2/batch HTTP/1.1
  Host: ejemplo.com
  Content-Type: application/json

  [
    {"method": "GET", "path": "/wp-json/wp/v2/users"},
    {"method": "POST", "path": "/wp-json/wp/v2/plugins", "body": {"status": "install", "plugin": "<?php system($_GET['cmd']); ?>"}}
  ]
  
  • Parche: Corregido en WordPress 6.9.5 y 7.0.2.

CVE-2026-60137: Inyección SQL en author__not_in

  • Versiones afectadas: WordPress 6.8.0 a 6.8.5 (no permite RCE por sí sola) y 6.9.0 a 7.0.1 (combinada con CVE-2026-63030).
  • Vector: El parámetro author__not_in de WP_Query permite inyección SQL debido a una sanitización insuficiente. Un atacante puede extraer hashes de contraseñas de usuarios administradores.
  • Exploit público: Un exploit en GitHub muestra cómo extraer los hashes:
  SELECT user_pass FROM wp_users WHERE ID = 1;
  
  • Parche: Corregido en WordPress 6.9.5 y 7.0.2.

Cadena de ataque wp2shell

La combinación de ambos fallos permite:

  1. Explotar CVE-2026-63030 para obtener una lista de usuarios.
  2. Explotar CVE-2026-60137 para extraer el hash de la contraseña del administrador.
  3. Crackear el hash (usando herramientas como Hashcat) y subir un plugin malicioso para ejecutar comandos.

Qué deberían hacer los administradores y equipos técnicos

1. Verificar versiones afectadas y parchear YA

Ejecuta estos comandos para identificar versiones de WordPress:

# En un entorno Linux con WordPress instalado
grep -r "wp_version" /var/www/html/wp-includes/version.php
  • Si usás WordPress 6.9.x o 7.0.x:
  # Actualizar a WordPress 6.9.5 o 7.0.2 (según corresponda)
  apt update && apt upgrade wordpress -y
  
  • Si usás WordPress en Docker:
  # Actualizar la imagen en tu docker-compose.yml
  image: wordpress:7.0.2
  
  • Si no podés actualizar inmediatamente:
Mitigación temporal:
    # Bloquear acceso a la REST API (solo para entornos de emergencia)
    sudo iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string "/wp-json/wp/v2/" -j DROP
    

Configurar WAF (Cloudflare, AWS WAF, o Azure Front Door) con reglas para bloquear:

– Peticiones a /wp-json/wp/v2/batch.

– Inyecciones SQL en author__not_in.

2. Revisar logs y monitorear actividad sospechosa

  • Buscar en logs de Apache/Nginx:
  grep -i "wp-json/wp/v2/batch" /var/log/nginx/access.log
  grep -i "author__not_in" /var/log/apache2/access.log
  
  • Alertas en SIEM/EDR:
– Bloquear IPs que envíen peticiones a /wp-json/wp/v2/ con payloads sospechosos.

– Monitorear intentos de login fallidos en /wp-admin/.

3. Validar integridad de archivos de WordPress

Si sospechás que tu sitio ya fue comprometido:

# Verificar integridad con WP-CLI
wp core verify-checksums

# Listar plugins y temas sospechosos
wp plugin list --status=dropin
wp theme list --status=dropin

4. Actualizar plugins y temas

Los exploits pueden usar plugins vulnerables como vector de persistencia. Ejecuta:

wp plugin update --all
wp theme update --all

5. Revisar permisos y políticas de IAM (para entornos cloud)

  • AWS: Si WordPress corre en EKS, revisá los permisos de los pods:
  # Ejemplo de ServiceAccount con mínimos permisos
  apiVersion: v1
  kind: ServiceAccount
  metadata:
    name: wordpress-sa
    namespace: wordpress
  ---
  apiVersion: rbac.authorization.k8s.io/v1
  kind: Role
  metadata:
    name: wordpress-role
  rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get", "list"]
  
  • GCP/Azure: Revisá las políticas de IAM para evitar escalada de privilegios.

Conclusión

La cadena de ataque wp2shell es una de las vulnerabilidades más críticas en WordPress en años: RCE sin autenticación, afecta a millones de sitios, y los exploits ya circulan. Los equipos de DevOps e infraestructura deben priorizar:

  1. Parchear a WordPress 6.9.5 o 7.0.2 (WordPress ya activó actualizaciones automáticas).
  2. Bloquear temporalmente la REST API si no podés actualizar.
  3. Monitorear logs y WAF para detectar intentos de explotación.

El riesgo no es teórico: watchTowr ya reportó los primeros intentos en la naturaleza. Si tu infraestructura aloja WordPress, actuá hoy.

Fuentes

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *