6 points par GN⁺ 2026-01-29 | 1 commentaires | Partager sur WhatsApp
  • WhatsApp, qui compte plus de 3 milliards d’utilisateurs, a introduit une couche de sécurité basée sur Rust afin de renforcer sa défense contre les menaces liées aux malwares
  • La bibliothèque de cohérence des médias a été réécrite en Rust puis déployée sur des dizaines de milliards d’appareils et de navigateurs, validant son usage en conditions réelles à l’échelle mondiale
  • 160 000 lignes de code C++ existant ont été remplacées par 90 000 lignes de Rust, avec des améliorations à la fois en performances et en efficacité mémoire
  • Après la vulnérabilité Stagefright de 2015, l’entreprise a cherché à améliorer la sûreté du traitement des fichiers multimédias en adoptant des langages à sûreté mémoire comme Rust
  • Ce changement marque un tournant dans la stratégie de sécurité de WhatsApp, Messenger et Instagram, avec une place croissante accordée aux langages à sûreté mémoire

Stratégie de traitement des médias de WhatsApp

  • WhatsApp est un service de messagerie chiffrée de bout en bout utilisé par plus de 3 milliards de personnes, et fait évoluer sa stratégie pour répondre à des menaces de sécurité permanentes
    • Lorsque les utilisateurs partagent des images, vidéos et autres médias, il existe un risque qu’ils contiennent des malwares
    • Certains fichiers peuvent exploiter des vulnérabilités non corrigées du système d’exploitation ou de l’application
  • Pour s’en prémunir, WhatsApp a introduit le langage Rust dans sa fonctionnalité de partage de médias afin d’assurer la sûreté mémoire
    • Il s’agit, selon l’entreprise, de l’un des plus grands déploiements d’une bibliothèque basée sur Rust au monde

La vulnérabilité Android Stagefright de 2015 et la réponse apportée

  • En 2015, la vulnérabilité Stagefright d’Android se trouvait dans une bibliothèque de traitement multimédia au niveau de l’OS, ce qui la rendait impossible à corriger au niveau applicatif
  • WhatsApp a modifié sa propre bibliothèque C++ « wamedia » afin de détecter les fichiers non conformes au standard MP4
    • Cela a permis de protéger les utilisateurs sans attendre une mise à jour du système d’exploitation
  • Cependant, comme wamedia traite automatiquement des entrées non fiables, la nécessité d’une transition vers un langage à sûreté mémoire s’est imposée

Transition vers Rust : réécriture à grande échelle et résultats

  • WhatsApp a développé une version Rust de wamedia en parallèle de la version C++ existante
    • La compatibilité entre les deux implémentations a été vérifiée par differential fuzzing, des tests d’intégration et des tests unitaires
  • Au départ, la taille accrue des binaires due à la bibliothèque standard de Rust et des problèmes de compatibilité avec le système de build se sont posés, mais un cadre de support à long terme a été mis en place
  • Au final, le remplacement de 160 000 lignes de C++ par 90 000 lignes de Rust a amélioré à la fois les performances et l’efficacité de l’usage mémoire
  • Le déploiement complet de la version Rust sur toutes les plateformes — Android, iOS, Mac, Web, wearables, etc. — a été mené à bien
  • Ensuite, le système « Kaleidoscope » a été introduit pour détecter les types de fichiers à risque comme les PDF ou les exécutables, ainsi que l’usurpation d’extension ou le spoofing MIME

L’approche sécurité de WhatsApp

  • WhatsApp opère plusieurs couches de sécurité, dont le chiffrement de bout en bout, les sauvegardes chiffrées, la transparence des clés et des protections pour les appels
  • Les risques sont identifiés via la publication des CVE, des audits de sécurité internes et externes, le fuzzing et l’analyse statique, la gestion de la supply chain et l’analyse de la surface d’attaque
  • Le programme Bug Bounty a été élargi, avec la mise à disposition d’un Research Proxy permettant aux chercheurs d’analyser le protocole réseau de WhatsApp
  • Constatant qu’une grande partie des vulnérabilités majeures provient de problèmes de sûreté mémoire en C/C++, l’entreprise poursuit trois stratégies en parallèle
    1. Réduire au minimum la surface d’attaque inutile
    2. Renforcer les garanties de sécurité du code C/C++ restant
    3. Faire des langages à sûreté mémoire la langue par défaut pour le nouveau code

Accélération de l’adoption de Rust et orientation future

  • Rust permet à WhatsApp de développer des bibliothèques de sécurité hautes performances et cross-platform
  • Ce changement fournit une couche de sécurité supplémentaire invisible pour l’utilisateur, dans le cadre d’une stratégie de defense-in-depth
  • Les équipes sécurité de WhatsApp et Meta étendent actuellement les domaines où Rust a le plus d’impact et prévoient d’accélérer son adoption à l’avenir

1 commentaires

 
GN⁺ 2026-01-29
Réactions sur Hacker News
  • WhatsApp est une messagerie utilisée par 3 milliards de personnes chaque jour
    Aux États-Unis, elle est peu utilisée, mais à l’échelle mondiale, elle s’est imposée comme une infrastructure de communication de base
    Si l’on veut créer un produit pour le marché mondial, il faut comprendre la façon de penser et les habitudes de ces utilisateurs

    • En tant qu’Européen, je refuse toujours d’installer WhatsApp
      Il reste encore quelques dizaines de personnes indépendantes comme ça
      S’il vous plaît, n’aidez pas à rendre WhatsApp encore plus incontournable
    • Là où je vis, au Malawi, WhatsApp est bien plus utilisé que l’e-mail
      La plupart des gens consultent très peu leurs e-mails
      Je gère une communauté de développeurs, et on atteint souvent la limite de taille des groupes (1024 personnes)
      Même quand on essaie de basculer vers Discord ou Slack, on finit par revenir à WhatsApp
      Parce qu’avec les forfaits data des opérateurs, WhatsApp est en pratique gratuit
    • Sur les marchés où WhatsApp est installé, la qualité baisse déjà avec la hausse de la publicité et du spam
      TechCrunch a publié plusieurs articles sur le spam des messages d’entreprise, mais dans les faits, presque rien n’a changé
      L’UX des fonctionnalités communautaires n’est pas terrible non plus
      Au final, le vrai problème est selon moi l’aggravation de la dépendance à l’écosystème Facebook
    • Honnêtement, le chiffre de 3 milliards me semble exagéré
      Je n’utilise plus WhatsApp depuis 10 ans, et la plupart de mes amis et de ma famille sont passés à Signal
      En Europe, il y a encore des régions où Viber est utilisé
    • Parmi les utilisateurs d’Amérique du Nord ou d’Europe, il y en a sans doute environ 200 millions qui génèrent réellement du revenu
  • Ils disent que c’est le plus gros déploiement d’une bibliothèque écrite en Rust, mais en réalité Fontations est peut-être plus gros
    C’est inclus dans Chromium, et si l’on tient compte de ses dépendances, la base installée est peut-être plus large
    À en juger par la citation, WhatsApp ne semble pas utiliser directement libsignal

    • À noter que Wamedia est intégré aux principales applications de Meta et déployé sur iOS, Android, Desktop et le Web
    • Chromium inclut déjà plusieurs bibliothèques Rust
      Par exemple : image-png, CrabbyAvif, qr_code, icu4x
  • Le fait que le code soit passé de 160 000 à 90 000 lignes est bien, mais la stratégie de déploiement en parallèle est encore plus intéressante
    Faire tourner en même temps les versions Rust et C++ et vérifier leur équivalence avec du differential fuzzing est une approche réaliste
    Sur les clients mobiles, la taille du binaire est importante, donc l’investissement dans l’outillage de build est impressionnant

    • Je me demande s’ils ont utilisé no_std ou s’ils ont recomposé la bibliothèque standard
      C’est peut-être une optimisation possible uniquement avec des builds nightly
  • Dans ce type de réécriture, la partie la plus difficile n’est pas tant l’implémentation Rust que le maintien de la compatibilité avec les bugs de l’ancien parseur
    Les vrais fichiers multimédias sont souvent mal formés, et parser de manière trop stricte finit par casser les données des utilisateurs
    Le differential fuzzing est pratiquement la seule approche vraiment praticable

    • Wamedia semble avoir été conçu précisément sans chercher à préserver une compatibilité avec les bugs
    • Ça ressemble peut-être à un commentaire écrit par une IA
  • Dire que WhatsApp a fait le plus gros déploiement en Rust signifie probablement que cela tourne sur plus d’appareils que Windows 11
    En revanche, on peut se demander si WhatsApp utilise vraiment libsignal directement

    • WhatsApp n’utilise pas libsignal
      Android lui-même inclut déjà beaucoup de code basé sur Rust, et Rust est aussi largement utilisé sur les appareils embarqués
    • La vidéo Microsoft is Getting Rusty montre que l’adoption de Rust se fait surtout du côté d’Azure,
      tandis que Windows reste encore centré sur le C/C++
  • Il est dit que l’introduction de la bibliothèque standard Rust a entraîné une augmentation de la taille du binaire, mais il n’est pas précisé comment cela a été résolu

    • Ils ont probablement utilisé no_std là où c’était possible
      Commits liés : commit1, commit2
    • Ils ont sans doute accepté un surcoût d’environ 300 KB
      Le problème n’est pas tant la taille elle-même que les dépendances Rust dupliquées
      Dans un build mêlant C++ et Rust, chacun embarque son propre libstd, d’où la nécessité d’un système de build unifié comme Bazel
    • En pratique, ils ont beaucoup investi dans l’optimisation du système de build
      Au départ, ils acceptaient un surcoût d’environ 200 KiB, mais la migration vers Buck2 a réduit à la fois la taille et les temps de build
      Grâce aux optimisations récentes de clang et aux améliorations de la LTO
    • À titre de référence, il existe aussi des approches comme min-sized-rust
    • Globalement, le texte donnait plus une impression de PR que de détails techniques
  • Je me demande si Signal tente quelque chose de similaire
    libsignal est implémenté en Rust, mais je ne sais pas grand-chose du reste

  • Il y avait cette formule disant qu’ils fournissent par défaut du chiffrement de bout en bout à 3 milliards de personnes, mais il y a aussi eu des infos disant qu’ils pouvaient lire les messages

    • Le mot « par défaut » est sans doute le point clé
      Skype aussi était chiffré par défaut, mais cela pouvait être désactivé selon la configuration du serveur
    • Tout chiffrement dépend au final de qui est considéré comme l’extrémité
      La vraie question est de savoir si l’on peut faire confiance à Meta pour ne pas regarder les données
  • Il est ironique que Meta soit si actif sur d’autres sujets tout en ne bloquant pas le phishing ni les arnaques aux cartes prépayées

  • Le fait que l’adoption de Rust ait fortement réduit le nombre de bugs est impressionnant

    • La robustesse de Rust ne vient pas seulement de la prévention des erreurs mémoire
      Le C++ comporte quantité de comportements indéfinis (UB), alors que Rust les bloque structurellement
      Grâce à son système de types puissant, la fiabilité s’en trouve nettement améliorée