Defenda-se de ataques de brute force amplificados no WordPress

Brute Force

Ataques chamados de “brute force” estão entre as mais antigas e tradicionais ameaças da internet. O ataque, basicamente, consiste no envio de requisições ou execução de scripts que “testam” palavras-passe, com o objetivo de revelar as passwords de usuários e aceder seus dados. Como a grande maioria dos websites da atualidade estão em WordPress, hoje falaremos sobre algumas formas de evitar esses ataques na plataforma – especialmente sua versão agravada: o brute force amplificado.

O WordPress é uma ferramenta poderosa e com imensos recursos. Contudo, esses recursos trazem benefícios ao mesmo tempo em que podem ser explorados por programadores e hackers mal intencionados. Sob as novas regras do RGPD, garantir proteção extra, especialmente em relação aos dados de login dos usuários, pode ser um “plus” em termos de segurança.



O que é o “brute force amplificado”

Enquanto o brute force gera imensas requisições para testar passwords em logins, o brute force amplificado utiliza-se de algumas “brechas” existentes em plataformas e códigos para criar múltiplas tentativas de quebra de uma password a partir de uma única requisição.

Há, contudo, um problema adicional: alguns sistemas possuem recursos específicos que permitem gerar tarefas múltiplas a partir de uma única requisição. O objetivo é acelerar sites e aplicações e diminuir o número de requisições e o fluxo de tráfego – algo extremamente positivo – mas que pode e é usado por hackers e pessoas mal intencionadas para realizar alguns tipos de ataque.

No brute force amplificado, hackers utilizam-se de sistemas como o XML-RPC. O XML-RPC é um protocolo de chamada de procedimento remoto (CPR) que utiliza XML para codificar suas chamadas e HTTP como um mecanismo de transporte. O WordPress utiliza-se desse protocolo em algumas operações e, desse modo, ele vem disponibilizado como default na instalação do CMS. Quando hackers utilizam o XML-RPC para realizar ataques de brute force, podem gerar dezenas, centenas ou mesmo milhares de combinações contra passwords a partir de uma única requisição – e nesse ponto várias medidas de contenção a ataques vão por água abaixo.

A proteção? Algo simples: desabilitar o XML-RPC. Mas cuidado, isso deve ser feito com calma e sempre mediante testes, pois é claro que alguns plugins e operações dentro do WordPress podem fazer uso do protocolo, embora na maioria dos sites isso seja improvável. A via que usaremos aqui não se utiliza do ficheiro .htaccess no servidor – ou seja, é uma forma menos invasiva e insegura de realizar tal intento.

Como proteger seu website a partir do tema

Os temas podem ser diretamente protegidos contra essa ameaça por meio de uma simples função  que bloqueia a funcionalidade específica do ficheiro xml-rpc.php no momento em que o tema começa a carregar. A inserção é feita diretamento no ficheiro functions.php (nesse caso, é melhor que esteja a usar um tema “filho” para essas alterações). Ao final do ficheiro, basta adicionar uma função customizada:

function disable_xmlrpc_system_multicall($methods) {
  unset($methods['system.multicall']);
  return $methods;
}

add_filter('xmlrpc_methods', 'disable_xmlrpc_system_multicall');

Para quem acredita que não utilizará as funções do xml-rpc.php (e é pouco provável que esteja a utilizá-las), o WordPress ainda permite desabilitar de forma completa o ficheiro e suas funcionalidades. Mas cuidado, pois há plugins que precisam de utilizar os métodos XML-RPC, como é o caso do Jetpack. Para desabilitar o XML-RPC totalmente, basta inserir um filtro via plugin próprio ou mesmo no ficheiro functions.php do seu tema:

add_filter('xmlrpc_enabled', '__return_false');