Desactivando XML-RPC en WordPress

PUNTOS CLAVE

  • XML-RPC permite a aplicaciones externas interactuar con WordPress, pero es un vector de ataque común.
  • Los atacantes usan xmlrpc.php para ataques de fuerza bruta masivos y amplificación de DDoS.
  • Desactivarlo protege el servidor de miles de peticiones automatizadas de bots.
  • La REST API moderna sustituye la mayoría de funciones necesarias de XML-RPC de forma segura.

La seguridad proactiva es fundamental en cualquier infraestructura basada en WordPress. El archivo xmlrpc.php ha sido, históricamente, una de las mayores vulnerabilidades de diseño debido a su capacidad para procesar múltiples comandos en una sola petición HTTP. Desactivar este protocolo es una de las primeras medidas de «hardening» que cualquier administrador de sistemas debe implementar.

#El Peligro del «System Multicall»

A diferencia del formulario de login estándar, que procesa un intento de contraseña por vez, XML-RPC permite la función system.multicall. Esto significa que un atacante puede intentar cientos de combinaciones de usuario y contraseña en una única conexión, evadiendo muchos sistemas básicos de limitación de tasa (rate limiting) y sobrecargando el procesador del servidor.


TÉRMINO RELACIONADO

DDoS Amplification: Técnica de ataque donde se utiliza un servidor intermedio para enviar una gran cantidad de tráfico a una víctima, multiplicando el esfuerzo del atacante original.

#Limpieza de Cabeceras

No basta con devolver un error cuando alguien accede a XML-RPC; un «hardening» profesional implica eliminar también la cabecera HTTP X-Pingback y los enlaces rsd_link que WordPress inyecta en el HTML. Estas etiquetas actúan como faros que indican a los bots que el servicio XML-RPC está, al menos, presente en el sistema.

#Patrones de Aislamiento y Resolución

La implementación estándar consiste en filtrar el acceso mediante hooks de WordPress y, simultáneamente, limpiar la cabecera de la respuesta para ocultar cualquier rastro de la funcionalidad Pingback. Esto garantiza que el sitio no sea detectado por escáneres automáticos de vulnerabilidades.


NOTA DE SEGURIDAD

Si utilizas aplicaciones como Jetpack o la App oficial de WordPress para móviles, desactivar XML-RPC impedirá su funcionamiento. Evalúa tus necesidades antes de aplicar este bloqueo total.

Veamos el caso de Roberto, un administrador que notaba picos de CPU inusuales en su servidor Linux cada madrugada. Tras auditar los logs de acceso de Nginx, descubrió miles de peticiones POST dirigidas a xmlrpc.php desde IPs internacionales.

Aplicando una metodología de endurecimiento, Roberto integró el siguiente bloque en su módulo de seguridad:

text
// Archivo: inc/security.php

add_filter('xmlrpc_enabled', '__return_false');
add_filter('wp_headers', function($headers) {
    unset($headers['X-Pingback']);
    return $headers;
});
remove_action('wp_head', 'rsd_link');

Inmediatamente después de aplicar este cambio, los ataques de fuerza bruta cesaron y el consumo de recursos del servidor volvió a niveles normales, aumentando la estabilidad y longevidad de su hosting.

Recuerda que si pones esto en el archivo arriba mencionado debes llamarlo desde functions.php para que sea efectivo.

text
require get_template_directory() . '/inc/security.php';

#Cuándo usar / Cuándo NO usar

Situación Acción
Solo editas contenido vía Web (wp-admin) Altamente recomendado deshabilitar por completo.
Uso de App de WordPress o Jetpack No deshabilitar, o habilitar solo para IPs específicas.
Arquitecturas Headless con REST API Recomendado, ya que XML-RPC es redundante con la REST API activa.

#Resumen de Beneficios de Seguridad

Mecanismo Mejora Obtenida
Bloqueo de XML-RPC Elimina el 100% de ataques Multicall de contraseñas.
Eliminación de X-Pingback Evita que el sitio sea usado como repetidor DDoS.
Ocultación de RSD Link Dificulta el reconocimiento automático de la versión y servicios.