XML-RPC é um daqueles recursos do WordPress dos quais a maioria dos proprietários de sites nunca ouviu falar — mas ele tem rodado silenciosamente em segundo plano em quase todas as instalações WordPress por mais de uma década. O arquivo xmlrpc.php fica no diretório raiz e aceita requisições do mundo externo. Originalmente, era a única forma de gerenciar um blog WordPress remotamente. Hoje, é principalmente uma vulnerabilidade de segurança que os atacantes adoram explorar.
O Que o XML-RPC Realmente Faz
XML-RPC significa Extensible Markup Language – Remote Procedure Call. Em termos simples, é uma forma de software externo conversar com seu site WordPress por HTTP. A aplicação externa envia uma requisição XML especialmente formatada para seusite.com/xmlrpc.php, o WordPress a processa e retorna uma resposta XML.
Através dessa interface, clientes remotos podem fazer coisas como:
- Criar, editar e excluir posts e páginas
- Fazer upload de imagens e outras mídias
- Moderar e gerenciar comentários
- Obter configurações do site e metadados
- Enviar e receber pingbacks entre blogs
Pense nisso como uma API primitiva — funcional, mas projetada em uma era anterior à popularização das REST APIs.
Um Pouco de História
Em meados dos anos 2000, se você queria escrever um post de blog pelo telefone ou por um aplicativo de desktop como o Windows Live Writer, o XML-RPC era sua única opção. O WordPress adotou a MetaWeblog API e a Blogger API, ambas construídas sobre XML-RPC, para permitir que essas ferramentas se comunicassem com seu site.
Então, em 2016, o WordPress 4.7 foi lançado com a REST API integrada. De repente, havia uma maneira moderna e padronizada de interagir com o WordPress — uma que usa JSON em vez de XML, suporta autenticação adequada e é muito mais fácil de trabalhar. A partir desse ponto, o XML-RPC tornou-se uma relíquia. A maioria dos plugins, aplicativos e integrações modernas usa exclusivamente a REST API.
Por Que o XML-RPC É um Problema de Segurança
O arquivo é acessível publicamente por padrão em todos os sites WordPress. Isso por si só já não é bom, mas os problemas reais vão mais fundo:
- Amplificação de força bruta — O XML-RPC tem um método chamado
system.multicallque permite agrupar centenas de requisições em uma só. Um atacante pode testar 500 combinações de usuário-senha em uma única requisição HTTP. Muitos plugins de proteção de login nem sequer veem isso acontecendo, porque monitoram apenas owp-login.php. - Abuso de pingback — O recurso de pingback pode ser usado como arma para ataques DDoS. Um atacante diz a milhares de sites WordPress para fazer "ping" em um servidor alvo, transformando efetivamente sites inocentes em uma botnet. Isso aconteceu repetidamente em ataques reais.
- Enumeração de usuários — Mesmo sem credenciais válidas, as respostas do XML-RPC podem confirmar se um nome de usuário existe, dando aos atacantes metade das informações de que precisam.
- Superfície de ataque desnecessária — Cada endpoint acessível publicamente que aceita autenticação é um ponto de entrada potencial. Se você não está usando o XML-RPC, mantê-lo aberto é como deixar uma porta destrancada por onde ninguém nunca passa.
Quem Realmente Ainda Precisa Dele?
A resposta honesta: quase ninguém. Existem alguns casos extremos:
- Jetpack costumava depender muito do XML-RPC, mas vem migrando para a REST API. Versões mais recentes do Jetpack funcionam sem ele para a maioria dos recursos.
- Aplicativos móveis muito antigos — O aplicativo móvel atual do WordPress usa a REST API. Apenas versões desatualizadas anteriores a 2016 ainda precisam do XML-RPC.
- Ferramentas legadas de terceiros — Algumas receitas antigas do IFTTT ou plataformas de publicação ainda podem usá-lo, mas existem alternativas para todas elas.
Se nenhum destes se aplica a você, não há boa razão para manter o XML-RPC habilitado.
Como Desabilitar o XML-RPC
O método mais rápido é um filtro no functions.php do seu tema ou em um plugin personalizado:
add_filter('xmlrpc_enabled', '__return_false');Isto desabilita os métodos XML-RPC, mas ainda retorna uma resposta do arquivo. Para bloquear o acesso totalmente no nível do servidor, adicione isto ao seu .htaccess:
<Files xmlrpc.php>
Require all denied
</Files>Ou se você estiver no Nginx:
location = /xmlrpc.php {
deny all;
return 403;
}Muitos plugins de segurança (Wordfence, iThemes Security, Sucuri) também oferecem uma opção para desabilitar o XML-RPC com um clique.
Como o InspectWP Ajuda
O InspectWP verifica se o seu endpoint xmlrpc.php é acessível externamente. Se ele responder a requisições, o relatório o sinaliza e explica por que você deve considerar desabilitá-lo — especialmente se o seu site não tiver motivo legítimo para mantê-lo ativo.