Evaluación inicial sin contraseñas Presupuesto antes de intervenir Especialista responsable de principio a fin

Files Plugins Themes

Malware oculto en el functions.php de un tema WordPress

Limpia código malicioso de functions.php conservando personalizaciones, comparando fuentes fiables y localizando la reinfección.

functions.php se ejecuta en muchas peticiones, por lo que sirve para redirecciones, usuarios ocultos e inyección de scripts. También contiene configuración legítima y personalizaciones. Reemplazarlo sin revisar puede borrar funciones importantes y dejar intacto el acceso del atacante.

Conserva, compara y aísla el bloque sospechoso antes de reconstruir el tema fiable.

Registra el contexto del tema

Anota tema padre e hijo activos, versiones, fuente y ediciones directas conocidas. Guarda directorios completos y base antes de cambiar código.

Calcula el hash del archivo sospechoso y conserva su fecha. Revisa si el editor, SFTP o historial de despliegue explican el cambio.

No abras el archivo mediante una URL pública ni ejecutes fragmentos copiados.

Compara con un paquete fiable

Obtén la versión exacta del tema padre desde su fuente oficial y compara sin conexión:

diff -ruN clean-theme/ installed-theme-copy/

Revisa cada diferencia. Un tema hijo debe diferir; un tema comercial puede incluir archivos generados o licenciados ausentes de una muestra pública.

Clasifica las diferencias por origen: paquete del proveedor, tema hijo, personalización aprobada o cambio inexplicado. Relaciona cada personalización con una función visible y un propietario. Un bloque sin responsable, especialmente si apareció fuera de un despliegue, debe permanecer aislado hasta entenderse.

No sustituyas por otra versión mayor durante el análisis: los cambios de compatibilidad ocultarían el alcance.

Identifica cómo se invoca el código

Examina hooks y condiciones. ¿Se ejecuta siempre, solo para desconectados, con un referrer o dentro del administrador?

Rastrea dominios, escrituras, cambios en base e includes dinámicos sin ejecutarlos. Busca cadenas distintivas en la copia en cuarentena.

El texto codificado no es el hallazgo completo. Determina mediante análisis estático aislado qué haría su lógica.

Separa las personalizaciones legítimas

Lista tipos de contenido, hooks de WooCommerce, shortcodes, enqueues e integraciones. Tras revisar, mueve el código propio a un tema hijo o pequeño plugin del sitio cuando corresponda.

No pegues el archivo antiguo entero en un tema limpio: transferirías el bloque malicioso y una mala práctica de mantenimiento.

Prueba cada personalización con la versión actual de WordPress y PHP.

Comprueba dependencias antes de moverla: prioridad del hook, carga de traducciones, clases del tema y plantillas de WooCommerce. Una migración aparentemente correcta puede ejecutarse dos veces si el código continúa tanto en el tema hijo como en el nuevo plugin.

Reconstruye el tema desde fuentes fiables

En staging o mantenimiento, elimina el directorio comprometido e instala el paquete verificado. Restaura únicamente archivos del tema hijo revisados.

Usa una versión parcheada y mantenida tras probar compatibilidad. Un tema abandonado e infectado no es una solución duradera.

Vacía cachés de página y opcode mediante controles admitidos. Si un worker mantiene bytecode antiguo, la salida puede seguir infectada aunque el disco esté limpio. Sigue el procedimiento del hosting; no reinicies servidores sin autorización.

Averigua cómo se modificó

Revisa administradores, contraseñas de aplicación, editor del tema, SFTP, panel y claves de despliegue. Busca plugins vulnerables y webs vecinas.

Investiga cron o puertas traseras que reescriban functions.php y monitoriza durante el intervalo anterior de recurrencia.

Desactivar el editor reduce una ruta, pero no protege credenciales SFTP o de hosting robadas.

Verifica frontal y negocio

Inspecciona HTML público buscando el script o redirección anterior. Prueba usuarios desconectados, referrer, navegación, formularios, idiomas y flujos sandbox de WooCommerce autorizados.

Confirma que el hash permanece estable después de cron y regeneración de caché.

Realiza una prueba con el tema limpio en staging antes del cambio final y registra errores PHP y JavaScript. Después del despliegue, compara el hash servido en todos los nodos; un servidor atrasado o artefacto antiguo puede volver a publicar la copia infectada.

Cuándo es más segura una limpieza profesional

Solicita ayuda si hay mucha personalización sin documentar, el archivo vuelve a cambiar o toca checkout. Envía tema, versión y ubicación sospechosa como texto, nunca credenciales o ejecutables.

La reparación debe conservar el comportamiento legítimo, reconstruir la confianza en el tema y cerrar la ruta que lo modificó.

ANTES DE ENVIAR LA SOLICITUD

Preguntas frecuentes.

¿Pedís contraseñas en el formulario?+

No. El formulario público nunca solicita accesos. Los datos seguros se piden únicamente después de aprobar el alcance y el presupuesto.

¿Quién revisa la incidencia?+

La solicitud llega a Jordi Ensenyat, fundador de Code Barcelona y especialista WordPress con más de 15 años de experiencia.

¿Se cambia algo antes del presupuesto?+

No. Primero se revisan los síntomas visibles y se define el alcance. La intervención empieza tras la aprobación y con una vía de vuelta preparada.

¿Trabajáis con webs en inglés y fuera de España?+

Sí. WP Repair atiende incidencias WordPress y WooCommerce en inglés y español, con servicio remoto.

Evaluar mi incidencia