- Foi descoberta uma vulnerabilidade de segurança grave no app de namoro Cerca
- O OTP era exposto na resposta, permitindo que qualquer pessoa com o número de telefone acessasse a conta
- Vários endpoints de API abertos sem autenticação facilitavam o vazamento de dados pessoais
- Uma grande quantidade de informações sensíveis, como preferência sexual, conteúdo de mensagens e documentos de identidade, ficou exposta
- Mesmo após um relato responsável do pesquisador, o serviço teve resposta inadequada e comunicação insuficiente
A importância de startups levarem segurança a sério
- Recentemente, startups têm apressado o lançamento no mercado e deixado a segurança de lado
- Embora seja um app de namoro que concentra dados pessoais, a falta de maturidade no desenvolvimento e na operação expôs usuários a riscos
Descoberta da vulnerabilidade e processo de notificação
- Em 23 de fevereiro de 2025, foi enviado um e-mail à equipe da Cerca explicando a vulnerabilidade de segurança e problemas relacionados
- Em 24 de fevereiro, uma videoconferência discutiu em detalhes a vulnerabilidade, formas de mitigação e os próximos passos
- A equipe da Cerca informou que entendia a gravidade, prometeu agir rapidamente e avisar os usuários
- Depois disso, foram enviados vários pedidos de atualização sobre o andamento, mas em 21 de abril ainda não havia resposta nem comunicado
- Verificações independentes indicaram que a vulnerabilidade já havia sido corrigida
Vulnerabilidade no OTP e processo simples de invasão
- No processo de login do app, a senha de uso único (OTP) era exposta diretamente na resposta de rede
- Um invasor podia acessar contas de forma fácil e rápida sabendo apenas o número de telefone
Acesso a endpoints de API e vazamento de informações
- Foi confirmado que bastava informar o header da versão do app para acessar todos os caminhos da API
- O endpoint
/docs expunha toda a documentação OpenAPI
- Com ferramentas como Burp Suite, era possível controlar a API injetando automaticamente headers e tokens do app
- Alguns endpoints apenas alteravam a lógica de negócio, mas os principais retornavam dados pessoais de forma grave
- Com rotas como
user/{user_id}, era possível obter dados pessoais, números de telefone e até sequestrar contas
Exposição em massa de dados pessoais e documentos de identidade
- Por meio de endpoints de dados pessoais, houve exposição em massa de PII, incluindo gênero, cidade, data de nascimento, e-mail escolar e dados de identidade
- Em especial, campos ligados à verificação de identidade, como
national_id_verified, permitiam acesso a arquivos sensíveis, como imagens de passaporte e documento de identidade
- Um script de ataque identificou 6.117 usuários, dos quais 207 haviam enviado até mesmo dados de identidade
- Entre eles, havia também algumas contas que indicavam vínculo com a Universidade Yale
- Segundo o Instagram oficial da Cerca, isso corresponde a cerca de 10 mil usuários na primeira semana
Risco real de danos e gravidade do problema
- O vazamento de preferência sexual, conversas e documentos de identidade, informações extremamente sensíveis, representa risco grave de stalking, roubo de identidade e chantagem
- A Cerca afirmava seguir padrões do setor, incluindo criptografia, mas isso não condizia com a operação real do serviço
- Como usuários não podem verificar isso diretamente, é essencial que o fornecedor do app mantenha uma gestão de segurança ativa e responsável
- Na prática, também existe a possibilidade de que um número indeterminado de pessoas já tenha roubado dados pessoais em massa
Conclusão e necessidade de uma cultura de segurança responsável
- Operar um app com segurança tão frágil que qualquer pessoa consegue hackeá-lo facilmente é um grave problema social
- Se a proteção dos dados dos usuários não for tratada como prioridade máxima, danos podem ocorrer em tempo real
- O caso da Cerca, que teve resposta insuficiente ao relato do pesquisador e falhou em orientar os usuários, deve servir de alerta
- Para construir uma internet mais segura, estabelecer uma estrutura sólida de segurança deve ser prioridade máxima para toda empresa de software
1 comentários
Opiniões no Hacker News
Mesmo considerando que este app parece ser um produto bem iniciante feito por universitários, acho que ainda assim eles deveriam ter feito o máximo possível em segurança e comunicação. Dito isso, vendo até empresas adultas financiadas por grandes VCs esbarrarem nesse tipo de problema e reagirem de forma parecida, também acho que não faz sentido ser duro demais com estudantes. Compartilho o link da matéria
Trabalhando como desenvolvedor em empresa pequena, às vezes fico preocupado com minha responsabilidade pessoal. Muitas empresas operam em áreas que não precisam seguir regulações como PCI ou HIPAA. Em organizações pequenas, segurança costuma ser tratada não como responsabilidade da empresa inteira, mas como tarefa da engenharia. O time de produto só pensa em funcionalidades, PM só pensa em prazo, QA só pensa em bugs, e raramente alguém levanta a voz sobre segurança. O clima é de que engenheiro só precisa fazer o que foi atribuído. Se o engenheiro consegue cuidar de segurança, ótimo; se não, ainda leva crítica de PM e afins. E sempre se ouve a mesma conversa: “quanto tempo vai levar?”, “qual a chance disso acontecer de verdade?”, “vamos lançar o MVP logo e depois melhoramos”. Então, como funcionário, acabo fazendo apenas o que a empresa manda. Mas quando a empresa for processada por invasão ou vazamento, fico me perguntando com frequência se a responsabilidade vai cair sobre mim por eu ser o engenheiro que “deveria saber mais”
Para reduzir a responsabilidade legal do pesquisador, acho que bastaria criar mais uma conta, ou acessar com o consentimento de um amigo por meio de um perfil, só para obter o nível de acesso necessário. Nem seria preciso realmente extrair os dados: por exemplo, se meu id é 12345 e o id do meu amigo é 12357, dá para provar que é possível acessar o perfil de outras contas usando os ids intermediários. Como muita gente já disse, não é necessário acessar os dados pessoais de milhares de pessoas; basta demonstrar e divulgar a vulnerabilidade
Este texto em si parece bastante confuso. A ideia é que a API que recebe o OTP (senha de uso único) era tão simples que o OTP vinha exposto na própria resposta do servidor, então qualquer pessoa que soubesse o número de telefone poderia entrar na conta. Como a API parecia ser algo como
otp/número_de_celulare o OTP vinha na resposta, parece que bastava acertar o número para receber o código também. E depois o autor diz que enumerou IDs de usuários com um script, parando quando encontrava 1.000 IDs vazios consecutivos, e assim confirmou 6.117 usuários no total, 207 registros de identidade e 19 estudantes de Yale. Mas acessar esse volume de dados pessoais de terceiros sem consentimento lembra o caso do weev, que hackeou a AT&T e foi preso. Mesmo em escala menor, esse tipo de pesquisa é legalmente arriscado, e me preocupa que o autor pareça não entender o quanto o ambiente jurídico deixa pesquisadores de segurança desprotegidosotp/númerodevolvia diretamente o OTP final. Ou seja, bastava acertar o número de telefone para receber o OTP na horaPassei por algo parecido: tentei reportar um bug em outro app de namoro, não consegui contato, então alterei o perfil do fundador para “entre em contato comigo”. Eles simplesmente restauraram por backup. Anos depois vi um anúncio desse app no Instagram e tentei de novo; a mesma vulnerabilidade continuava lá. Qualquer pessoa que soubesse os endpoints da API podia obter privilégios de admin e acesso a todas as mensagens e matches. Estou pensando se vale a pena tentar contato de novo
Acho que, ao coletar dados sensíveis como passaporte ou endereço em um app, isso deveria fazer qualquer um pensar duas vezes. Não é algo que possa ser tratado como banal sob a justificativa de “foi feito por estudantes”
Devolver o OTP diretamente na resposta da API é uma situação absurda demais. Não entendo o motivo
Compartilha um link para outra matéria relacionada no Yale Daily News
Gostaria que existissem leis tratando dados pessoais como lixo nuclear, algo extremamente perigoso. Em caso de vazamento, a empresa deveria quebrar e os responsáveis também enfrentar risco legal. Hoje é fácil demais coletar dados de usuários e, quando vaza, basta pedir desculpas e seguir em frente
Só agora descobri a ferramenta Charle's Proxy no iOS. Antigamente eu fazia pentest procurando strings diretamente no binário do app. Parece que isso vai ajudar muito na análise de apps exclusivos para iOS