Vulnerabilidade XSS no botão “Login with Facebook” rendeu $20K em bug bounty.

Uma vulnerabilidade do tipo DOM XSS no botão “Login with Facebook” rendeu a um investigador de segurança $20K num programa bug bount.

Vinoth Kumar descobriu a vulnerabilidade XSS baseada em DOM na tecnologia que oferece a sites de terceiros a opção de autenticar visitantes através da plataforma SDK do Facebook.

O problema de segurança surgiu devido a uma falha de implementação da API postMessage.

O método window.postMessage() permite a comunicação entre origens entre objetos Window, por exemplo, entre uma página da web e um iframe incorporado.

Kumar descreveu a tecnologia como uma “avenida pouco explorada por bug hunters”, daí sua decisão de analisar a implementação do Facebook.

Há dias atrás, também o investigador Enguerran Gillier, descrobriu uma vulnerabilidade desta linha no Gmail.

 

Detalhes sobre a vulnerabilidade do Facebook

O investigador Kumar começou por examinar os plugins de terceiros do Facebook para tentar localizar possíveis problemas de iframe. Ele encontrou um ponto de injeção para a exploração quando olhou para o SDK de autenticação do Facebook para JavaScript.

O investigador percebeu que não havia validação de URL quando o JavaScript estava a ser executado – abrindo a possibilidade de executar um ataque baseado em DOM XSS, como Kumar explica numa publicação técnica no seu blog que documenta a descoberta.

“If we send a payload with url:’javascript:alert(document.domain)’ to the https://www.facebook.com/v6.0/plugins/login_button.php iframe and the user clicks the Continue With Facebook button, javascript:alert(document.domain) would be executed on [the] facebook.com domain.”

Através desta vulnerabilidade, agora corrigida pelo Facebook, o investigador encontrou um vetor de ataque em que um agente malicioso era capaz de obter total controlo sobre uma conta de terceiros e as vítimas apenas precisavam de clicar num botão mal intencionado.

 “Due to an incorrect post message configuration, someone visiting an attacker-controlled website and clicks login with the Facebook button would trigger XSS on [the] facebook.com domain [on] behalf of [the] logged-in user.”

 

Esta falha poderia ser aproveitada para account takeover apenas em 1 click.

 

Timeline

  • April 17, 2020 – Initial Report Sent.
  • April 17, 2020 – Acknowledgment of Report.
  • April 20, 2020 – Fix pushed by Facebook.
  • April 29, 2020 – Confirmation of Fix by Facebook.
  • May 01, 2020 – $20000 Bounty Awarded by Facebook.