Os serviços de bate-papo e vídeo em tempo real disponíveis em aplicativos de telemedicina, finanças e dispositivos IoT inteligentes usados por milhões de pessoas contam com a popular estrutura QuickBlox. A QuickBlox disponibiliza aos desenvolvedores de aplicativos móveis e de web um SDK e APIs para fornecer não apenas recursos de gerenciamento de usuários, bate-papo públicos e privados em tempo real, por exemplo, mas também funcionalidades de segurança que garantem a conformidade com HIPAA e GDPR.
O Claroty Team82, em colaboração com a Check Point Research (CPR), conduziu um projeto de pesquisa para verificar a segurança do QuickBlox SDK. Foram encontradas algumas das principais vulnerabilidades de segurança na arquitetura da plataforma QuickBlox que, se exploradas, podem permitir que os cibercriminosos acessem dezenas de milhares de bancos de dados de usuários de aplicativos e coloquem milhões desses registros em risco.
O relatório a seguir, demonstra explorações contra múltiplos aplicativos, que executam o QuickBlox SDK sob uma linha de aplicativos, especificamente contra apps de intercomunicação inteligente e telemedicina. Ao encadear as vulnerabilidades que identificamos com outras falhas nos aplicativos visados, as companhias encontraram maneiras singulares de realizar ataques que permitem abrir portas remotamente, por meio de apps de intercomunicação e também vazar informações de pacientes de uma importante plataforma de telemedicina.
O Claroty Team82 e a CPR trabalharam próximos com a QuickBlox para resolver todas as vulnerabilidades descobertas. A QuickBlox se comprometeu com a correção ao projetar uma nova arquitetura e API seguras e incentivar seus clientes a migrar para a versão mais recente. Gostaríamos de expressar nossa gratidão e apreço.
Arquitetura do QuickBlox
QuickBlox é uma plataforma de chat e vídeo chamada para o desenvolvimento de aplicativos iOS, Android e web. Ele fornece uma API para autenticação, gerenciamento de usuários, bate-papo e mensagens, gestão de arquivos, etc, e um SDK fácil de usar que permite recursos de voz e vídeo. Portanto, não é nenhuma surpresa que a QuickBlox surgiu, pela primeira vez, enquanto as organizações pesquisavam especificamente um aplicativo para dispositivo móvel de intercomunicação que dependeria de tal estrutura. Isso s levou ao caminho da pesquisa tanto na estrutura QuickBlox, quanto em vários aplicativos que a utilizam.
Antes de entender as vulnerabilidades que descobrimos no QuickBlox, é preciso saber como um desenvolvedor integra a estrutura em seu aplicativo. Primeiro, os desenvolvedores devem criar uma conta na QuickBlox. Então, um novo aplicativo é criado usando o painel da QuickBlox, que irá gerar as seguintes credenciais para o aplicativo:
– ID do aplicativo
– Chave da autorização
– Segredo da autorização
– Chave da conta
Com essas informações, o aplicativo pode solicitar um QB-Token que será usado em outras solicitações de API. O token fornecido é um token de nível de aplicativo, que possui funcionalidade limitada.
Uma vez que o aplicativo recupere o QB-Token, ele permite que os usuários efetuem o log in por cima desta seção, para que a seção tenha o contexto do usuário conectado. Isso é feito fornecendo a seção do aplicativo e as credenciais do usuário. Agora a seção está totalmente autenticada e autorizada com as permissões do usuário.
No entanto, esta forma de autenticação expõe uma grande falha: uma seção de aplicativo é necessária para criar uma seção de usuário. Isso significa que cada usuário deve obter uma seção do aplicativo, o que requer conhecimento dos segredos do aplicativo, especificamente ID do aplicativo, chave da autorização, segredo da autorização e chave da conta.
Para torná-lo tecnologicamente aplicável, os desenvolvedores de apps precisavam garantir que essas chaves secretas fossem acessíveis a todos os usuários. Ao examinar os aplicativos que usam QuickBlox, notou-se que a maioria deles optou por simplesmente inserir os segredos do aplicativo no app.
Quando notaram pela primeira vez que a documentação oficial orienta os clientes a adicionar segredos (AUTH_KEY, AUTH_SECRET) aos seus aplicativos, a parceria se sentiu desconfortável. Nunca é uma boa ideia esconder tokens de autenticação secreta em aplicativos, porque eles são considerados informações públicas e podem ser facilmente extraídos usando vários métodos, desde engenharia reversa até uma análise dinâmica com Frida.
Vulnerabilidades
O Consórcio decidiu, então, vasculhar a API da ferramenta e examinar o que era possível acessar, usando informações “públicas”: chaves secretas do aplicativo. Foram descobertas algumas vulnerabilidades críticas na API da QuickBlox, que podem permitir que possíveis invasores vazem o banco de dados dos usuários de muitos aplicativos populares.
Por padrão, as configurações da QuickBlox permitem que qualquer pessoa, com uma seção no nível de aplicativo, consiga informações confidenciais e permissões, como:
– Uma lista completa de todos os usuários, usando a rota da API /users.json
– Informações do usuário PII por ID, usando a rota da API /ID.json – incluindo nome, e-mail, telefone etc.
– Criar novos usuários, usando o /users.json
Isso significa que qualquer pessoa que conseguir extrair as configurações estáticas da QuickBlox no aplicativo poderá recuperar as informações pessoais do usuário, abaixo, de todos os usuários do app e também poderá criar múltiplas contas controladas por invasores.
Embora as configurações padrão da API permitam todos os itens (obter a lista completa de usuários, recuperar informações do usuário e criar novos usuários), os proprietários do app podem limitar o acesso à API no nível do aplicativo, usando um menu interno de configurações.
Embora isso ofereça alguma mitigação para as vulnerabilidades encontradas, havia outra maneira de vazar todo o banco de dados do aplicativo. Ao criar uma conta de usuário não autorizada, é possível que os invasores vazem informações específicas do usuário acessando /ID.json, em que ID é o ID do usuário sequencial.
Como a QuickBlox usa IDs sequenciais, simplesmente forçando brutalmente um intervalo limitado, é possível vazar todas as informações do usuário de um app. No entanto, a partir de uma verificação que realizamos em relação a essa configuração de privacidade em todos os aplicativos que pesquisamos e recuperamos as chaves, descobrimos que apenas alguns optaram por desativar essa API.
Impactos
Para entender o escopo completo do problema, foi necessário explorar quais tipos de aplicativos estão usando o Quickblox SDK e qual seria o risco potencial se os invasores extraíssem os tokens secretos. Usando vários métodos, como Google dorking, pesquisas no BeVigil, e outros mecanismos de pesquisa, tokens QB de dezenas de aplicativos diferentes foram encontrados e extraidos.
Extrair chaves não foi tão simples quanto procurar no código. Em alguns casos, as chaves foram encriptadas, enquanto em outros, o código foi fortemente ofuscado. Em alguns casos extremos, elas foram dinamicamente recebidas encriptadas a partir de um servidor remoto. No entanto, independentemente do aplicativo, qualquer app exigiria a chave secreta e, de alguma forma, a usaria com um servidor QuickBlox.
O máximo que os desenvolvedores podem fazer é colocar obstáculos para complicar a recuperação da chave do aplicativo; que sempre estará acessível aos invasores, independentemente de levar cinco minutos para extraí-la ou duas horas.
Depois de extrair os tokens de cada aplicativo, tentamos entender como os invasores poderiam aproveitar o seu ataque com base nos recursos do app e/ou outras vulnerabilidades na plataforma. Encontramos muitos vetores de ataque interessantes; aqui explicaremos dois cenários – solução de intercomunicação baseada em nuvem e um aplicativo de telemedicina.
Conclusão
O Claroty Team82 e a Check Point Research colaboraram nesta análise abrangente da API da QuickBlox, que é proeminente em muitos aplicativos de bate-papo e vídeo usados por milhões de pessoas em diferentes setores. Foram expostas vulnerabilidades na arquitetura da plataforma, que poderiam ser exploradas para permitir que invasores acessassem bancos de dados dos usuários dos aplicativos. Milhões de registros de usuários estavam em risco, devido a essas vulnerabilidades.
A pesquisa conjunta levou a várias explorações de prova de conceito contra os aplicativos que executam a API afetada. Ela demonstrou como a combinação de tokens secretos e senhas embutidos no aplicativo e o uso de um design inseguro de API da QuickBlox pode permitir que cibercriminosos obtenham uma grande quantidade de informações sobre os usuários finais.
As empresas trabalharam de perto com a QuickBlox para remediar os problemas. A QuickBlox respondeu à nossa divulgação, projetando uma nova arquitetura segura para a sua plataforma e uma nova API. Os seus clientes foram incentivados a migrar para as versões mais recentes de ambos.