Saltar al contenido
← Blog
Blog · Seguridad WordPress

WordPress 7.1.2: actualizá YA por path traversal crítico

WordPressSeguridad

El 22/09/2026 WordPress publicó 7.1.2, un security release con una única corrección pero de severidad crítica: CVE-2026-87902, un path traversal sin autenticación en la resolución de templates de páginas que permite a un atacante anónimo hacer que WordPress incluya un archivo PHP legible fuera del directorio del tema activo. Bajo ciertas condiciones del servidor y del tema, eso escala a ejecución remota de código (RCE) y compromiso total del sitio. Si actualizaste a 7.1.1 la semana pasada por Click2Shell: no alcanza, 7.1.1 también es vulnerable. Tenés que ir a 7.1.2 (o al backport de tu rama).

La única “buena” noticia: al momento de escribir este post no hay explotación activa confirmada ni entrada en el catálogo KEV de CISA. La mala: el PoC del investigador es público desde el mismo 22/09, se observó fingerprinting de sitios vulnerables a menos de 18 horas del release, y el patrón de los últimos meses (wp2shell, Click2Shell) muestra que la explotación masiva llega rápido después de la divulgación. Este post te dice qué pasó, qué precondiciones hacen falta para el RCE, cómo detectarlo y qué hacer hoy.

Qué pasó

El 22/09/2026, cinco días después del 7.1.1, WordPress lanzó 7.1.2 con una sola corrección de seguridad, reportada por Robert Ressl (GHSA-7hp8-65ch-5whp, CVE-2026-87902). El mensaje oficial fue directo: “This security release features a fix for a critical severity security vulnerability… update your sites immediately”, con backports a todas las ramas elegibles, hasta 4.7.

El fallo vive en la resolución del template de página (get_page_template() / locate_template()): el valor de pagename — que puede llegar doble-codificado para sobrevivir la primera pasada de sanitización de un WAF — se usa para resolver el archivo de template sin validar el traversal. Un atacante sin cuenta puede hacer que WordPress incluya un archivo .php legible que él elija, fuera del directorio del tema activo.

WordPress/Wordfence lo puntúan CVSS 9.2 (Critical, v4.0); NVD lo tiene como 8.1 (High, v3.1) — el desacuerdo viene de las precondiciones del RCE. Para tu decisión no cambia nada: es Core, es sin autenticación, y el vector de inclusión de archivos funciona solo.

Cómo funciona el ataque (y qué precondiciones piden)

El PoC público (ressl/cve-2026-87902-poc) describe la cadena contra la resolución de templates vía pagename con traversal double-encoded. Para que se vuelva explotable en tu sitio se necesitan varias condiciones simultáneas (Sploitus/CyberSIXT, cruzadas con Wordfence):

#PrecondiciónDónde fijarse
1Carpeta de primer nivel que empiece con page- en el tema activo (p. ej. page-templates/)wp-content/themes/<tu-tema>/
2Una página publicada alcanzable sin login, con page_id numérico conocidoPost type page, visibilidad pública
3Que no exista un page template custom anterior que resuelva antes en la cadenaTemplates declarados en el tema
4Un archivo .php legible en el servidor que el atacante quiera incluirConfiguración del servidor

El salto LFI → RCE completa exige una condición más del lado del servidor: conjuntos PHP con register_argc_argv activo permiten apuntar a pearcmd.php (la cadena clásica de PEAR a ejecución de comandos). Los reportes señalan que las imágenes oficiales de PHP en Docker y las configuraciones default de cPanel con PHP anterior a 8.5 son particularmente susceptibles, y que temas populares como Twenty Twelve, Twenty Fourteen, Neve, Hestia y Sydney aumentan la exposición (incluyen directorios page-*).

Tabla de detalle técnico

CampoDato
CVECVE-2026-87902
ProductoWordPress Core — versiones 4.7.0 hasta 7.1.1 (todas las ramas soportadas)
TipoPath traversal (CWE-22) → Local File Inclusion sin autenticación → RCE condicional
AutenticaciónNinguna (atacante anónimo)
Severidad9.2 Critical (CVSS v4.0, evaluación WordPress/Wordfence) · 8.1 High (CVSS v3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H, NVD/Feedly — por las precondiciones)
Versión corregida7.1.2 (22/09/2026) + backports: 7.0.6 · 6.9.9 · 6.8.10 · 4.7.37
InvestigadorRobert Ressl
PoCPúblico (GitHub, 22/09/2026)
Explotación activaNo confirmada al 22/09 · fingerprinting de sitios observado <18h después del release (byteiota, 23/09) · no está en KEV de CISA
Regla WAF WordfencePremium/Care/Response: 22/09 · Free: 22/10 (detecta el traversal en pagename, incluida la forma encoded que sobrevive la 1ª pasada)
Contexto 2026Cuarta cadena/fallo crítico en Core: wp2shell (julio, explotada, KEV), XSS2Shell (agosto, CVE-2026-64638), Click2Shell + Comment2Shell (septiembre, 7.1.1), y ahora este path traversal (7.1.2)

Indicadores de compromiso (IoCs)

Sin explotación confirmada, estos patrones sirven para detectar intentos de escaneo/ataque y, si aparecen, una posible víctima:

#IndicadorDónde mirarlo
1Requests hacia páginas con pagename conteniendo traversal (doble-encoded: %252f, %252e%252e o variantes que sobrevivan la 1ª pasada del WAF)Logs del servidor / WAF
2URLs del tipo /?page_id=<n>&pagename=... contra páginas publicadas, con variantes de path repetidasLogs del servidor / WAF
3Intentos repetidos contra rutas de la cadena PEAR (pearcmd.php) o archivos .php legibles conocidosLogs de acceso / errores PHP
4Páginas con template que resuelve a un archivo fuera del tema (si llegó a incluirse)Auditoría del tema + integridad del sitio

El punto 1 es la firma del intento de explotación; los puntos 3 y 4 apuntan a un intento que llegó más lejos.

Por qué te puede tocar

  1. Es WordPress Core, otra vez: afecta todas las versiones desde 4.7 hasta 7.1.1 inclusive. El que actualizó a 7.1.1 el jueves por Click2Shell tiene que volver a actualizar hoy. Si tu hosting no aplicó la actualización automática (redes de agencia, auto-updates desactivadas, instalaciones custom), seguís en la ventana.
  2. Sin autenticación y sin interacción: a diferencia de Click2Shell (que necesitaba un click de un admin logueado), este vector lo dispara un visitante anónimo con un request. No hay click de víctima, no hay tema que instalar: es pedir una página con el pagename manipulado.
  3. El PoC es público desde el día del parche y ya se detectó fingerprinting. En el patrón 2026 (wp2shell: explotación masiva en horas; Click2Shell: PoCs independientes en 72h), el timing de actualización es la única variable que controlás.
  4. Stack vulnerable específico: si tu sitio corre sobre imágenes oficiales de PHP en Docker, cPanel con PHP < 8.5 o con register_argc_argv activo, y además usás un tema con carpeta page-* (Twenty Twelve y compañía), estás en el extremo alto de la escala de riesgo.

Qué hacer ahora

  1. Actualizá a 7.1.2 hoy (o el backport de tu rama: 7.0.6, 6.9.9, 6.8.10, 4.7.37): Escritorio → Actualizaciones → “Actualizar ahora”. Verificá la versión real en Escritorio → Ajustes → Acerca de WordPress (o wp core version por WP-CLI). No asumas que el auto-update ya lo hizo: revisá cada sitio, incluidos staging y sitios olvidados.
  2. Si actualizaste a 7.1.1 por Click2Shell: ese paso fue necesario pero no suficiente. La versión segura es 7.1.2 (o el backport de tu rama). El 7.1.1 cierra la cadena de tema, pero no este path traversal.
  3. Checkeá las precondiciones: ¿tu tema activo tiene una carpeta de primer nivel que empiece con page-? ¿Tenés PHP con register_argc_argv activo o imágenes Docker oficiales de PHP / cPanel PHP < 8.5? Si respondés sí a alguna, sos target prioritario: actualizá antes de escanear.
  4. Revisá los logs por los patrones de la tabla de IoCs (traversal en pagename), especialmente en sitios que todavía no actualizaron.
  5. Si no podés actualizar ya: la regla del firewall de Wordfence (Premium desde 22/09, Free desde 22/10) bloquea el vector — pero es una capa, no un reemplazo del parche. Considerá también revisar register_argc_argv en php.ini como medida de contención.
  6. Si sos agencia: revisá todos los sitios de clientes y confirmá que el auto-update de Core esté activo. Uno solo vulnerable compromete la red entera — y el que “ya está en 7.1.1” también.

TL;DR: WordPress 7.1.2 (22/09/2026) corrige CVE-2026-87902, un path traversal crítico sin autenticación en Core (4.7.0–7.1.1) que puede incluir un archivo PHP fuera del tema y, con precondiciones de servidor (tema con carpeta page-*, PHP con register_argc_argv activo), escalar a RCE. PoC público el mismo día, sin explotación confirmada pero con fingerprinting ya detectado y fuera del alcance del 7.1.1. Actualizá a 7.1.2 hoy (o al backport de tu rama), revisá los IoCs en logs, y verificá la versión real de cada sitio — incluidos los que creés que ya están al día.

Fuentes

¿Tu WordPress está caído, hackeado o querés protegerlo antes de que pase? Te ayudo a recuperarlo y blindarlo.

Solicitar diagnóstico