A especificação XML-RPC WordPress foi desenvolvida para padronizar a comunicação entre diferentes sistemas, significando que aplicações fora do WordPress (tais como outras plataformas de blogs e clientes desktop) poderiam interagir com o WordPress.

Esta especificação faz parte do WordPress desde sua criação e fez um trabalho muito útil. Sem ela, o WordPress estaria em seu próprio silo, separado do resto da Internet.

Entretanto, o xmlrpc.php tem seus pontos negativos. Ele pode introduzir vulnerabilidades ao seu site WordPress e agora foi substituído pelo WordPress REST API, que faz um trabalho muito melhor de abrir o WordPress para outras aplicações.

Neste post, vamos explicar o que é xmlrpc.php, por que você deve desativá-lo e ajudá-lo a identificar se ele está rodando em seu site WordPress.

Pronto? Vamos mergulhar!

O que é xmlrpc.php?

XML-RPC é uma especificação que permite a comunicação entre o WordPress e outros sistemas. Ele fez isso padronizando essas comunicações, usando HTTP como mecanismo de transporte e XML como mecanismo de codificação.

XML-RPC é anterior ao WordPress: ele estava presente no software de blog b2, que foi bifurcado para criar o WordPress em 2003. O código por trás do sistema é armazenado em um arquivo chamado xmlrpc.php, no diretório raiz do site. E ainda está lá, mesmo que o XML-RPC esteja largamente desatualizado.

Nas primeiras versões do WordPress, o XML-RPC foi desativado por padrão. Mas desde a versão 3.5, ele foi habilitado por padrão. A principal razão para isto era permitir que o aplicativo móvel WordPress falasse com sua instalação do WordPress.

Se você usou o aplicativo móvel WordPress antes da versão 3.5, você pode se lembrar de ter que habilitar o XML-RPC em seu site para que o aplicativo possa postar conteúdo. Isto porque o aplicativo não estava rodando o WordPress em si; ao invés disso, era um aplicativo separado que se comunicava com seu site WordPress usando xmlrpc.php.

Mas não foi apenas para o aplicativo móvel que o XML-RPC foi usado: ele também foi usado para permitir a comunicação entre WordPress e outras plataformas de blogs, ele permitiu trackbacks e pingbacks, e alimentou o plugin Jetpack que liga um site WordPress auto-hospedado ao WordPress.com.

Mas como o REST API foi integrado ao núcleo do WordPress, o arquivo xmlrpc.php não é mais utilizado para esta comunicação. Em vez disso, a REST API é usada para se comunicar com o aplicativo móvel WordPress, com clientes desktop, com outras plataformas de blogs, com WordPress.com (para o plugin Jetpack) e com outros sistemas e serviços. A gama de sistemas com os quais a REST API pode interagir é muito maior do que a permitida pelo xmlrpc.php. Além disso, há muito mais flexibilidade.

Como o REST API substituiu o XML-RPC, você deve agora desativar o xmlrpc.php em seu site. Vamos ver por quê.

Por que você deve desativar o xmlrpc.php

A principal razão pela qual você deve desativar o xmlrpc.php em seu site WordPress é porque ele introduz vulnerabilidades de segurança e pode ser o alvo de ataques.

Agora que o XML-RPC não é mais necessário para se comunicar fora do WordPress, não há razão para mantê-lo ativo. É por isso que é sábio tornar seu site mais seguro, desativando-o.

Se o xmlrpc.php é uma obrigação de segurança e não faz mais um trabalho, por que ele não foi removido do WordPress por completo?

A razão para isto é porque uma das principais características do WordPress será sempre a retrocompatibilidade. Se você estiver gerenciando bem seu site, você saberá que manter o WordPress atualizado, assim como quaisquer plugins ou temas, é essencial.

Mas sempre haverá proprietários de websites que não estão dispostos ou não podem atualizar sua versão do WordPress. Se eles estiverem rodando uma versão anterior à REST API, ainda precisarão ter acesso ao xmlrpc.php.

Vamos analisar as vulnerabilidades específicas com mais detalhes.

Ataques DDoS via XML-RPC Pingbacks

Uma das funções que o xmlrpc.php habilitou foi o pingbacks e trackbacks. Estas são as notificações que aparecem nos comentários de seu site quando outro blog ou site faz um link para seu conteúdo.

A especificação XML-RPC foi o que tornou possível esta comunicação, mas isso foi substituído pelo REST API (como já vimos).

Se o XML-RPC estiver habilitado em seu site, um hacker pode potencialmente montar um ataque DDoS em seu site explorando o xmlrpc.php para enviar um grande número de pingbacks para seu site em um curto espaço de tempo. Isto poderia sobrecarregar seu servidor e colocar seu site fora de ação.

Ataques de força bruta via XML-RPC

Cada vez que o xmlrpc.php faz um pedido, ele envia o nome de usuário e a senha para autenticação. Isto apresenta uma significativa responsabilidade de segurança e é algo que a REST API não faz. Na verdade, a REST API usa OAuth que envia tokens para autenticação em vez de nomes de usuário ou senhas.

Como o xmlrpc.php envia informações de autenticação com cada pedido, os hackers poderiam usá-las para tentar acessar seu site. Um ataque de força bruta como este poderia permitir que eles inserissem conteúdo, apagassem código ou danificassem seu banco de dados.

Se um atacante enviar pedidos suficientes ao seu site, cada um com um par de nome de usuário e senha diferentes, há uma chance de que eles possam eventualmente acertar no correto, dando-lhes acesso ao seu site.

É por isso que, se você estiver executando uma versão atualizada do WordPress, que usa a REST API para se comunicar com sistemas externos, você deve desativar o xmlrpc.php. Isso não é necessário e pode estar tornando seu site vulnerável.

Info

Embora a OAuth não seja apoiada nativamente pela Kinsta, a Enterprise e os planos acima podem pedir que ela seja implementada.

O xmlrpc.php está rodando em seu site WordPress?

A primeira coisa que você precisa fazer é identificar se o xmlrpc.php está rodando em seu site WordPress.

Este não é um caso simples de verificar se o arquivo está lá: ele faz parte de toda instalação do WordPress e estará presente mesmo que o XML-RPC esteja desativado.

Sempre faça um backup do seu site antes de apagar qualquer coisa. Neste caso, não apague apenas o arquivo xmlrpc.php porque ele quebrará seu site.

Para verificar se o xmlrpc.php está habilitado em seu site, use o Serviço de Validação XML-RPC do WordPress. Este verificará seu site e lhe informará se o xmlrpc.php está habilitado.

Serviço de validação do WordPress XML-RPC

Serviço de validação do WordPress XML-RPC

Aqui está o resultado que obtive quando verifiquei este site no serviço.

Verificação Kinsta XML-RPC

Verificação Kinsta XML-RPC

Isto mostra que o xmlrpc.php foi desativado em kinsta.com. Então, se você executar a verificação e descobrir que o xmlrpc.php ainda está habilitado em seu site, como você o desliga?

Como desativar o xmlrpc.php

Há três maneiras de desativar o xmlrpc.php:

Vamos dar uma olhada em cada um deles individualmente.

Como desativar o xmlrpc.php com um Plugin

Instalar um plugin para desativar o xmlrpc.php é a maneira mais fácil de fazer isso. O plugin Disable XML-RPC irá desativá-lo completamente. Veja como você o usa.

Meu ponto de partida é meu próprio website, no qual o xmlrpc.php está habilitado. Você pode ver isto através da verificação que fiz:

Rachel McCollin website - Verificação XML-RPC

Rachel McCollin website – Verificação XML-RPC

Instale o plugin através de sua tela Plugins no administrador WordPress, e ative-o.

Você não precisa fazer mais nada: ativar o plugin fará com que ele desabilite o XML-RPC. Agora, se eu fizer uma verificação em meu site, eu terei um resultado diferente:

Rachel McCollin website - segunda verificação XML-RPC

Rachel McCollin website – segunda verificação XML-RPC

É simples assim!

Desativar os Pingbacks XML-RPC com um Plugin

Mas e se você quiser desativar alguns aspectos do xmlrpc.php e não outros? O plugin Disable XML-RPC Pingback você desabilita apenas a funcionalidade pingback, significando que você ainda tem acesso a outros recursos do XML-RPC se precisar deles.

O plugin funciona da mesma forma que o plugin Desabilitar XML-RPC: basta instalar, ativá-lo e ele funcionará.

Configurar a ativação do XML-RPC e REST API com um Plugin

Se você quiser um controle mais fino de como ambos xmlrpc.php e o REST API são configurados em seu site, você pode instalar o plugin REST XML-RPC Data Checker.

Uma vez instalado e ativado este plugin, vá para Configurações > REST XML-RPC Data Checker e clique na guia XML-RPC.

REST XML-RPC Data Checker

REST XML-RPC Data Checker

Isto permite configurar exatamente quais aspectos do xmlrpc.php estão ativos em seu site.

Alternativamente, você pode simplesmente desligá-lo completamente. E se você também quiser ter controle sobre a REST API, o plugin lhe dá outra aba para isso.

Precisa de uma hospedagem rápida, segura e amigável ao desenvolvedor? Kinsta é construído com os desenvolvedores do WordPress em mente e fornece muitas ferramentas e um poderoso painel de controle. Confira nossos planos

Como desativar o xmlrpc.php sem um Plugin

Se você preferir não instalar outro plugin em seu site, você pode desativar o xmlrpc.php adicionando algum código em um filtro, ou ao seu arquivo .htaccess. Vamos analisar os dois métodos.

Desativar xmlrpc.php através de um filtro

Uma opção aqui é usar o filtro xmlrpc_enabled para desativar o xmlrpc.php. Adicione esta função a um plugin e ative-o em seu site:

add_filter( 'xmlrpc_enabled', '__return_false' );

Você poderia adicionar isto ao seu arquivo de funções temáticas, mas é melhor praticar a escrita de um plugin.

A outra opção tem a ver com a edição de seu arquivo .htaccess, que está disponível com provedores de hospedagem que utilizam Apache, conectando-se ao servidor de seu site via FTP ou cPanel.

Info

Kinsta usa o servidor web Nginx, o que significa que você não terá um arquivo .htaccess funcional. Em vez disso, você pode tirar proveito de ferramentas no painel que podem replicar grande parte da importante funcionalidade .htaccess de forma mais intuitiva através do painel MyKinsta.

Desativar xmlrpc.php através do arquivo .htacess

Em seu arquivo .htaccess, adicione este código:

<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>

Certifique-se de fazer uma cópia do arquivo antigo antes de fazê-lo, para o caso de se deparar com qualquer problema.

Faça seu provedor de hospedagem desativar xmlrpc.php

Alternativamente, alguns provedores de hospedagem irão desativar o xmlrpc.php se um ataque for detectado.

Em Kinsta, quando um ataque via XML-RPC é detectado, um trecho de código é automaticamente adicionado ao arquivo Nginx.config:

location ~* ^/xmlrpc.php$ {
return 403;
}

Isto produzirá um erro 403 e interromperá o ataque em seus rastros.

Se você mesmo estiver fazendo isso, é melhor usar um dos métodos acima. Mas antes de fazê-lo, verifique sempre com seu provedor de hospedagem primeiro.

Quando você precisa habilitar o xmlrpc.php?

Pode haver algumas ocasiões em que você precise ativar xmlrpc.php em seu site WordPress ou quando você não deve desativá-lo completamente.

Estes são:

É isso aí! Nenhuma dessas razões é particularmente boa para manter a especificação XML-RPC ativada.

A única razão pela qual ele ainda está no WordPress é para compatibilidade retroativa e você só o usaria se estivesse trabalhando com sistemas ultrapassados. Para qualquer pessoa que queira manter seus sites atualizados e trabalhar com a última tecnologia, desativar o xmlrpc.php é o caminho a seguir.

XML-RPC foi uma vez uma parte essencial do WordPress. Agora representa um risco de segurança 🔒 - Este guia mostrará exatamente como desativá-lo em seu site 🚨.Click to Tweet

Resumo

A especificação XML-RPC foi desenvolvida antes mesmo da criação do WordPress, como um meio para o WordPress se comunicar com sistemas e aplicações externas. Ela tem falhas de segurança inerentes e pode tornar seu site vulnerável a ataques.

Agora que o REST API permite que seu site se comunique com outras aplicações, você pode desativar com segurança o xmlrpc.php. Se você seguir os passos acima, ao desativá-lo, você melhorará a segurança de seu site.


Se você gostou deste artigo, então você vai adorar a plataforma de hospedagem WordPress da Kinsta. Turbine seu site e obtenha suporte 24/7 de nossa experiente equipe de WordPress. Nossa infraestrutura baseada no Google Cloud se concentra em escalabilidade automática, desempenho e segurança. Deixe-nos mostrar-lhe a diferença Kinsta! Confira nossos planos