O Facebook assinava um dos seus apps com uma chave privada compartilhada com outros apps no Google Play desde 2015

ElevenPaths    10 septiembre, 2019
O Facebook assinava um dos seus apps com uma chave privada compartilhada com outros apps no Google Play desde 2015

O app Free Basics by Facebook é destinado a países com conectividade cara ou limitada, onde se oferece acesso gratuito ao WhatsApp e ao Facebook. Durante uma investigação, descobriu-se que sua versão Android utilizada um certificado “debug” compartilhado por outras aplicações não relacionadas ao Facebook e, inclusive, em outras lojas.

Aqui na ElevenPaths conseguimos comprovar essa associação maliciosa com apps de origem chinesa disponíveis no Google Play desde 2015. Isso significa que os desenvolvedores que compartilhavam essa chave poderiam, inclusive, alterar e influir o app original.

O dono da página Android Police avisou há alguns dias que o certificado utilizado para assinar a aplicação Facebook Basic era o mesmo de muitos outros apps em outros mercados, sem relação aparente e sem resposta dos desenvolvedores.

O Facebook não deu a devida importância, dizendo que não há evidência de que a falha tenha sido explorada e que já a havia corridinha. Mas a solução não é um processo tão simples assim e não causas como consequências são más notícias.

Causas

A plataforma Android obriga a assinatura de APKs com certificados automáticos. Isso viola a regra da cadeia de confiança, mas ao menos serve para garantir de certo modo a integridade do app e permitir sua atualização. Ao assinar um app com um certificado e subi-lo ao Google Play, não se pode mais alterar esse certificado (nem o nome do pacote APK) ao atualizar a aplicação. Caso o certificado seja perdido, o desenvolvedor terá que criar um app diferente e era isso que o Facebook deve ter feito para solucionar o problema.

Mas o Facebook supostamente não perdeu a chave privada do certificado utilizado, fez algo diferente (pior?), sobre o que só podemos imaginar. Para começar, os desenvolvedores usaram um certificado “Android Debug” sem preencher os dados reais o que, além de ser uma prática ruim, significa ter deixado na versão de produção o certificado das várias provas que fizeram.

Mas como é possível que terceiros pudessem usar esse certificado? Talvez ele seja do tipo público, eles existem e são usados por desenvolvedores por desconhecimento dos riscos ou porque desenvolver apps gratuitas. No entanto, é possível que a empresa tenha perdido o controle sobre o certificado, o que significaria, no mínimo, uma falta de segurança no desenvolvimento. Outra possibilidade é que o app tenha sido desenvolvido por um terceiro, talvez um freelancer, que realizou outros trabalhos depois do Free Basics, usando a mesma chave (o que é totalmente desaconselhável).

Pudemos comprovar aqui na ElevenPaths que os apps assinados como mesmo certificado não estavam disponíveis somente na loja oficial do Android e, em 2015, ano em que surgiu o Free Basics by Facebook, encontramos aplicações chinesas assinadas com o mesmo certificado e já removidas da loja de aplicações.

* App: af739e903e97d957a29b3aeaa7865e8e49f63cb0
Firmado con: 5E8F16062EA3CD2C4A0D547876BAA6F38CABF625
En Google Play desde 2015-09-20 al 2016-10-07 aproximadamente.
 * App: 063371203246ba2b7e201bb633845f12712b057e
Firmado con: 5E8F16062EA3CD2C4A0D547876BAA6F38CABF625
En Google Play desde: 2015-10-21 al 2016-06-22 aproximadamente.
 * App: c6a93efa87533eeb219730207e5237dfcb246725
Firmado con: 5E8F16062EA3CD2C4A0D547876BAA6F38CABF625
En Google Play desde: 2015-09-15 al 2015-09-16 aproximadamente. 

Consequências

Além dos prejuízos de imagem de marca para o Facebook, um atacante poderia ter se aproveitado dessa falha para atualizar de maneira fraudulenta o app. Como? Bom, para atualizar um app é necessário que se possua o mesmo certificado usado para assinar a aplicação originalmente e acesso a conta de desenvolvedor do Google Play. Não é algo simples, mas o Facebook estava facilitando metade do trabalho para o atacante.

Além disso, também se poderiam tornar mais fáceis os ataques de conluio de aplicações Android. Esses ataques são bem conhecidos e se caracterizam quando aplicações diferentes não são maliciosas por si só, mas podem através de colaboração entre elas realizar um ataque. Um exemplo disso é quando se soma permissões no dispositivo entre as aplicações para que, em conjunto, se tenha mais poder sobre o telefone. Individualmente, no entanto, elas são inócuas. Para conseguir esse tipo de ataque, os apps devem ser assinados com o mesmo certifica e, de novo, se todo o processo não é simples, foi tremendamente facilitado.

Para registro, o Facebook não quis recompensar o pesquisador que descobriu a falha porque ele a publicou no Twitter antes de reportar à empresa.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *