WordPress 6.9.4: Parches de Seguridad Críticos
Actualización (04/08/2026): Resumen de las novedades más relevantes desde la publicación original.
- WP2Shell crítico: WordPress 6.9.5 y 7.0.2 parchearon CVE-2026-60137 y CVE-2026-63030 (inyección SQL + confusión de rutas REST), dos vulnerabilidades encadenables que permiten control total sin autenticación.
- Explotación activa en marcha: A días del lanzamiento, actores maliciosos ya explotan masivamente los fallos en sitios desactualizados, con docenas de exploits públicos verificados en circulación.
- Millones de sitios expuestos: Aunque WordPress activó actualizaciones automáticas forzadas, más de un millón de WordPress aún siguen sin actualizar y son objetivo directo del escaneo masivo.
Actualización (17/07/2026): Resumen de las novedades más relevantes desde la publicación original.
- Campaña de backdoors en mu-plugins: En julio de 2026, investigadores descubrieron una campaña sofisticada de ataques dirigida al directorio /wp-content/mu-plugins/ de WordPress, comprometiendo sitios con plugins aparentemente legítimos.
- Ataque de cadena de suministro: Un ataque documentado en junio de 2026 expuso hasta 1,2 millones de sitios WordPress a través de plugins confiables que ejecutaban código malicioso sin ser detectados.
- Guía de seguridad de plugins 2026: Se actualizó la documentación sobre auditoría de plugins y mejores prácticas de mantenimiento antes de cada actualización mayor, especialmente crítico ante estos nuevos vectores de ataque.
Actualizado el 12/07/2026 — Este artículo fue actualizado con información reciente y secciones nuevas.
WordPress 6.9.4 es una versión de seguridad crítica lanzada el 26 de marzo de 2026 que parcheó tres vulnerabilidades de alto riesgo en el editor de bloques y el sistema de permisos. Si tu sitio sigue en 6.9.2, 6.9.3 o anterior, necesitás actualizar ahora.
WordPress 6.9.4 es una actualización de mantenimiento de seguridad para el sistema de gestión de contenidos WordPress. Lanzada tras detectar tres vulnerabilidades críticas (CVE-2026-3906, CVE-2026-3907 y CVE-2026-3908) en versiones anteriores de la serie 6.9.x, parcheó bypass de autorizaciones, path traversal en carga de archivos e inyección XXE. La actualización toma 2 a 5 minutos y es recomendada para todos los sitios, especialmente aquellos con múltiples usuarios editores o comercio electrónico.
En 30 segundos
- WordPress 6.9.4 parcheó tres CVEs críticas identificadas en auditoría de la WP Core Team, todas relacionadas con escalada de privilegios y acceso no autorizado
- La actualización tarda 2 a 5 minutos si todo está bien configurado, pero requiere que desactives plugins conflictivos primero
- Antes de actualizar: respalda la base de datos completa y verifica compatibilidad de plugins en staging
- Si algo se rompe, tenés rollback disponible desde WP-CLI en menos de 1 minuto restaurando tu backup
- El procedimiento seguro es: backup → desactivar plugins → actualizar → probar → reactivar progresivamente
Qué es WordPress 6.9.4 y por qué es urgente
WordPress 6.9.4 no trae features nuevas. Es un parche de mantenimiento puro que cierra agujeros de seguridad reales documentados por la WP Core Team. La urgencia viene de ahí: estas vulnerabilidades pueden explotarse si ejecutás código sin validar en el editor de bloques o si tenés usuarios con permisos bajos.
Lo que pasó fue que WordPress separó los permisos de edición entre el block editor y el editor clásico hace tres versiones. En ese momento no sincronizaban correctamente, y recién ahora lo encontraron en auditoría interna. Mejor que te enteres por una auditoría que por un mail de rescate.
Hay tres CVEs documentadas. Las dos primeras son bypass de permisos (usuarios con rol bajo podían editar posts que no deberían tocar). La tercera es una race condition en la REST API bajo alto tráfico simultáneo. Todas tienen impacto real en sitios con múltiples editores o tráfico alto.
Guía de instalación paso a paso (el procedimiento seguro)
Antes de tocar nada en producción, necesitás un plan B. Imaginate que sos admin de un sitio con 200 posts y 15 plugins activos. Subís la actualización directamente, algo se rompe, y perdés la mañana debuggeando. Acá va la ruta correcta.
Paso 1: Respalda todo, en serio
Entrá a tu hosting (Donweb, donde sea) y bajate el backup automático de las últimas 24 horas. Si tu servidor no genera backups automáticos, hacé uno ahora. No uses el plugin de respaldo de WordPress para esta tarea crítica — usá mysqldump o el sistema de backups del hosting.
Comando rápido si accedés por SSH:
mysqldump -u usuario -p nombre_db > backup_6_9_3.sql
Eso te genera un SQL que podés restaurar en 30 segundos si necesitás revertir. Un consejo: guardá ese SQL en dos lugares. En el hosting y en tu máquina local. Redundancia = seguridad.
Paso 2: Probá en staging primero
Si tenés un sitio staging con copia exacta de producción, actualizá ahí primero. Bajate el backup, restauralo en staging, activá WordPress en modo desarrollo (define(‘WP_DEBUG’, true) en wp-config.php), y entonces sí descargá 6.9.4.
Corre todas tus pruebas: crea un post nuevo, edita uno viejo, probá subir una imagen, verifica que los formularios de contacto funcionen. Activá todos los plugins. Si algo rompe, ahora lo ves en staging, no en el sitio live.
Si no tenés staging, crealo. Es 10 minutos clonando tu sitio en un subdominio. Vale cada minuto después.
Paso 3: Desactiva plugins conflictivos (solo si es necesario)
Algunos plugins viejos generan conflictos con el block editor de 6.9.4. Antes de actualizar, si reconocés que usás plugins sin actualizar desde 2024, desactiválos. La mayoría de los conflictos conocidos son con Advanced Custom Fields (ACF) versiones anteriores a 6.3 y Elementor anterior a 3.22.
- ACF < 6.3: problemas con renderizado de campos custom en el block editor
- Elementor < 3.22: widgets que no responden en modo edición post-6.9.4
- Plugins caseros: si enganchás directamente a admin_enqueue_scripts sin verificar si es block editor, probablemente rompas
- Page builders viejos: cualquier builder que no se actualizó en más de un año merece desactivación preventiva
Entra a wp-admin, desactiva esos dos o tres plugins problemáticos, y recién entonces actualizá.
Paso 4: Actualizá desde wp-admin (el método común)
En WordPress no instalás nada manualmente. Entrás a wp-admin, Dashboard, ves que 6.9.4 está disponible, clickeás “Actualizar ahora”, y se hace sola. Tarda 2 a 5 minutos dependiendo del tamaño de tu sitio y la velocidad del servidor.
Si preferís WP-CLI (que es más rápido y te da logs útiles):
wp core update
Punto. Te descarga 6.9.4 y la instala. Si querés ver el progreso detallado:
wp core update --version=6.9.4
Paso 5: Verificá que todo funciona
Post-actualización: entrá al sitio en incógnito (para saltear cache), crea un post borrador nuevo, edita uno viejo, probá subir una imagen, verifica que los plugins siguen respondiendo. Si ves errores 500 o el dashboard no carga, corta todo ahora y hacé rollback (mirá la sección siguiente).
Monitoreá el sitio 10 minutos desde diferentes navegadores. No solo wp-admin, usuarios normales visitando posts. Si hay un error de compatibilidad, esos primeros 10 minutos lo muestran.
Vulnerabilidades específicas parcheadas en 6.9.4
Las tres CVEs cerradas son todas en el scope de “privilege escalation” o “unauthorized modification”. Traducido: alguien con permisos bajos podía hacer cosas que no debería poder hacer.
CVE-2026-3906: Bypass de permisos en block editor
Severidad: Alta | Tipo: Privilege escalation | Afectados: Usuarios con rol “Autor” o “Colaborador”
Un usuario con rol “Autor” (permisos: escribir posts propios únicamente) podía editar posts de otros autores si conocía la URL directa al post. No era visible en el listado de posts, pero si ibas directo al permalink en mode edit, te dejaba meterte. No se reportaron exploits documentados en la salvaje, pero bastantes sitios con equipos editoriales grandes quedarían expuestos.
El problema estaba en cómo el block editor verificaba permisos cuando cargabas un post directamente. Se saltaba la validación de propiedad.
CVE-2026-3907: Path traversal en carga de archivos (PclZip)
Severidad: Crítica | Tipo: Path traversal / Remote Code Execution | Afectados: Cualquier usuario con permisos de subida de archivos
La librería PclZip, usada por WordPress para procesar archivos ZIP (importar posts, restaurar backups, etc.), tenía un bug donde un usuario podía subir un ZIP con rutas construidas maliciosamente para escribir archivos fuera del directorio previsto. Eso significa que un atacante podía potencialmente escribir un archivo PHP en el directorio de plugins o temas, logrando ejecución de código.
Esta es la más peligrosa de las tres. Un usuario con permisos de subida (incluso de bajo nivel en algunos setups) podía comprometer el sitio completamente.
CVE-2026-3908: Inyección XXE en getID3
Severidad: Alta | Tipo: XML External Entity Injection | Afectados: Usuarios que suben archivos multimedia
La librería getID3, usada para extraer metadata de archivos de audio y video, no sanitizaba correctamente XML malformado. Un atacante podía subir un archivo de audio/video con XML inyectado que causaría lectura de archivos locales del servidor o, en peores casos, denegación de servicio.
Menos explotable que las otras dos, pero sigue siendo un riesgo real para sitios que permiten subida de media sin verificación.
Requisitos de PHP y compatibilidad del servidor
WordPress 6.9.4 mantiene los mismos requisitos que 6.9.2 y 6.9.3. Pero si venís de versiones mucho más viejas, acá va lo que necesitás:
- PHP 7.2.26 o superior: recomendado PHP 8.0 o 8.1. Si tu hosting corre PHP 5.6 aún, no podes instalar WordPress 6.9.x directamente
- MySQL 5.7 o PostgreSQL 10: MariaDB 10.3 también funciona correctamente
- SSL/HTTPS recomendado: WordPress funcionará sin SSL pero alertará en wp-admin. Todos los hosters modernos incluyen SSL gratuito (Let’s Encrypt)
- Extensiones PHP requeridas: json, mysql/mysqli, gd, zip, iconv, curl (para API calls)
Si tu host no actualiza PHP automáticamente, podés verificar tu versión en wp-admin → Tools → Site Health (Herramientas → Salud del sitio). Si está en rojo, contactá a soporte del hosting y pedí upgrade a PHP 8.1 mínimo.
Una nota: si tu host aún corre PHP 5.6 ó 7.0, es momento de cambiar de hosting. No es broma. Esas versiones dejaron de recibir updates hace años.
Compatibilidad con plugins populares
Lo bueno: la mayoría de los plugins mantidos (WooCommerce, Jetpack, Yoast, MonsterInsights, etc.) ya reportaron compatibilidad completa con 6.9.4. La mayoría ni siquiera necesitó cambios.
Los rojos son plugins que no se actualizaron desde 2024 o antes. La realidad brutal: si un plugin dejó de recibir updates, WordPress eventualmente lo depreca.
| Plugin | Versión Min Soportada | Estado con 6.9.4 | Notas |
|---|---|---|---|
| WooCommerce | 6.0+ | ✅ Compatible | Versiones 7.0+ totalmente testeadas. No hay issues reportados. |
| Jetpack | 10.0+ | ✅ Compatible | Función Blocks funciona perfectamente con block editor 6.9.4. |
| Yoast SEO | 16.0+ | ✅ Compatible | Análisis SEO en real-time sin problemas. Actualiza a 18.0+ si es posible. |
| Advanced Custom Fields (ACF) | 6.3+ (PRO) | ⚠️ Parcial | ACF < 6.3 genera conflictos. Versión 6.3+ full compatible. |
| Elementor | 3.22+ | ✅ Compatible | Elementor < 3.22 tiene bug con block editor. Actualiza a 3.23+. |
| WP Super Cache | 1.12.7+ | ✅ Compatible | Versiones anteriores a 1.12.7 generaban caché corrupto post-actualización. |
| Gravity Forms | 2.8.1+ | ✅ Compatible | Versiones 2.8.0 y anteriores no renderizaban bien en block editor. |
| MonsterInsights | 8.0+ | ✅ Compatible | Google Analytics integration funciona sin problemas. |
| Mailchimp for WordPress | 4.0+ | ✅ Compatible | Sin issues reportados. Funciona perfectamente en 6.9.4. |
| Rank Math | 1.0.70+ | ✅ Compatible | SEO y redirects funcionan perfecto. Schema markup validado. |
Si tu plugin favorito no está en la lista y no se actualizó desde 2024, considerá reemplazarlo. La compatibilidad es crítica. No vale la pena usar un plugin zombie por nostalgia.
Cómo verificar si tu sitio está actualizado
Opción 1: Dashboard de WordPress
Entrá a wp-admin. Si estás en 6.9.4, no ves ninguna alerta de actualización disponible. El dashboard mostrará tu versión exacta en el pie de página del sitio (“WordPress 6.9.4”).
Opción 2: WP-CLI desde SSH
wp core version
Te devuelve la versión exacta instalada. Simple y rápido.
Opción 3: Ver el código HTML de tu sitio
En el navegador, abrí cualquier página de tu sitio, clickeá Ctrl+U (View Source), y buscá “wordpress” (Ctrl+F). Vas a ver una línea que dice algo como: <meta name="generator" content="WordPress 6.9.4">
Ojo: esto es públicamente visible. Cualquiera puede leer tu versión de WordPress leyendo el código fuente. No lo ocultes (algunos lo hacen por falsa seguridad), porque los atacantes asumen que todo corre WordPress de todas formas. La verdadera seguridad está en estar actualizado, no en esconderse.
Opción 4: Usando online tools
Hay herramientas online que verifican la versión sin acceso de admin. Entrá tu URL en WhatRuns o Wappalyzer y ven qué versión de WordPress estás usando. Útil si sos cliente y querés verificar qué corre el sitio de alguien más.
Procedimiento de rollback (si algo se rompe)
Post-actualización el sitio muestra errores 500. No entres en pánico. Tenés tres caminos para volver atrás.
Opción A: Restaurar base de datos desde backup (la más segura)
Es la ruta más segura. Volvés a 6.9.3 porque la BD no cambió significativamente entre versiones menores — solo los archivos de WordPress son distintos. Desde SSH:
mysql -u usuario -p nombre_db < backup_6_9_3.sql
Tarda unos minutos. Si tu hosting tiene cPanel, entra a Backup > Restore > seleccioná el backup pre-actualización. Automático y seguro.
Opción B: Downgrade de archivos con WP-CLI
Si sabés que la BD no se corrompió y solo necesitás volver los archivos de WordPress:
wp core download --version=6.9.3 --force
Eso descarga WordPress 6.9.3 y reemplaza los archivos sin tocar wp-content ni la BD. Rápido y reversible.
Opción C: Desactivar todos los plugins y debuggear
Si el error 500 viene de un plugin conflictivo, desactiválos todos y encontrá cuál es el culpable. Entra a SFTP, renombra wp-content/plugins a plugins-disabled, recarga el sitio. Si vuelve a la vida, reactiva los plugins uno por uno hasta identificar cuál rompe.
Una vez identificado, ya podés hacer rollback, actualizar ese plugin, y volver a 6.9.4 con confianza.
Mejores prácticas antes de actualizar WordPress
Vale la pena repetir esto porque muchos no lo hace. Si aprendés una cosa de todo esto, aprendé esto.
1. Siempre respalda antes, no después
Nunca “respalda después por si acaso”. Respalda ANTES. Cada vez. Cada actualización. No demora 30 segundos pero te ahorra potencialmente 8 horas de crisis si algo se rompe.
2. Probá en staging siempre
Si no tenés staging, crealo. Es 10 minutos clonando el sitio en un subdominio. Actualiza ahí primero, testea todo, y recién entonces toca producción. Vale cada minuto después.
3. Mantené los plugins actualizados
WordPress se actualiza cada 4 semanas. Los plugins deberían hacerlo también. Si un plugin no se actualizó en 6 meses, es un zombie. Eliminalo. No te ahorra nada, solo deuda técnica y riesgos de seguridad.
4. Documentá tus cambios custom
Si modificaste functions.php o agregaste snippets custom, dejá comentarios claros. “Esto es un workaround para X porque Y”. En caso de que una actualización lo rompa, sabés exactamente dónde buscar.
5. Monitoreá el sitio post-actualización
Después de actualizar, abrí el sitio 10 minutos seguidos desde diferentes navegadores. No solo wp-admin, usuarios normales visitando posts. Si hay un error de compatibilidad, esos primeros 10 minutos lo muestran claramente.
6. Desactiva plugins antes de actualizar
Los plugins se cargan muy temprano en el ciclo de WordPress. Si uno tiene un bug pre-6.9.4, interfiere con la actualización. Desactiva todos, actualiza, y reactiva progresivamente. Cero riesgo agregado, máxima seguridad.
Errores comunes (y cómo no cometerlos)
Error 1: “Actualizar sin respaldar”
Pensás “seguro anda bien, es solo un parche”. Luego algo se rompe, no tenés rollback, y estás llamando al hosting a las 2 AM pidiendo que restauren un backup de hace una semana. Bajate el SQL antes. Todo. No demora nada.
Error 2: “Actualizar directamente en producción sin probar”
Si tu sitio mueve dinero o tiene usuarios que dependen de él 24/7, eso es negligencia pura. Staging existe por una razón. Usalo siempre.
Error 3: “Dejar todos los plugins activos durante la actualización”
La mayoría anda bien, pero “la mayoría” no es “todos”. Si un plugin tiene gancho en early load, interfiere. Desactiva todos, actualiza, reactiva progresivamente. Cero riesgo, máxima seguridad.
Error 4: “Ignorar permisos de archivos post-actualización”
Después de actualizar, algunos hosters resetean permisos. Si wp-content queda con permisos 644 en vez de 755, no podés subir imágenes. Verificá post-actualización que wp-content y sus carpetas tengan permisos 755.
Error 5: “Actualizar plugins y WordPress al mismo tiempo”
Aislá variables. Actualizá WordPress primero, esperá 24 horas, verificá que no hay issues. Recién entonces actualizá plugins. Si algo se rompe, sabés exactamente qué lo rompió.
Error 6: “No verificar logs de errores después de actualizar”
Activa WP_DEBUG en wp-config.php antes de actualizar. Esto te va a mostrar warnings y errors que normalmente esconde WordPress. Post-actualización, revisá debug.log. Hay problemas escondidos que solo aparecen en los logs.
Preguntas Frecuentes
¿Es obligatorio actualizar a 6.9.4?
No es obligatorio pero sí urgente. Las vulnerabilidades son reales y potencialmente explotables. Tu sitio queda expuesto si no actualizás. Si tu blog es privado y sin usuarios editor, el riesgo es bajo. Si tenés un equipo editorial o WooCommerce vendiendo, hacelo ya.
¿Cuánto tiempo tarda la actualización en completarse?
Entre 2 a 5 minutos usualmente. Si tu base de datos tiene millones de posts o plugins que hacen trabajo pesado al cargar, puede tardar más. Por eso el respaldo y staging son críticos — planificá tiempos conservadores.
¿Qué pasa si actualizo pero mi hosting no reinicia PHP?
Algunos hosters necesitan reinicio de PHP post-actualización. Si actualizás desde wp-admin, generalmente se hace automático. Si lo hacés por WP-CLI, algunos sistemas viejos pueden cachear código compilado. Reinicia PHP en el panel de control de tu hosting si ves comportamiento extraño post-update.
¿Puedo quedarme en 6.9.3 indefinidamente?
Técnicamente sí, pero 6.9.4 es parche de seguridad obligatorio. Quedarte en 6.9.3 es quedarte con tres agujeros de seguridad documentados. WordPress 7.0 sale en junio y el soporte para 6.9.x termina poco después. Plan a mediano plazo: actualizá versiones mayores cuando estén estables (3 a 4 semanas post-release).
¿Necesito extensiones PHP especiales para 6.9.4?
No, las extensiones requeridas son las mismas desde hace años: json, mysqli, gd, zip, iconv, curl. Si tu hosting actualiza sus PHP automáticamente a versiones modernas (8.0+), todas estas vienen por defecto. Si no, contactá a soporte y pedí que instale gd y zip si faltan.
¿Qué hago si mi plugin favorito no es compatible?
Primero verificá si hay una versión más nueva del plugin. Si no, contactá al desarrollador en su repositorio de GitHub o WordPress.org. Si el plugin está completamente abandonado, buscá una alternativa mantenida. No vale la pena usar un plugin zombie por nostalgia — es deuda técnica pura.
¿Cómo sé si la actualización fue exitosa?
Post-actualización: (1) entra a wp-admin sin errores, (2) el Dashboard muestra “WordPress 6.9.4”, (3) verifica desde SSH: wp core version retorna 6.9.4, (4) probá crear un post y una página nuevas. Si todo corre, fue exitosa.
Conclusión
WordPress 6.9.4 no es sexy ni revolucionario. No trae features nuevas ni cambios cosméticos. Lo que hace es cerrar agujeros de seguridad reales y documentados. Eso debería ser suficiente razón para actualizar.
El procedimiento es aburrido y repetitivo: respalda, prueba en staging, desactiva conflictivos, actualiza, verifica. Pero es el procedimiento correcto y te ahorra potencialmente 5+ horas debuggeando si algo se rompe a las 3 AM un sábado.
Si tu sitio está actualizado hoy (12 de julio de 2026), verificá que sea 6.9.4. Si estás en 6.9.3 o anterior, abrí wp-admin, ve a Dashboard, y hacé clic en “Actualizar ahora”. Toma 5 minutos. El costo de no hacerlo es potencialmente tu sitio comprometido.






