top of page

Falha do Facebook permitia ao atacante roubar o token de acesso e tomar o controlo de qualquer conta


A falha residia no protocolo de autenticação OAuth 2.0, que a gigante tecnológica usava para autenticação dos seus utilizadores usando o Facebook em si e quaisquer outros serviços, ou seja, permitir usar terceiros para a autenticação dos seus utilizadores.

A funcionalidade de login - "Login with Facebook" - permitia ao atacante configurar um website malicioso, e a partir daí roubar o token de acesso por parte de diversas aplicações. Assim que o atacante conseguisse obter os tokens, ganhava privilégios de escrita/leitura sobre as mesmas, incluindo mensagens, fotos, vídeos, e mesmo a configuração de privacidade.

Duas formas de exploração da falha ou vetores de entrada:

- Inexistência do header “X-Frame-Options”

- A propriedade "window.parent" que configura a interação do utilizador para zero

Desta forma, podia haver uma comunicação entre diferentes domínios que seria exposta e, consequentemente, o token de acesso seria descoberto por parte de qualquer "origin" ou origem sem o conhecimento da vítima.

Exploit:

var app_id = '124024574287414', app_domain = 'www.instagram.com';

var exploit_url = 'https://www.facebook.com/connect/ping?client_id=' + app_id + '&redirect_uri=https%3A%2F%2Fstaticxx.facebook.com%2Fconnect%2Fxd_arbiter%2Fr%2F7SWBAvHenEn.js%3Fversion%3D44%23origin%3Dhttps%253A%252F%252F' + app_domain;

var i = document.createElement('iframe'); i.setAttribute('id', 'i'); i.setAttribute('style', 'display:none;'); i.setAttribute('src', exploit_url); document.body.appendChild(i);

window.addEventListener('OAuth', function(FB) { alert(FB.data.name); }, !1);

Em suma:

1. Esta falha podia levar ao leak do acess token por parte tanto das apps de Facebook como de terceiros ao mesmo tempo.

2. O vazamento do token designado por "first party token" permitia ao atacante ler/escrever em qualquer conta do Facebook.

3. Devido a uma configuração imprópria do serviço de post de uma mensagem, quem visitasse um site configurado por um atacante podia ver o seu token roubado por apps vulneráveis que estivessem a usar o sistema de autenticação OAuth

4. Os tokens "first party" não expiram

5. Estes tokens são sempre válidos mesmo que se altere a password do Facebook. Portanto, adquirido este token, e mesmo que a vítima altere a password, o atacante ainda mantém o controlo da conta desse utilizador, podendo na mesma roubar os seus dados

Blogue do Investigador: https://www.amolbaikar.com/facebook-oauth-framework-vulnerability/

Mais informações: https://cert.bournemouth.ac.uk/10-yr-old-facebook-account-take-over-vulnerability-let-hackers-hijack-any-ones-facebook-account-researcher-rewarded-55000/

POSTS RECENTES:
PROCURE POR TAGS:
bottom of page