Tu web tiene más puertas que el formulario de acceso. El panel desde el que la agencia actualiza plugins, la app de la tienda con acceso a los pedidos, el token de Cloudflare en un script que purga la caché, la clave de despliegue del servidor: todos entran sin la contraseña de administrador. En octubre de 2026 dos incidentes demostraron lo que pasa cuando una de esas claves acaba en malas manos. Esta guía te sirve tengas WordPress, WooCommerce, Shopify o código propio, y explica cómo hacer el inventario, qué revocar, cuándo rotar y qué pedir por escrito a proveedores y agencias.
Qué pasó con UpdraftCentral en octubre de 2026
En su aviso de incidente, TeamUpdraft explica que detectó un acceso no autorizado a teamupdraft.com el fin de semana del 17 y 18 de octubre y cree que se leyó su base de datos de clientes. Contenía nombres, correos, contraseñas cifradas con hash, ajustes de verificación en dos pasos y las claves de conexión de UpdraftCentral, UpdraftVault y UpdraftClone. Los datos de tarjeta no se guardaban. El atacante usó la conexión con las webs de los clientes para crear cuentas de administrador e instalar plugins maliciosos, y TeamUpdraft avisó después de un patrón de cuentas inesperadas con el rol de editor. UpdraftPlus 1.26.13 (gratuito) y 2.26.13 (Premium), publicados el 19 de octubre, desconectan todas las conexiones de UpdraftCentral creadas antes de las 13:07 (hora británica) del 18 de octubre.
El análisis de Patchstack explica por qué fallaron las defensas habituales. Los comandos iban firmados con claves auténticas del panel, así que superaban todas las comprobaciones del plugin. Una web conectada ejecuta cualquier comando firmado con los permisos del usuario que creó la conexión, y nadie confirma los comandos uno a uno. Muchos propietarios nunca lo eligieron: al conectar una cuenta de TeamUpdraft.com, la casilla que añadía la web a UpdraftCentral venía marcada por defecto. Las claves tampoco caducaban, y Patchstack vio claves de noviembre de 2025 que seguían funcionando en octubre de 2026. Las cuentas de puerta trasera aparecían como editores, pero tenían las capacidades manage_options e install_plugins, de modo que revisar la lista de administradores no las mostraba.
Días antes, Rank Math informó de que la versión PRO 3.0.123 descargada entre las 20:02 UTC del 15 de octubre y las 07:12 UTC del 16 de octubre contenía malware. La 3.0.124 es la versión limpia y la versión gratuita de WordPress.org no se vio afectada. Si activaste la versión infectada, Rank Math te pide dar por expuestos todos los secretos de la web y cambiar las contraseñas de WordPress, las credenciales de la base de datos, las claves y salts de wp-config.php, las claves de las pasarelas de pago, las credenciales SMTP, el resto de claves API y los accesos al hosting, FTP y SSH, además de revisar la verificación en dos pasos de los administradores. El contexto general lo cubrimos en el artículo sobre ataques a la cadena de suministro en WordPress en 2026.
Lista de control de accesos a la web y la tienda
| Tipo de servicio | Dónde está la clave | Cómo revocarla | Cuándo rotarla |
|---|---|---|---|
| Panel de gestión (UpdraftCentral, ManageWP, MainWP, Jetpack) | Ajustes del plugin de conexión en la web y panel del proveedor o de la agencia | Borrar primero la clave en la web y después la web del panel | Incidente en el proveedor, cambio de agencia, panel sin uso |
| App de Shopify | Permisos de la app en los ajustes de la tienda | Exportar datos y desinstalar la app | Acceso sin usar, incidente en el proveedor, app innecesaria |
| Clave REST API de WooCommerce | Ajustes de WooCommerce, asociada a un usuario de WordPress | Enlace de revocar junto a la clave | Sale el usuario asociado, cambia la integración |
| Contraseña de aplicación de WordPress | Perfil del usuario, guardada con hash | Revocar en el perfil o con WP-CLI | Sin uso desde la última auditoría, sale la persona, intrusión |
| Token de CDN o DNS (Cloudflare) | Cuenta de Cloudflare y la herramienta que llama a la API | Borrar el token en el perfil de Cloudflare | Token visto en logs o repositorio, sale la persona o la herramienta |
| Clave de despliegue (GitHub) | Clave privada en el servidor, pública en los ajustes del repositorio | Borrar en la sección de claves de despliegue | Servidor reconstruido o comprometido, cambio de agencia |
| Clave de pago (Stripe, Redsys, Bizum) | Ajustes del plugin de la tienda o variables de entorno | Rotar con fecha de caducidad para la clave antigua | Intrusión, fin de la colaboración con el desarrollador |
| Clave de correo o SMTP | Plugin SMTP, wp-config.php, variables de entorno | Borrar la clave en el proveedor de correo | Intrusión, cambio de plugin o proveedor |
| Credenciales del almacenamiento de copias | Ajustes del plugin de copias y permisos en el proveedor de almacenamiento | Revocar en el proveedor y volver a autorizar | Incidente en el proveedor, intrusión |
Cómo saber quién tiene acceso a mi web
Las claves van en dos direcciones. Tu web guarda claves de sistemas ajenos (pagos, correo, copias de seguridad) y los sistemas ajenos guardan claves de tu web (paneles, apps, despliegues). La lista de Rank Math corresponde a la primera dirección y el caso UpdraftCentral a la segunda.
El inventario sale de tres fuentes: la propia web (usuarios, plugins o apps, ajustes), las cuentas de la empresa (facturas, gestor de contraseñas, el buzón donde llegan las confirmaciones de alta) y la infraestructura (DNS, CDN, panel del hosting, repositorio de código). Para cada entrada apunta el servicio, qué puede hacer, quién creó la clave, dónde está la clave en los dos extremos, cuándo se usó por última vez y quién responde de ella en la empresa. Una entrada sin responsable es la primera candidata a desaparecer.
Paneles de gestión de varias webs
UpdraftCentral, ManageWP, MainWP y Jetpack se conectan a la web mediante un componente instalado en WordPress: UpdraftPlus incluye el cliente de UpdraftCentral, ManageWP usa el plugin ManageWP Worker y MainWP el plugin MainWP Child. La otra mitad de las credenciales está en los servidores del proveedor o en un servidor de la agencia. Revisa la lista de plugins, incluida la pestaña de plugins imprescindibles (must-use), y pregunta a tu agencia qué paneles utiliza. La lección de Patchstack vale para cualquier producto de este tipo: quitar la web del panel no basta, porque la clave que cuenta está guardada en la web.
Apps de la tienda e integraciones con acceso a la API
En Shopify, abre los ajustes, la sección de apps, y entra en cada una. Según la documentación de Shopify, la página de la app muestra las áreas de la tienda que puede ver o editar y la fecha de su última actividad en cada una. Los permisos que no ha usado en los últimos 30 días aparecen en un apartado propio de acceso sin usar. El permiso read_all_orders amplía el acceso más allá de la ventana habitual de pedidos de los últimos 60 días (permisos de acceso), así que pregunta para qué lo necesita la app. Antes de desinstalar, exporta lo que necesites, porque algunas apps guardan datos que después no se pueden recuperar.
En WooCommerce las claves están en los ajustes de WooCommerce, en avanzado, REST API. Cada clave está asociada a un usuario de WordPress y tiene permiso de lectura, escritura o ambos, y el secreto solo se muestra una vez (documentación de WooCommerce). Comprueba a quién pertenece cada clave y si esa persona sigue trabajando contigo. Lo mismo vale para las claves de Redsys o Bizum que hayas metido en los ajustes del plugin de pagos.
Contraseñas de aplicación y cuentas técnicas
Las contraseñas de aplicación permiten que una herramienta entre en la REST API con Basic Auth. Se crean y se revocan en la pantalla de edición del usuario. El núcleo de WordPress no limita su alcance: la guía de integración menciona esa limitación como desarrollo futuro, así que una contraseña de aplicación puede hacer todo lo que puede su usuario. WordPress registra el último uso (con precisión de un día) y la última dirección IP. Con WP-CLI:
wp user list --role=administrator
wp user list --role=editor
wp user application-password list 1 --fields=name,created,last_used,last_ipLa lista de editores entra en la revisión tras el caso UpdraftCentral, porque las cuentas de puerta trasera tenían justo ese rol.
Tokens de CDN y DNS
Un token con permiso para editar el DNS basta para desviar tu dominio o tus registros de correo. En Cloudflare, un token API se limita a los permisos y zonas que elijas y se puede restringir además por dirección IP y por tiempo de vida (crear un token). La antigua Global API key accede a todos los recursos del usuario con sus permisos completos, y Cloudflare la desaconseja en configuraciones nuevas (Global API key). Si un plugin, un proceso de CI o un script de purga de caché todavía la usa, cámbiala por un token limitado a una zona.
Claves de despliegue en GitHub
Una clave de despliegue (deploy key) de GitHub es una clave SSH con acceso a un único repositorio. Por defecto solo lee, y con permiso de escritura puede lo mismo que un miembro de la organización con acceso de administrador. Según la documentación de GitHub, estas claves no caducan, normalmente no tienen frase de contraseña y siguen activas cuando la persona que las añadió sale del repositorio. Revísalas en los ajustes del repositorio, en la sección de claves de despliegue: borra las que no reconozcas y aprueba las válidas.
Claves de pago, correo y copias de seguridad
Stripe te deja crear claves restringidas con los permisos que elijas, y al rotar una clave en el panel decides cuándo caduca la antigua: en el momento o tras un plazo que da margen a la integración para cambiar (claves API de Stripe). La contraseña SMTP o la clave API del servicio de correo está en un plugin o en wp-config.php; dónde exactamente, lo explicamos en la guía de SMTP.
Una copia de seguridad contiene la base de datos completa, con datos de clientes y todas las claves guardadas en los ajustes. TeamUpdraft desconectó todas las webs de UpdraftVault y emitió credenciales nuevas, y recomendó a las webs a las que se entró por UpdraftCentral volver a autorizar el almacenamiento remoto (Google Drive, Dropbox, Amazon S3) y cambiar sus claves de acceso. Comprueba quién puede leer el almacenamiento de tus copias y si la herramienta de copias puede borrar versiones antiguas.
Cómo revocar una clave API sin tumbar la web
En una web sana, sigue este orden: averigua qué usa la clave (descripción, último uso, registros de la herramienta), crea una sustituta con permisos más estrechos, ponla en la herramienta y comprueba que funciona, y solo entonces revoca la antigua. Vigila durante unos días los pedidos fallidos, los correos que no llegan y los despliegues rotos. El plazo de caducidad de Stripe existe justo para este cambio.
En una web comprometida, el orden se invierte: revoca primero y vuelve a conectar después las integraciones que se paren. Las instrucciones de TeamUpdraft para usuarios de UpdraftCentral siguen esa lógica: entrar directamente en cada web, actualizar, borrar la clave de conexión, eliminar cuentas y plugins desconocidos, cambiar las contraseñas de administrador y solo al final volver a conectar. Si la clave tiene dos extremos, revócala en los dos. Una clave borrada solo en el panel del proveedor puede seguir siendo aceptada por la web, y una clave borrada solo en la web puede seguir en la base de datos del proveedor.
Cuándo rotar las claves API
Rota cuando ocurre algo, porque un calendario por sí solo no habría ayudado a nadie en octubre de 2026. Conviene dejar por escrito estos disparadores:
- un incidente de seguridad en un proveedor que tiene una clave de tu web o recibe una de ella,
- código malicioso que se ejecutó en la web, es decir, todo lo de la lista de Rank Math de arriba,
- la salida de un empleado, freelance o agencia con acceso,
- una clave encontrada donde no debía estar: un repositorio, un ticket de soporte, un hilo de correo, una captura de pantalla,
- la sustitución de una integración por otra herramienta.
Añade una revisión fija al año y borra todas las claves que nadie sepa explicar. Las claves sin fecha de caducidad, como las de despliegue de GitHub o las de UpdraftCentral que analizó Patchstack, siguen vigentes hasta que alguien las quita.
Qué exigir a tu agencia y a los proveedores de software
Una agencia que mantiene tu web crea claves en tu nombre. Si tiene acceso a datos de clientes, suele ser encargada del tratamiento, y el artículo 28 del RGPD te obliga a trabajar solo con encargados que ofrezcan garantías suficientes y a firmar un contrato de encargo. Estos puntos deberían figurar en él o en el alcance del mantenimiento:
- un registro de todas las claves, tokens y cuentas que crea la agencia, con finalidad y responsable, entregado cuando lo pidas y al terminar el contrato,
- claves creadas en tus propias cuentas cuando la plataforma lo permita, por ejemplo un token de Cloudflare en tu cuenta limitado a tu zona, para que revocarlo no dependa de la agencia,
- una clave por web y por herramienta, y cuentas nominativas en lugar de un usuario compartido de la agencia,
- revocación de todos los accesos en un número de días acordado tras el fin del contrato, confirmada por escrito,
- un plazo de aviso de incidentes. Según el artículo 33 del RGPD, el encargado notifica la brecha al responsable sin dilación indebida, y tú tienes 72 horas, si es posible, para notificarla a la AEPD. Pon un número concreto de horas en el contrato.
Antes de instalar algo con funciones remotas, pregunta al proveedor si la conexión remota viene activada por defecto y si sus claves caducan. En UpdraftCentral, Patchstack encontró la casilla marcada de antemano y claves sin fecha de caducidad.
Hacemos esta revisión dentro de la auditoría de seguridad WordPress y mantenemos el registro de claves al día en el mantenimiento WordPress. En tiendas WooCommerce forma parte del plan de fiabilidad de la tienda, y en tiendas Shopify revisamos los permisos de las apps como desarrollador Shopify. Para entender cómo llegan las actualizaciones de plugins a tu web y por dónde puede colarse una versión manipulada, lee sobre el retraso de actualizaciones en WordPress.org y sobre cuatro backdoors en plugins en un mes.







