Um pesquisador, Daniel Le Gall, descobriu uma vulnerabilidade séria em um dos servidores do Facebook. O pesquisador encontrou um serviço Sentry hospedado em 199.201.65.36 com o nome do host sentryagreements.thefacebook.com, durante a digitalização de uma faixa de IP que pertence ao Facebook -199.201.65.0/24.
Execução remota de código em um servidor do Facebook: Detalhes técnicos
O que é Sentinela? É um aplicativo da web de coleta de log que é escrito em Python com o framework Django.
O pesquisador também explicou que, enquanto ele estava olhando para o aplicativo Sentry, alguns stracktraces apareciam regularmente na página sem nenhum motivo específico.
O aplicativo parecia instável em relação ao recurso de redefinição de senha do usuário, que ocasionalmente travava, ele adicionou, observando que o modo de depuração do Django não foi desligado, que consequentemente imprime todo o ambiente quando ocorre um rastreamento de pilha.
Contudo, Django corta informações críticas (senhas, segredos, chave…) nesses rastreamentos de pilha, evitando assim um vazamento massivo de informações.
O pesquisador decidiu olhar mais de perto, e percebeu que poderia identificar nomes de cookies de sessão, várias opções, bem como serializador conhecido como Pickle. Simplificando, Pickle é um protocolo binário para (uma)serializar estruturas de objetos Python, como classes e métodos neles.
Se pudéssemos forjar nossa própria sessão que contém conteúdo arbitrário de picles, poderíamos executar comandos no sistema,”Daniel notado.
Não obstante, o SECRET_KEY usado pelo Django para assinar cookies de sessão não está disponível no stacktrace. além disso, a lista SENTRY_OPTIONS contém uma chave chamada system.secret-key, que não é cortado. De acordo com a documentação do Sentry, system.secret-key é “uma chave secreta usada para assinatura de sessão. Se isso for comprometido, é importante regenerá-lo, caso contrário, é muito mais fácil sequestrar as sessões do usuário. "
Como o pesquisador apontou, parece que a situação é “uma espécie de substituição do Django SECRET-KEY”.
Usando todas essas informações, Daniel foi capaz para criar um script que falsifica cookies maliciosos usando conteúdo Pickle arbitrário. O último continha uma carga útil para substituir o cookie Sentry. Este cookie foi posteriormente substituído por um objeto arbitrário. Para testar esta vulnerabilidade, o pesquisador implementou um retardo de 30 segundos evitando a causa de qualquer dano real. Sua tentativa foi bem sucedida.
Um invasor pode ter explorado a vulnerabilidade de segurança para sequestrar remotamente o sistema para roubar dados do servidor do Facebook ou realizar outras atividades maliciosas. Deve ser enfatizado embora, este nenhum dado do usuário foi localizado no servidor, embaixo foi exposto devido a esta falha.
Daniel relatou sua descoberta ao Facebook em julho 30, 2018, com a empresa reconhecendo rapidamente o bug ao desligar o servidor. Um patch foi lançado em agosto 9, e o pesquisador foi premiado $5,000 por relatar a falha.
Ano passado, um pesquisador de segurança, Andrew Leonov, foi premiado $40,000 em nome do Facebook para violar a rede social e corrigir uma vulnerabilidade de execução remota de código que já foi descoberto e corrigido em 2016. Pelo visto, a vulnerabilidade precisava ser tratada mais uma vez. A falha ainda estava afetando o site.