Actualización del 28 de julio de 2026: la retención es ahora de seis horas
La retención obligatoria de las actualizaciones automáticas de plugins y temas en WordPress.org ha pasado de 24 horas a seis. Konstantin Obenland, colaborador patrocinado por Automattic, anunció el cambio en el canal #meta del Slack de WordPress, y The Repository lo publicó en el número 312 del 24 de julio de 2026.
Seis horas no son el destino. Según ese mismo mensaje, se trabaja para saltarse el retraso por completo cuando el revisor de IA llamado Gandalf no detecta ningún problema. Entonces la espera debería caer a minutos en la mayoría de las actualizaciones.
Todo lo que viene a continuación se escribió cuando el retraso era de 24 horas y se mantiene como registro de lo que costó esa política. Lee las cifras como el “antes”: la ventana de exposición que describe es hoy una cuarta parte y sigue encogiendo. La forma del problema no ha cambiado. Un diff público esperando detrás de cualquier retención sigue dando el primer movimiento a quien lo lea antes, y una agencia capaz de traer una versión etiquetada desde Git no espera ni seis horas ni 24.
Introducción
La decisión del equipo de plugins de WordPress.org, en junio de 2026, de implementar un retraso de 24 horas en las actualizaciones generó un intenso debate entre desarrolladores y administradores de sitios. Aunque este mecanismo se diseñó para evitar actualizaciones automáticas tras los recientes ataques a la cadena de suministro (como la intrusión en el CDN de plugins de Awesome Motive), su alcance real fue mucho mayor. El bloqueo afectaba a todas las actualizaciones - incluidas las que se ejecutan manualmente desde el panel de control. Desde el 24 de julio de 2026 la retención es de seis horas, y el equipo de plugins trabaja para eliminarla en las versiones que pasen limpias la revisión de Gandalf.
Para las agencias y equipos que gestionan grandes sitios B2B, este cambio introdujo un riesgo de seguridad importante. En el momento en que un desarrollador lanza un parche de seguridad, el registro de cambios se hace público. Los piratas informáticos y los bots pueden analizar el código inmediatamente y lanzar ataques, mientras que los administradores no podían actualizar durante un día entero. Ese bloqueo es ahora de seis horas. Veamos el mecanismo y cómo proteger nuestros proyectos fuera del directorio oficial de WordPress.org, sea cual sea el reloj vigente.
La ventana de vulnerabilidad: Bots con ventaja sobre los administradores
El problema principal del retraso es la asimetría de la información. Miriam Schwab de Elementor destacó en el Slack de WordPress que este retraso crea una ventana ideal para ataques automatizados. En condiciones normales, el tiempo de respuesta ante una vulnerabilidad crítica (por ejemplo, Inyección de SQL o Ejecución Remota de Código) se mide en minutos. Cuando el parche está disponible, las agencias utilizan scripts WP-CLI o sistemas de gestión (como MainWP, ManageWP) para su implementación inmediata.
En la versión original de la regla, la instalación se bloqueaba en WordPress.org durante 24 horas tras el envío del código por parte del desarrollador. Hoy la retención es de seis horas, pero la asimetría ha sobrevivido al recorte: el código es visible en el repositorio público de SVN o GitHub desde el momento del envío. Los bots pueden detectar versiones vulnerables y atacar sitios antes de que los propietarios tengan la oportunidad de hacer clic en “Actualizar”.
Otro problema es el reinicio del temporizador. Si un desarrollador detecta un fallo tras el lanzamiento y publica una nueva corrección (por ejemplo, la versión 1.0.1 pocas horas después de la 1.0.0), el período comienza de nuevo. Con las 24 horas, eso podía llevar la espera por código estable hasta 48. El mensaje de Obenland sobre el recorte a seis horas no dice nada del reinicio, así que cuenta con él hasta que el equipo de plugins indique lo contrario.
Impacto del retraso en los procesos de seguridad
Compare el modelo clásico de actualización, el retraso tal como se introdujo y la regla vigente hoy:
| Característica | Modelo clásico (hasta mayo de 2026) | Retraso tal como se introdujo (junio de 2026) | Actual (desde el 24 de julio de 2026) |
|---|---|---|---|
| Disponibilidad de parches de seguridad | Inmediata tras la publicación | Tras el período de retención de 24 horas | Tras el período de retención de seis horas |
| Visibilidad del código (diff) | Pública en SVN/Git | Pública en SVN/Git desde el envío | Pública en SVN/Git desde el envío |
| Ventana de vulnerabilidad para exploits | Mínima (depende del administrador) | Fija (mínimo de 24 horas para todos) | Fija (seis horas), prevista su eliminación tras una revisión limpia de Gandalf |
| Comportamiento al corregir fallos | Nueva versión disponible de inmediato | Reinicia el temporizador de 24 horas | Reinicia el temporizador de retención |
| Trabajo de los equipos DevOps / SecOps | Planificado de inmediato | Aplazado o gestionado a través de Composer | El mismo día laborable o a través de Composer |
Cómo configurar repositorios privados de Composer para actualizaciones de seguridad de WordPress
Para evitar el tiempo de espera de WordPress.org en parches de seguridad críticos, seis horas hoy y 24 antes de julio, las agencias deben gestionar las dependencias de plugins a través de Composer. Aquí hay una configuración lista para producción usando wpackagist y repositorios privados de GitHub.
Para mantener el control total del proceso de actualización y omitir el retraso de WordPress.org, recomendamos gestionar las dependencias a través de Composer. Esto permite obtener el código directamente de fuentes confiables (como el GitHub del desarrollador) antes de su aprobación en el directorio oficial.
A continuación se muestra una estructura de composer.json para un sitio B2B seguro:
{
"name": "wppoland/b2b-secure-site",
"description": "Production-ready Composer configuration bypassing WordPress.org update cooldown",
"repositories": [
{
"type": "composer",
"url": "https://wpackagist.org"
},
{
"type": "vcs",
"url": "https://github.com/elementor/elementor"
}
],
"require": {
"composer/installers": "^2.0",
"johnpbloch/wordpress-core": "^6.9",
"wpackagist-plugin/contact-form-7": "^5.9",
"elementor/elementor": "dev-master"
},
"config": {
"allow-plugins": {
"composer/installers": true,
"johnpbloch/wordpress-core-installer": true
},
"preferred-install": "dist"
}
}
Con esta configuración, en caso de fallos críticos en Elementor u otros plugins con repositorio VCS, podemos descargar el código directamente de la rama indicada en GitHub, antes de que termine el período de retención en WordPress.org.
Aspectos técnicos de la implementación de Composer en grandes entornos
La integración de Composer para evitar el tiempo de espera del directorio oficial requiere modificar el flujo de trabajo de DevOps. Configurar un servidor Satis local permite aplicar las actualizaciones sin demoras temporales.
Presentamos un modelo de archivo satis.json para la gestión interna de la agencia:
{
"name": "wppoland/agency-repository",
"homepage": "https://satis.wppoland.dev",
"repositories": [
{
"type": "vcs",
"url": "https://github.com/elementor/elementor"
},
{
"type": "vcs",
"url": "https://github.com/wp-premium/contact-form-7"
}
],
"require": {
"elementor/elementor": "*",
"wpackagist-plugin/contact-form-7": "*"
},
"require-dependencies": true,
"archive": {
"directory": "dist",
"format": "zip",
"skip-dev": true
}
}
Esto reduce el riesgo de seguridad y permite actuar en cuanto un parche se publica en GitHub. La dependencia del directorio oficial de WordPress.org deja de existir para sitios B2B de misión crítica.
La comparación entre el modelo SVN clásico y las canalizaciones de Git demuestra por qué Git es la opción preferida en entornos corporativos. Permite una integración continua y pruebas automatizadas de cada parche de seguridad antes de su distribución.
Análisis profundo: La evolución de las amenazas a la cadena de suministro de WordPress en 2026
En 2026, los ataques a la cadena de suministro se han vuelto más frecuentes en WordPress. La inserción de código malicioso llevó a WordPress.org a adoptar medidas severas de seguridad.
El período de retención busca analizar el código contra malware. El recorte de 24 horas a seis es la respuesta del equipo de plugins a la objeción de que un día entero era un precio demasiado alto por ese tiempo, y la eliminación prevista tras una revisión limpia de Gandalf va aún más lejos. Para agencias que necesitan aplicar correcciones críticas (CVSS 9.0+), seis horas siguen siendo seis horas.
Para sitios B2B, la velocidad de respuesta es vital. Sugerimos obtener el parche directamente del repositorio Git del autor, omitiendo el retraso asociado al directorio oficial. Esto evita la inyección de malware oculto, que muchas veces pasa desapercibido en análisis automáticos. Adicionalmente, proteger la carpeta de plugins con permisos de lectura (chmod 555) ayuda a impedir modificaciones no autorizadas en el servidor.
El protocolo de respuesta a incidentes de seguridad (SecOps) de la agencia debe incluir la mitigación a través de WAF, empaquetado Git y actualización inmediata vía Composer.
Script de implementación práctico para parches de seguridad inmediatos en B2B
En emergencias, los desarrolladores pueden recurrir a un script Bash con WP-CLI para instalar el parche directamente de GitHub:
#!/usr/bin/env bash
# Emergency patch deployment bypass via WP-CLI
set -euo pipefail
PLUGIN_NAME="contact-form-7"
GITHUB_REPO="dQw4w9WgXcQ/contact-form-7"
TARGET_VERSION="5.9.6"
WP_PATH="/var/www/html"
curl -sSL -o "/tmp/patch.zip" "https://github.com/${GITHUB_REPO}/archive/refs/tags/v${TARGET_VERSION}.zip"
wp plugin install "/tmp/patch.zip" --path="${WP_PATH}" --force --activate
wp cache flush --path="${WP_PATH}"
Para integrar este proceso en una canalización de GitHub Actions, cree el archivo .github/workflows/deploy-patch.yml:
name: Emergency Patch Deployment
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_PRIVATE_KEY }}
known_hosts: ${{ secrets.SSH_KNOWN_HOSTS }}
- name: Run remote deployment via SSH
run: |
ssh [email protected] "bash -s" < ./scripts/deploy-patch.sh
Este script garantiza una actualización inmediata, mitigando el riesgo de exposición durante la espera del directorio oficial y reduciendo errores humanos derivados de la prisa en situaciones de emergencia.
Guía técnica: configuración de reglas WAF para mitigar vulnerabilidades zero-day antes del parche
Cuando se descubre una vulnerabilidad crítica de día cero y es necesario esperar la retención de WordPress.org, seis horas desde el 24 de julio de 2026, aplicar reglas en el WAF es fundamental. Presentamos la configuración para Nginx y Cloudflare.
1. Reglas en Nginx
Añada el bloque siguiente a la configuración del host virtual para bloquear peticiones sospechosas al admin-ajax:
location = /wp-admin/admin-ajax.php {
if ($arg_action = "update_settings") {
return 403;
}
if ($request_body ~* "action=update_settings") {
return 403;
}
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
2. Configuración de reglas personalizadas en Cloudflare
Cree una regla en Cloudflare usando la siguiente estructura JSON:
{
"action": "block",
"expression": "(http.request.uri.path eq \"/wp-admin/admin-ajax.php\" and (http.request.uri.query contains \"action=update_settings\" or http.request.body.raw contains \"action=update_settings\"))",
"description": "Emergency block for vulnerable AJAX action update_settings before patch cooldown expires"
}
3. Análisis forense de logs
Puede buscar indicios de explotación en los logs de acceso con el comando:
grep "POST /wp-admin/admin-ajax.php" /var/log/nginx/access.log | grep -E "action=update_settings|update_settings"
Estas acciones garantizan que el sitio permanece protegido contra amenazas inmediatas hasta que el parche de seguridad pueda aplicarse oficialmente.
Caso de estudio: Respuesta a incidentes zero-day en una tienda WooCommerce de alto volumen
Para ilustrar lo que costaba el retraso de 24 horas mientras estuvo vigente, analizamos un incidente de seguridad gestionado por nuestro equipo en junio de 2026, semanas antes del recorte a seis horas. El cliente, una gran plataforma de comercio electrónico de moda, utiliza WooCommerce y un plugin de envíos. A las 14:00, se detectó una vulnerabilidad crítica de SQL Injection en el plugin de envíos, lo que permitía la extracción no autorizada de la base de datos de usuarios.
Para una tienda de alto volumen, mantener el sitio vulnerable u offline se traduce en pérdidas elevadas y un daño reputacional severo. Debido al cooldown vigente entonces en WordPress.org, la versión segura 4.2.1 no estaba accesible en el panel, la actualización solo estaría disponible 24 horas después en el directorio oficial.
Nuestro procedimiento de mitigación paso a paso:
- Análisis del código del parche: Nuestro equipo SecOps accedió al GitHub del desarrollador y validó la diferencia de código entre las versiones 4.2.0 y 4.2.1, comprobando la seguridad de los cambios.
- Reglas WAF temporales: En pocos minutos, activamos una regla en Cloudflare para bloquear todas las peticiones POST dirigidas al endpoint vulnerable del plugin, deteniendo los intentos de explotación inmediatos.
- Instalación vía Composer VCS: Modificamos el archivo
composer.jsonpara apuntar directamente a la etiqueta de la versión 4.2.1 en GitHub, evitando la demora del directorio. - Pruebas automáticas en staging: El sistema de CI/CD aplicó el parche en el entorno de pruebas y validó el flujo de checkout con scripts de prueba automatizados.
- Lanzamiento en producción: Aún dentro de la primera hora desde el inicio del proceso, la versión corregida estaba activa en el servidor de producción.
Al utilizar flujos basados en Composer VCS y WAF, redujimos la ventana de riesgo de un día entero a una fracción de hora. El proceso estándar de WordPress habría dejado la tienda expuesta a ataques automatizados durante 24 horas. El mismo incidente hoy costaría seis horas en el canal por defecto, que es mejor aritmética y la misma decisión: un pipeline desacoplado gana a las dos cifras. Este caso práctico subraya la necesidad de que las agencias gestionen de forma independiente los paquetes en entornos empresariales.
Opinión de los expertos y estrategia B2B: Actualizaciones automáticas vs. manuales de plugins
El retraso, de 24 horas cuando se introdujo y de seis desde julio de 2026, plantea preguntas sobre la estrategia global de actualizaciones en sitios corporativos. Aunque las actualizaciones automáticas benefician a millones de blogs estándar, en B2B y comercio electrónico representan un riesgo operacional considerable, ya que pueden romper integraciones críticas con ERPs o CRMs. La estabilidad de la pasarela de pagos y del flujo de envío de paquetes tiene prioridad.
Steve Burge de PublishPress destaca el aspecto positivo del cooldown: los escáneres detectaron fallos en sus plugins antes de la distribución general. Sin embargo, en entornos de producción, esto no elimina la necesidad de pruebas de regresión antes de la aplicación del código en los servidores de producción.
Estrategia de seguridad B2B para agencias:
- Desactivación de auto-updates: Desactivar todas las actualizaciones automáticas en producción en el archivo
wp-config.php:define('WP_AUTO_UPDATE_CORE', false); define('AUTOMATIC_UPDATER_DISABLED', true); - Auditorías de integridad de archivos: Valide la integridad de los archivos del núcleo y de los plugins vía WP-CLI regularmente:
wp core verify-checksums wp plugin verify-checksums --all - Implementación de CSP: Configure cabeceras de Content Security Policy (CSP) restringidas en el servidor para bloquear scripts maliciosos inyectados y detener el robo de información.
Seguir estas directrices garantiza que la agencia mantiene el control absoluto y mitiga las vulnerabilidades durante el tiempo de espera de WordPress.org.
Lista de verificación: Cómo las agencias B2B deben reaccionar a los cambios
La adopción de las siguientes medidas de seguridad minimizará el riesgo asociado al nuevo mecanismo:
- Auditoría de la cadena de suministro: Identifique los plugins críticos para el negocio y aquellos que tuvieron vulnerabilidades en el pasado.
- Migración a Composer: Gestione los plugins importantes a través de Composer y repositorios VCS (como GitHub, GitLab).
- Uso de WP-CLI para correcciones inmediatas: Si se expone una vulnerabilidad, instale el ZIP directamente vía WP-CLI:
wp plugin install https://github.com/vendor/plugin/archive/refs/tags/v1.0.1.zip --force - Monitoreo de registros de cambios: Siga servicios como WPScan o Patchstack para la detección temprana de vulnerabilidades.
- Uso de entorno de pruebas: Pruebe siempre las instalaciones manuales en staging antes de aplicarlas en el sitio de producción para evitar caídas de servicio.
Resumen
El retraso de las actualizaciones siempre fue un compromiso entre seguridad y funcionalidad, y el equipo de plugins acaba de revisar ese precio: el 24 de julio de 2026 las 24 horas pasaron a seis, con un camino anunciado para suprimir la espera en las versiones que la revisión de Gandalf apruebe sin objeciones. La crítica recogida en este texto cumplió su función, y la mayor parte del coste que describía ha desaparecido.
Lo que sobrevive al recorte es el flujo de trabajo. Seis horas de retención sobre un diff público siguen entregando el primer movimiento a quien lea ese diff más rápido, y un sitio B2B con un fallo CVSS 9.0+ en un plugin de envíos no debería estar en ninguna cola. Composer con fuentes VCS, verificación de sumas de comprobación y reglas de WAF como parche temporal siguen siendo el estándar de las agencias WordPress profesionales, sea cual sea la cifra que ocupe este lugar la próxima vez.






