6 pontos por GN⁺ 2026-01-29 | 1 comentários | Compartilhar no WhatsApp
  • O WhatsApp, com mais de 3 bilhões de usuários, introduziu uma camada de segurança baseada em Rust para reforçar a defesa contra ameaças de malware
  • A biblioteca de consistência de mídia foi reescrita em Rust e distribuída para bilhões de dispositivos e navegadores, concluindo a validação em uso real em escala global
  • As 160 mil linhas de código existentes em C++ foram substituídas por 90 mil linhas em Rust, melhorando tanto o desempenho quanto a eficiência de memória
  • Após a vulnerabilidade Stagefright de 2015, a empresa vinha promovendo a adoção de linguagens com segurança de memória, como Rust, para aumentar a segurança no processamento de arquivos de mídia
  • Essa mudança marca um ponto de virada na estratégia de segurança do WhatsApp, Messenger e Instagram, ampliando o peso de linguagens com segurança de memória

Estratégia de processamento de mídia do WhatsApp

  • O WhatsApp é um serviço de mensagens com criptografia de ponta a ponta usado por mais de 3 bilhões de pessoas e vem evoluindo sua estratégia para responder a ameaças de segurança contínuas
    • Quando usuários compartilham mídias como imagens e vídeos, existe a possibilidade de conteúdo malicioso estar embutido
    • Alguns arquivos podem explorar vulnerabilidades não corrigidas do sistema operacional ou do aplicativo
  • Para evitar isso, o Rust foi introduzido no recurso de compartilhamento de mídia para garantir segurança de memória
    • Isso é citado como um dos maiores casos de distribuição de biblioteca baseada em Rust em escala global

A vulnerabilidade Android Stagefright de 2015 e a resposta

  • A vulnerabilidade Stagefright do Android em 2015 existia em uma biblioteca de processamento de mídia no nível do sistema operacional, o que impossibilitava correção no nível do aplicativo
  • O WhatsApp então modificou sua própria biblioteca em C++, “wamedia”, para detectar arquivos fora do padrão MP4
    • Com isso, foi possível proteger usuários sem depender de atualizações do sistema operacional
  • No entanto, como o wamedia processa automaticamente entradas não confiáveis, surgiu a necessidade de migrar para uma linguagem com segurança de memória

Migração para Rust: grande reescrita e resultados

  • O WhatsApp desenvolveu uma versão em Rust do wamedia em paralelo com a versão existente em C++
    • Differential fuzzing, testes de integração e testes unitários foram usados para verificar a compatibilidade entre as duas implementações
  • No início, houve problemas de aumento do tamanho do binário por causa da biblioteca padrão do Rust e de compatibilidade com o sistema de build, mas foi criada uma estrutura de suporte de longo prazo
  • Como resultado, houve a substituição de 160 mil linhas em C++ → 90 mil linhas em Rust, com melhoria tanto no desempenho quanto na eficiência no uso de memória
  • A implantação completa da versão em Rust foi concluída em todas as plataformas, incluindo Android, iOS, Mac, Web e wearables
  • Depois, foi introduzido o sistema “Kaleidoscope” para detectar tipos de arquivo de risco, como PDFs e executáveis, além de identificar falsificação de extensão e MIME spoofing

Abordagem de segurança do WhatsApp

  • O WhatsApp opera várias camadas de segurança, incluindo criptografia de ponta a ponta, backups criptografados, transparência de chaves e proteções de chamadas
  • A empresa identifica riscos por meio de divulgação de CVEs, auditorias de segurança internas e externas, fuzzing e análise estática, gestão da cadeia de suprimentos e análise de superfície de ataque
  • O programa Bug Bounty foi ampliado para oferecer um Research Proxy, permitindo que pesquisadores analisem o protocolo de rede do WhatsApp
  • Foi constatado que grande parte das vulnerabilidades importantes tem origem em problemas de segurança de memória em C/C++, e três estratégias vêm sendo aplicadas em paralelo
    1. Minimizar superfícies de ataque desnecessárias
    2. Reforçar as garantias de segurança do código C/C++ remanescente
    3. Mudar a linguagem padrão de novos códigos para uma linguagem com segurança de memória

Aceleração da adoção de Rust e direção futura

  • O Rust possibilita ao WhatsApp desenvolver bibliotecas de segurança de alto desempenho e multiplataforma
  • Essa mudança fornece aos usuários uma camada extra de segurança invisível, como parte de uma estratégia de defesa em profundidade (defense-in-depth)
  • As equipes de segurança do WhatsApp e da Meta estão ampliando as áreas de aplicação de alto impacto do Rust e planejam acelerar sua adoção no futuro

1 comentários

 
GN⁺ 2026-01-29
Comentários do Hacker News
  • O WhatsApp é um mensageiro usado por 3 bilhões de pessoas por dia
    Nos EUA ele não é tão usado, mas globalmente já se consolidou como uma infraestrutura básica de comunicação
    Se você quer criar um produto para o mercado global, precisa entender a mentalidade e os hábitos desses usuários

    • Como europeu, eu ainda me recuso a instalar o WhatsApp
      Ainda existem pelo menos algumas dezenas de pessoas independentes assim
      Por favor, não participem de tornar o WhatsApp ainda mais inevitável
    • Em Malawi, onde eu moro, o WhatsApp é muito mais usado do que e-mail
      A maioria das pessoas quase não checa e-mail
      Eu administro uma comunidade de desenvolvedores e frequentemente bato no limite do grupo (1024 pessoas)
      Mesmo tentando migrar para Discord ou Slack, no fim todo mundo volta para o WhatsApp
      Isso porque, graças aos pacotes de dados das operadoras, o WhatsApp é praticamente grátis
    • Nos mercados em que o WhatsApp já se estabeleceu, a qualidade já está caindo com o aumento de anúncios e spam
      A TechCrunch já publicou várias matérias sobre spam de mensagens empresariais no WhatsApp, como esta, mas na prática quase nada mudou
      A UX do recurso de comunidades também não é boa
      No fim, acho que o problema é o aprofundamento da dependência do ecossistema do Facebook
    • Sinceramente, esse número de 3 bilhões parece inflado
      Eu não uso WhatsApp há 10 anos, e a maioria dos meus amigos e familiares também migrou para o Signal
      Na Europa ainda existem regiões onde o Viber continua sendo usado
    • Entre usuários da América do Norte e da Europa, acho que só uns 200 milhões realmente geram receita
  • Foi dito que seria uma das maiores implantações de uma biblioteca escrita em Rust, mas na prática Fontations talvez seja ainda maior
    Está incluída no Chromium e, considerando suas dependências, a base instalada pode ser mais ampla
    Pela citação, parece que o WhatsApp não usou libsignal diretamente

    • Só para referência, o Wamedia é incluído nos principais apps da Meta e distribuído em iOS, Android, Desktop e Web
    • O Chromium já inclui várias bibliotecas Rust
      Ex.: image-png, CrabbyAvif, qr_code, icu4x
  • É bom que o código tenha caído de 160 mil para 90 mil linhas, mas a estratégia de rollout paralelo é ainda mais interessante
    Rodar as versões em Rust e em C++ ao mesmo tempo e validar a equivalência com differential fuzzing foi uma abordagem bem realista
    Em clientes móveis, o tamanho do binário é importante, e foi impressionante ver o investimento em tooling de build

    • Fiquei curioso se eles usaram no_std ou reorganizaram a biblioteca padrão
      Talvez seja uma otimização disponível só em builds nightly
  • A parte mais difícil nesse tipo de rewrite não é a implementação em Rust em si, mas manter a compatibilidade com bugs do parser existente
    Arquivos de mídia reais frequentemente estão malformados, e fazer um parsing rígido demais pode quebrar dados dos usuários
    Na prática, differential fuzzing é quase a única abordagem viável

    • O Wamedia parece ter sido projetado deliberadamente sem o objetivo de manter compatibilidade com bugs
    • Isso até parece um comentário escrito por IA
  • Dizer que o WhatsApp fez a maior implantação de Rust provavelmente significa que ele roda em mais dispositivos que o Windows 11
    Ainda assim, fica a dúvida se o WhatsApp usa libsignal diretamente

    • O WhatsApp não usa libsignal
      O próprio Android já inclui bastante código baseado em Rust, e ele também é amplamente usado em dispositivos embarcados
    • Pelo vídeo Microsoft is Getting Rusty, a adoção de Rust está acontecendo mais no lado do Azure,
      enquanto o Windows continua centrado em C/C++
  • Foi mencionado que houve aumento no tamanho do binário com a adoção da biblioteca padrão do Rust, mas não ficou claro como isso foi resolvido

    • Provavelmente usaram no_std onde era possível
      Commits relacionados: commit1, commit2
    • É bem possível que tenham simplesmente aceitado um overhead de cerca de 300 KB
      O problema não é tanto o tamanho em si, mas as dependências Rust duplicadas
      Em builds mistos de C++ e Rust, cada lado inclui sua própria libstd, então é preciso um sistema de build unificado como o Bazel
    • Na prática, eles investiram bastante em otimização do sistema de build
      No começo aceitaram um overhead de cerca de 200 KiB, mas com a migração para o Buck2 reduziram tanto o tamanho quanto o tempo de build
      Isso graças às otimizações mais recentes do clang e às melhorias em LTO
    • Como referência, existe também uma abordagem como min-sized-rust
    • No geral, o texto pareceu ter mais cara de PR do que de detalhamento técnico
  • Fiquei curioso se o Signal está tentando algo parecido
    O libsignal é implementado em Rust, mas não sei muito sobre o resto

  • Havia a frase “fornece criptografia de ponta a ponta por padrão para 3 bilhões de pessoas”, mas também já houve notícias dizendo que as mensagens podiam ser lidas

    • A palavra “por padrão” provavelmente é a chave aqui
      O Skype também era criptografado por padrão, mas isso podia ser desativado dependendo da configuração do servidor
    • No fim, toda criptografia depende de quem são as pontas
      A questão é se dá para confiar que a Meta não esteja bisbilhotando os dados
  • É irônico que a Meta se esforce tanto em outras coisas enquanto não bloqueia phishing nem golpes com cartão pré-pago

  • Foi impressionante ver que a adoção de Rust reduziu bastante os bugs

    • A estabilidade do Rust não vem apenas da prevenção de erros de memória
      O C++ tem uma enorme quantidade de comportamento indefinido (UB), mas o Rust bloqueia isso de forma estrutural
      Graças ao seu forte sistema de tipos, a confiabilidade melhora muito