- 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
- Réduire au minimum la surface d’attaque inutile
- Renforcer les garanties de sécurité du code C/C++ restant
- 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
Aucun commentaire pour le moment.