Este bug poderia permitir que utilizadores mal-intencionados enviassem solicitações com tokens CSRF para endpoints arbitrários no Facebook e que poderia levar à aquisição das contas das vítimas.
Para que esse ataque fosse efetivo, um atacante teria que enganar a vítima a clicar num link especialmente criado.
Um especialista em segurança @Samm0uda, descobriu uma vulnerabilidade de CSRF no Facebook e que permita explorar um endpoint vulnerável junto com parametros que permitia executar uma solicitação POST para outro endpoint do Facebook depois da adição do parâmetro: db_dtsg.
Para além disso, este endpoint vulnerável está localizado sob o domínio principal da rede social (www.facebook.com) o que tornava o ataque mais fácil de explorar pelos atacantes, e consequentemente enganar também as vítimas porque o domínio apresentado era o “normal”.
O endoint vulnerável era o seguinte:
https://www.facebook.com/comet/dialog_DONOTUSE/?url=XXXX, onde XXXX é o endpoint target que iria ser executado numa solicitação POST (o token CSRF fg_dtsg é automaticamente adicionado ao request body).
Esta vulnerabilidade permitia executar uma série de ações maliciosas, p.ex:
Make a post on timeline:
https://www.facebook.com/comet/dialog_DONOTUSE/?url= /api/graphql/%3fdoc_id=1740513229408093%26variables={"input":{"actor_id":{TARGET_ID},"client_mutation_id":"1","source":"WWW","audience":{"web_privacyx":"REDECATED"},"message":{"text":"TEXT","ranges":[]}}}
Delete Profile Picture:
https://www.facebook.com/comet/dialog_DONOTUSE/? url=/profile/picture/remove_picture/%3fdelete_from_album=1%26profile_id={TARGET_ID}
Trick user to delete their account (After changing language with “locale” parameter)
https://www.facebook.com/comet/dialog_DONOTUSE/? url=/help/delete_account/dialog/%3f__asyncDialog=0%26locale=fr_FR
Esta ação abria uma caixa de diálogo de confirmação de palavra-passe. Se a vítima digitasse a sua palavra-passe de acesso à rede social, a sua conta seria totalmente eliminada (takeover).
O investigador reportou a falha ao Facebook no dia 26 de janeiro. O Facebook confirmou a vulnerabilidade no próprio dia, e mitigou-a passado alguns dias, a 31 de janeiro.
O investigador recebeu no dia 12 de fevereiro uma remuneração bug bounty (reward) do Facebook no valor de $25.000 pelos seus findings.
Timeline
Jan 26, 2019 — Report Sent
Jan 26, 2019— Acknowledged by Facebook
Jan 28, 2019 — More details sent
Jan 31, 2019— Fixed by Facebook
Feb 12, 2019 — $25,000 Bounty Awarded by Facebook
Pedro Tavares is a professional in the field of information security working as an Ethical Hacker/Pentester, Malware Researcher and also a Security Evangelist. He is also a founding member at CSIRT.UBI and Editor-in-Chief of the security computer blog seguranca-informatica.pt.
In recent years he has invested in the field of information security, exploring and analyzing a wide range of topics, such as pentesting (Kali Linux), malware, exploitation, hacking, IoT and security in Active Directory networks. He is also Freelance Writer (Infosec. Resources Institute and Cyber Defense Magazine) and developer of the 0xSI_f33d – a feed that compiles phishing and malware campaigns targeting Portuguese citizens.
Read more here.