wp_options también puede ser una superficie de persistencia: las opciones autoload están disponibles en muchas peticiones y pueden contener JavaScript, URLs remotas, tokens o configuración alterada que un plugin comprometido utiliza para inyectar contenido.
Conserva el valor e identifica quién lo lee
Antes de editar, guarda nombre de la opción, tamaño, valor, flag de autoload y una copia de la fila. Después busca en el código dónde se consulta exactamente ese nombre. Una opción extraña es una pista; el riesgo real depende de cómo la consume el código.
Los datos codificados o serializados necesitan contexto
- Compara la fecha aproximada de creación o cambio con el incidente.
- Revisa transients, site options y tablas multisite cuando corresponda.
- No asumas que Base64 o datos serializados son maliciosos por sí solos.
- Identifica la función que escribe o restaura el valor.
Elimina primero el escritor y después el valor
Si borras la opción pero sigue activo el código que la recrea, la limpieza será temporal. Corrige el plugin, loader o tarea programada que la escribe y solo después actualiza el dato con herramientas compatibles con WordPress.
¿Script inyectado o configuración de control remoto?
Un script inyectado suele ser renderizado por código comprometido; una configuración de control remoto puede guardar un endpoint o token que otro componente consulta. Seguir las lecturas del nombre de opción permite separar ambos casos.
Relaciona la base de datos con otras vías de persistencia
Comprueba código cargado desde mu-plugins y tareas cron que pueden recrear valores. Una opción no es una incidencia aislada si alguno de esos mecanismos continúa activo.
No hagas reemplazos SQL amplios sobre datos serializados
Un cambio de longitud puede corromper configuración legítima. Utiliza APIs o herramientas que entiendan la serialización y trabaja siempre con una copia de seguridad probada.
Verificación después de la limpieza
La incidencia queda cerrada cuando desaparecen tanto el valor malicioso como el código que lo escribe o consume, el payload no sale en páginas, feeds o REST después de vaciar cachés y la opción no reaparece tras cron o uso normal.