1 pontos por GN⁺ 2025-12-16 | 1 comentários | Compartilhar no WhatsApp
  • Foi descoberta uma vulnerabilidade grave no Freedom Chat, um app de mensagens temático MAGA (campo conservador dos EUA), que expunha números de telefone e códigos PIN dos usuários
  • O app é sucessor de um projeto anterior chamado Converso, que já havia apresentado problemas de implementação de criptografia e exposição de dados
  • A análise mostrou que, por meio do recurso de canais, os códigos PIN de todos os membros eram enviados a outros usuários, e que a API de sincronização de contatos permitia associar números de telefone a UIDs
  • O pesquisador confirmou que não havia qualquer limitação de taxa (rate limiting), o que permitiu coletar os números de telefone de todos os usuários do Freedom Chat em apenas um dia
  • O caso é apontado como um exemplo de como um app que “enfatiza segurança” falhou até mesmo em proteger dados pessoais básicos

Da transição de Converso para Freedom Chat

  • Lançado em 2023, o Converso alegava ter uma “estrutura descentralizada sem servidor” e “E2EE de última geração”, mas a análise do pesquisador crnković mostrou que todas essas alegações eram falsas
    • Na prática, usava servidor central e um serviço de criptografia de terceiros (Seald), e as chaves de criptografia podiam ser derivadas a partir de informações públicas
    • Todas as mensagens eram enviadas para um bucket público do Firebase, podendo ser lidas por qualquer pessoa
  • Depois disso, o CEO Tanner Haas retirou o app do ar e o rebatizou como Freedom Chat, citando como motivo as “preocupações com privacidade do campo conservador”
    • Ele mencionou a lição de “aceitar críticas e melhorar”, mas os problemas de segurança se repetiram

Estrutura e funções do Freedom Chat

  • O app usa cadastro baseado em número de telefone e verificação por código 2FA, sendo que a definição de PIN é opcional
  • As principais funções são chat 1:1 e canais (Channels), em uma estrutura semelhante à do Telegram
  • O app promovia um recurso de bloqueio de captura de tela como “função de segurança”, embora isso não tivesse relação com a segurança real

Vazamento de código PIN

  • O resultado das requisições à API /channel incluía, no objeto de usuário (user object) de 1.519 membros do canal, um campo de PIN
    • Junto com o UID de cada usuário, chave Seald, data de criação etc., o código PIN de 6 dígitos era exposto em texto puro
  • Ao criar uma nova conta e verificar a resposta, foi confirmado que o próprio PIN aparecia integralmente nos dados retornados
  • Ou seja, havia uma estrutura em que o PIN de todos os usuários que permaneciam no canal padrão era exposto a outros usuários

Vulnerabilidade de associação de números de telefone

  • A API /user/numbers verificava a existência de contatos da mesma forma que o WhatsApp
    • Se um número incluído na requisição pertencesse a um usuário do Freedom Chat, a API retornava o UID e a chave Seald
  • O pesquisador confirmou que essa API não tinha qualquer limitação de taxa, tornando possível testar sequencialmente todos os números de telefone dos EUA
    • Como resultado, era possível fazer a associação número de telefone-UID e, ao combinar isso com os dados UID-PIN já expostos, completar o mapeamento número de telefone-PIN

Experimento de vazamento de dados de todos os usuários

  • O pesquisador escreveu um script em Python para enviar automaticamente requisições para todos os números de telefone da América do Norte (combinações de 7 dígitos × códigos de área)
    • Em cada requisição, eram enviados 40.000 números, com tempo médio de resposta de cerca de 1,5 segundo
    • Em 27 horas, todas as requisições foram processadas com sucesso, concluindo a coleta dos números de telefone de todos os usuários do Freedom Chat
  • O servidor respondia sem limitação de taxa nem bloqueios, deixando os dados em um estado de acesso totalmente aberto

Resposta e medidas posteriores

  • 2025-11-23: vulnerabilidade descoberta
  • 2025-12-04: o repórter da TechCrunch Zack Whittaker informou o Freedom Chat sobre a vulnerabilidade
  • 2025-12-05: o Freedom Chat respondeu que “o PIN não é usado para restaurar mensagens” e que já estava passando por um processo de auditoria
  • 2025-12-09: notificação de que o problema havia sido corrigido
  • 2025-12-11: publicação simultânea deste relatório e da matéria da TechCrunch

Principal lição

  • O Freedom Chat dizia oferecer “supersegurança”, mas faltavam elementos básicos de autenticação, limitação de taxa e proteção de dados na arquitetura
  • Como resultado, os números de telefone e os PINs de todos os usuários foram expostos, tornando ineficazes suas funções de segurança
  • O caso é considerado um exemplo representativo da distância entre marketing de segurança e implementação real

1 comentários

 
GN⁺ 2025-12-16
Comentários do Hacker News
  • O sistema criptografado de consulta de números de telefone do Signal é interessante
    Como o servidor consulta os números usando operação XOR em nível de bits em RAM criptografada por hardware, mesmo inspecionando o sistema no nível mais baixo não dá para saber se o número de telefone solicitado existe ou não
    Claro, rate limiting é uma questão importante à parte. Ao construir um sistema de segurança, há realmente muitos casos de borda que precisam ser cobertos

    • Não acho essa abordagem legal. Em primeiro lugar, um mensageiro seguro não deveria exigir um número de telefone, que é um identificador pessoal
    • Fico curioso se o Signal consegue impedir que um governo envie consultas para todos os números de telefone
      Em plataformas não comerciais e voltadas à privacidade como o Matrix, esse tipo de mapeamento deveria ser impossível
      Por exemplo, foi proposta uma forma de fazer upload do hash dos números de telefone para cada par de usuários, para que só pessoas que estão na lista de contatos umas das outras possam se encontrar
      A vantagem é que o espaço de hash é grande, então é difícil fazer engenharia reversa, e o usuário pode definir diretamente o escopo de descoberta permitido
      A desvantagem é que um invasor pode gerar todas as combinações de números e extrair relações de contato, e um governo também poderia interceptar a verificação por SMS e abusar disso
    • Essa parte de o servidor usar XOR em RAM criptografada por hardware é interessante. Queria saber se há material adicional sobre isso
    • Ainda é uma pena que ele continue exigindo número de telefone. Só recentemente foi adicionada a função de username para evitar expor o número, mas ainda incomoda o fato de a conta continuar baseada em SIM
    • Mas como não podemos compilar e operar os servidores do Signal por conta própria, não dá para ter certeza de que o servidor realmente faz esse processamento
  • O campo pin do objeto de usuário parece suspeito
    Talvez isso tenha acontecido por causa de uma biblioteca de serialização opt-out. Como por padrão ela serializa o objeto inteiro, se o desenvolvedor esquecer de configurar a exclusão de um campo específico, ele acaba sendo exposto diretamente
    Ou talvez o servidor simplesmente estivesse usando um dicionário JS e não removeu o campo antes de enviar a resposta
    Essa vulnerabilidade é um problema antigo mencionado em um artigo do grupo de pesquisa da Universidade de Viena, e em 2016 o Telegram foi explorado da mesma forma, permitindo ao governo iraniano coletar os números de telefone de 15 milhões de usuários
    Link relacionado: blog do Telegram

    • No meu emprego anterior, durante auditorias de código, encontrei esse tipo de vulnerabilidade de serialização em vários lugares. Os desenvolvedores precisam parar de usar essas bibliotecas
    • Esse tipo de problema é realmente comum. Campos sensíveis são enviados para o cliente, mas como não aparecem na UI, ninguém percebe
    • O vazamento do PIN já é um problema, mas o fato de ele estar armazenado em texto puro é ainda mais grave. Deveria ter sido tratado com um algoritmo de hash forte, como uma senha
  • Hoje em dia, a maioria das vulnerabilidades de segurança vem simplesmente de chamar endpoints HTTP de formas inesperadas
    Quando se fala em hacking em 2025, muita gente imagina técnicas complexas, mas a realidade é publicar uma API sem sequer rate limiting. É o tipo de problema que se resolveria com uma linha de configuração do Nginx

    • Quando leio “dá para resolver com uma linha de configuração do Nginx”, penso em uma resposta do tipo “isso não estava no tutorial de Docker, então não sei o que é”
    • O desenvolvimento de software avançou, mas os princípios de desenvolvimento seguro quase não evoluíram
      A maioria dos objetivos é reduzir atrito para o usuário e aumentar a eficiência comercial. Muitos desenvolvedores implementam funcionalidades sem conhecer vulnerabilidades básicas como XSS ou SSRF
    • Mesmo que seja uma configuração simples, você precisa saber que ela existe para aplicá-la
    • Antes eu achava que varreduras internas automatizadas de segurança eram inúteis, mas depois de ver tantos casos reais de configurações básicas faltando, passei a considerá-las indispensáveis
      Erros básicos de segurança como falhas no mapeamento de portas do Docker ou ausência de CSP são comuns demais
    • Mas só rate limiting não basta. Um invasor pode distribuir IPs e enviar requisições em paralelo
  • Ao ler a frase “quero oferecer aos leitores apenas os melhores posts de blog”, tive a sensação de ter encontrado alguém com uma mentalidade parecida com a minha

  • Fico curioso se o Freedom Chat® tem alguma função que impeça jornalistas de entrarem no chat em grupo. Estou perguntando meio de brincadeira, meio sério, por um amigo do DoD

  • Só neste ano já houve vários casos em que “apps de segurança” vazaram dados de usuários ao lidar com eles
    De cabeça, lembro de uns 20 centavos de dólar (=4 casos), mas provavelmente houve mais
    Casos relacionados: 1, 2, 3

    • Acho importante que este caso sirva de impulso para sair do Facebook Messenger
    • E isso é só uma parte do que sabemos
  • No ano passado, por acaso vi um quadro de vagas do GOP, e as candidaturas estavam armazenadas no mesmo índice de busca que os anúncios de emprego
    Quando pesquisei por “bob”, fiquei chocado ao ver que os currículos e respostas dos candidatos apareciam expostos ali mesmo

    • Fico curioso para saber que site era esse
  • Depois do caso Anom, precisamos de uma palavra melhor do que “honeypot
    Um mensageiro realmente seguro não vai surgir desse jeito. Mas o marketing continua, e novos usuários são atraídos toda vez

    • Hoje em dia, fracasso virou funcionalidade
      Vazamentos de dados acontecem com tanta frequência que as pessoas já ficaram dessensibilizadas. Até indenizações de ações coletivas acabam virando um processo de fornecer ainda mais dados pessoais
      Mercados de previsão, criptomoedas etc. também passam a sensação de empacotar como “sucesso” falhas estruturais que prejudicam os participantes
    • Surgiu a sugestão de um novo termo: “Petepot”
  • O Freedom Chat anunciou que “a correção do problema foi concluída”, mas fica a dúvida se foi corrigido mesmo

  • Se a frase “não tenho experiência em desenvolvimento de apps móveis, mas achei que não seria difícil porque sou inteligente” for uma citação real, soa quase como uma fala de stand-up comedy