Durante mais de um ano, bastava clicar num link maliciosamente criado no Twitter para que a sua conta pudesse ser assumida e usada para tweetar, retweetar, gostar ou bloquear outros utilizadores. A vulnerabilidade foi revelada publicamente na quarta-feira, o que levou a uma solução rápida – e a uma repreensão para o utilizador que a revelou.
Em vez de ganhar uma recompensa monetária do programa de recompensa de bugs do Twitter, a empresa proibiu o utilizador de participar.
Enviei este relatório de erro e não recebi uma recompensa. Disseram-me que este erro já existe há um ano. Vendo que não o corrigiram durante tanto tempo, parece que este bug não é importante, por isso tornei-o público. pic.twitter.com/R9X4k8KqMZ
– rabbit (@rabbit_2333) December 12, 2023
A revelação foi feita pelo utilizador pseudónimo do Twitter @rabbit_2333, que partilhou como uma vulnerabilidade XSS no subdomínio de análise do Twitter pode ser aproveitada para dar a um atacante acesso ao perfil de um terceiro e a capacidade de fazer quase tudo, exceto alterar a palavra-passe da conta.
O hack fez uso de cross-site scripting (XSS) e cross-site request forgery (CSRF). Os ataques XSS permitem que agentes maliciosos injectem scripts nocivos em páginas Web, enquanto o CSRF leva os utilizadores a executar acções numa aplicação Web onde já estão autenticados.
O bug do Twitter utilizou estes dois métodos, o que o torna especialmente perigoso. Ao explorar o XSS, os atacantes podiam contornar as medidas de segurança da web e obter acesso não autorizado às contas dos utilizadores.
Quando a notícia dessa vulnerabilidade se espalhou, Chaofan Shou, cofundador da plataforma de análise de contratos inteligentes Fuzz.Land, entrou em cena para fornecer mais detalhes. Ele revelou como era fácil construir uma poderosa ferramenta de exploração com base nessa vulnerabilidade não corrigida e forneceu uma explicação detalhada de como o bug funcionava e os danos potenciais que poderia causar.
Aqui está a divulgação completa da vulnerabilidade XSS + CSRF do Twitter.
Clicar em um link criado ou ir para algumas páginas da web criadas permitiria que os invasores assumissem o controle de sua conta (postando, curtindo, atualizando seu perfil, excluindo sua conta, etc.) pic.twitter.com/MVJ1MvHt6H
– Chaofan Shou (@shoucccc) December 13, 2023
Sun observou que o navegador Brave, centrado na privacidade, teria impedido a exploração de funcionar.
A resposta da equipa X foi rápida após esta revelação pública. Em poucas horas, eles corrigiram a vulnerabilidade, como confirmado pela Sun. Apesar da potencial gravidade da falha, no entanto, @rabbit_2333 não foi recompensado pela descoberta. Em vez disso, eles foram notificados de que foram banidos do programa de recompensa por bugs.
“Obrigado Twitter”, escreveu o utilizador, com capturas de ecrã da notificação de banimento do Twitter.
Enquanto os comentários se sucediam sobre se @rabbit_2333 deveria ter postado sobre o bug ou não, o usuário afirmou que eles seguiram o protocolo adequado no início. Foi só quando X descartou a gravidade e a elegibilidade para uma recompensa que eles se tornaram públicos, disse o usuário.
Enviei este relatório de erro e não recebi uma recompensa. Disseram-me que este erro já existia há um ano. Vendo que não o corrigiram durante tanto tempo, parece que este bug não é importante, por isso tornei-o público. pic.twitter.com/R9X4k8KqMZ
– rabbit (@rabbit_2333) December 12, 2023
O objetivo dos programas de recompensa de bugs é evitar incidentes como este, incentivando os programadores a descobrirem falhas de segurança com recompensas e um acordo para não as divulgarem enquanto a empresa as corrige.
Os programas de recompensa por bugs são comuns no desenvolvimento de software, bem como na criptomoeda, especialmente quando se trata de contratos inteligentes. Embora a execução de tais programas possa ser um desafio, a prevenção de uma violação de segurança é normalmente vista como valendo o esforço.
Os programas de incentivo White-hat e bug-bounty exigem normalmente que as vulnerabilidades sejam mantidas confidenciais. Mas também têm frequentemente datas de expiração, para garantir que o programador de software actua atempadamente.