WordPress modifica legítimamente cachés, uploads, logs y archivos de actualización. Un sistema útil prioriza cambios ejecutables o de configuración y los relaciona con un despliegue aprobado; avisar por cada miniatura solo produce fatiga.
Crea una referencia del release limpio y define expectativas específicas por ruta.
Establece una referencia limpia
Registra hashes y versiones del núcleo, plugins, temas, mu-plugins, drop-ins y estructura de configuración después de aceptar la recuperación.
Guárdala fuera de la cuenta web con acceso restringido. Excluye valores secretos, pero conserva ruta, propietario, permisos y modo. Documenta por separado directorios generados o escribibles.
Prioriza las rutas ejecutables
Investiga con urgencia PHP nuevo o modificado en núcleo, plugins, temas, mu-plugins y archivos de arranque, especialmente dentro de uploads, cachés y copias donde no debería ejecutarse.
También son prioritarios wp-config.php, .htaccess, PHP auto-prepend, scripts cron y hooks de despliegue. No abras un archivo sospechoso mediante el navegador.
Interpreta los directorios escribibles
Imágenes, miniaturas, cachés y temporales cambian con frecuencia. Alerta sobre extensiones ejecutables, reglas del servidor, dobles extensiones inusuales y permisos, no sobre todo el contenido.
Los uploads pueden contener datos sensibles; no los copies al sistema de avisos. Valida tipos de archivo, impide ejecución cuando sea compatible y regenera la caché en lugar de confiar en ella.
Relaciona con cambios aprobados
Compara hora y ruta con el ID del despliegue, actualización de WordPress, acción administrativa, restauración y registros de SFTP, SSH o gestor del hosting.
Una actualización válida tiene fuente, actor y conjunto de archivos esperados. Un nombre conocido puede usar una credencial robada, por lo que debes confirmar al propietario. La ausencia de logs es incertidumbre, no aprobación.
Compara con fuentes fiables
Verifica checksums oficiales del núcleo y el paquete exacto del proveedor para plugins y temas. Compara el código propio con el repositorio.
Un hash intacto no demuestra que la versión sea segura: revisa vulnerabilidades. Un archivo personalizado cambiado tampoco es malware hasta aclarar su autoría. Conserva una copia sospechosa antes de sustituirla.
Vigila la reaparición
Si un archivo vuelve tras eliminarlo, registra hash y hora exactos e inspecciona cron de servidor, WordPress, Action Scheduler, mu-plugins, cargadores en base, despliegues y accesos.
No lo borres repetidamente destruyendo fechas útiles. Contén la web si está activo y revisa sitios hermanos bajo el mismo usuario de sistema.
Monitoriza el monitor
Protege referencia, configuración del agente y destino externo fuera de la misma cuenta. Alerta si cesa la recopilación, se amplían exclusiones o se reemplaza la referencia sin permiso.
Exige un revisor identificado para aceptar una nueva base después de actualizaciones; de otro modo un cambio malicioso puede convertirse en normal. Prueba zona horaria y entrega de logs.
Ajusta severidad y ruido
Reserva criticidad máxima para configuración y rutas ejecutables privilegiadas, media para paquetes no planificados y baja o agrupada para archivos generados.
Suprime solo patrones deterministas, con propietario y fecha de revisión. No excluyas todo wp-content porque una caché genere ruido. Envía alertas por un canal independiente con acuse.
Revisa copias y fuentes de despliegue
Un archivo puede volver desde un ZIP de despliegue, una restauración o un artefacto compartido aparentemente limpio. Busca el mismo hash y ruta en repositorios, releases y copias.
Elimina código malicioso o abandonado de la fuente autoritativa, no solo de producción. Mantén separada la evidencia y verifica de forma aislada el siguiente despliegue programado.
Responde con evidencia
Captura ruta, hash, propietario, permisos, hora, diferencia y logs de origen. Si es malicioso, preserva instantáneas, contiene, cierra el vector y rota credenciales expuestas.
Si es legítimo, enlázalo al cambio aprobado y actualiza la referencia después de probar. Nunca autorices un archivo inexplicado para silenciar avisos. Excluye secretos y clientes de los tickets.
Verifica el sistema de alertas
Realiza un cambio seguro en staging o una prueba controlada y confirma detección, actor y escalado. Comprueba que continúa tras rotar cachés o logs y que WordPress no puede desactivarlo silenciosamente.
Solicita vigilancia recurrente cuando el código propio y varias webs causen fatiga. Comparte rutas, hashes y eventos censurados, nunca malware, credenciales o archivos de clientes públicamente.