fbpx
14fev, 2017
0Comentários

Vulnerabilidade de Escalação de Privilégios no WordPress 4.7.0 ou 4.7.1

Em 1º de fevereiro de 2017, a Sucuri Security divulgou uma vulnerabilidade no WordPress. Se você estiver executando o WordPress versão 4.7.0 que foi lançado em 06 de dezembro de 2016, ou 4.7.1, que foi lançado em 11 de janeiro de 2017, você deve parar de ler e ir atualizar imediatamente!

A divulgação descreve a vulnerabilidade de escalonamento de privilégios que foi encontrada no núcleo do WordPress, afetando o recurso recentemente atualizado: a API REST. Esta vulnerabilidade pode permitir que qualquer pessoa altere qualquer publicação ou página num site do WordPress sem mesmo ser autenticada! Muito assustador, certo? Ainda bem que este problema foi encontrado por pesquisadores de segurança!

Eles divulgaram a falha para o WordPress Security em 20 de janeiro e corrigiram isso imediatamente, fazendo um patch silencioso na versão 4.7.2, que foi lançado em 26 de janeiro de 2017, e protegendo quem executa atualizações automáticas em seus sites. A Equipe de Segurança da WordPress também alcançou várias empresas com produtos WAF , incluindo SiteLock, Cloudflare e Incapsula para ajudá-los a criar regras em suas ferramentas para proteger seus clientes e certificar-se de que nenhum dano seria feito até que a correção fosse liberada. Depois disso, os provedores de hospedagem do WordPress foram alertados sobre esse problema, como a vulnerabilidade funcionou e como proteger os sites de seus clientes.

Esta vulnerabilidade afeta a API do WordPress Rest. De acordo com o pesquisador de segurança que descobriu a vulnerabilidade, um desses pontos de REST (WP_REST_Posts_Controller) permite que qualquer um acessar para ver, editar, excluir e criar postagens através da API. A API REST foi adicionada e ativada por padrão na versão 4.7.0, deixando as versões 4.7.0 e 4.7.1

 

Tipo Malabarismo

 

A falha no WordPress REST API funciona devido a um “recurso” em PHP, também presente em alguns outros idiomas, chamado tipo malabarismo. Ele permite que o desenvolvedor altere silenciosamente os valores de um tipo para outro. Como o PHP não requer definição de tipo explícita em uma declaração de variável, esse recurso é permitido. O que isso significa? Isso significa que ao comparar uma seqüência de caracteres para um número, o PHP tentará converter a seqüência de caracteres para um número, em seguida, executar uma comparação numérica. Se estiver a comparar uma cadeia como “123CODEGUARD” a uma variável de número inteiro, apenas os números serão utilizados para a operação de comparação. Veja os exemplos abaixo:

O problema é que o PHP tem dois modos de comparação: solto e rigoroso. As comparações frouxas têm um jogo das réguas da conversão do operand para a fazer mais fácil para programadores, infelizmente mesmo os colaboradores de PHP admitem que “[ele] não pode ser óbvio exatamente o que acontecerá ao moldar entre determinados tipos .” , Eles são difíceis de explorar, porque você geralmente não são capazes de entrada de dados digitados sobre HTTP. Infelizmente, esse não era o caso com o WordPress REST API.

Código da API REST do WordPress

Vamos voltar ao código do WordPress agora. Mais especificamente, o código dentro do arquivo /wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php, onde encontraram o problema de validação de entrada na função update_item. Nesta função, o problema de validação de entrada que poderia permitir uma escalação de privilégios por um usuário mal-intencionado é a primeira linha de código em que eles estão lançando o ID do pedido para a variável $ id. De acordo com isso, seria possível enviar uma solicitação para a API REST como / wp-json / wp / v2 / posts / 123? Id = 999STRING, o que resultaria na variável id sendo definida como 999.

Função update_item no arquivo class-wp-rest-posts-controller.php – WordPress 4.7.1

A equipe do WordPress corrigiu isso na versão 4.7.2, garantindo que a entrada do id não é coagida e é validada antes de continuar:

Função fixa update_item no arquivo class-wp-rest-posts-controller.php – WordPress 4.7.2

 

Mantenha-se atualizado

Esta é uma vulnerabilidade séria que pode ser usada indevidamente para comprometer um site vulnerável. Certifique-se de que sua instalação do WordPress está atualizada e segura!

 

Fonte: Blog CodeGuard

 

Precisa de um plano de hospedagem para seu site?