Pixel plus sûr grâce à Rust: Google intègre le DNS dans le modem et réduit la surface d'attaque

Publié 5 min de lectura 82 lecture

Google a pris une étape remarquable dans la protection de ses téléphones Pixel en intégrant un analyseur DNS écrit dans Rust dans le firmware modem. Il s'agit d'une décision qui non seulement réduit les risques spécifiques dans un élément critique de la pile de communications, mais sert également d'expérience pratique sur ce que signifie apporter des langues avec la sécurité de la mémoire à des couches très proches du matériel.

Rust fournit des garanties de sécurité contre les erreurs de mémoire classiques tels que les débordements de tampon ou les accès hors gamme, qui sont précisément les vulnérabilités qui permettent souvent des attaques à distance sur le baseball (le processeur qui gère les radios cellulaires). C'est pourquoi Google a choisi de mettre en œuvre l'analyseur DNS avec une bibliothèque dans Rust: la gestion des paquets DNS est une dépendance fondamentale sur les réseaux mobiles modernes et, quand il est fait avec le code qui ne protège pas la mémoire, il peut devenir une passerelle pour les exploits.

Pixel plus sûr grâce à Rust: Google intègre le DNS dans le modem et réduit la surface d'attaque
Image générée avec IA.

La boîte à outils que Google a déployée sur le modem ne se limite pas à Rust. Ces dernières années, l'entreprise a documenté l'utilisation intensive des désinfectants pour détecter les comportements indéfinis dans le temps de mise en œuvre - des outils tels que ceux offerts par le projet LLVM / Clang pour détecter les débordements et les violations des frontières pendant le développement - et d'autres mesures spécifiques pour atténuer les attaques contre les anciennes technologies telles que 2G. Si vous voulez entrer dans la façon dont ces désinfectants fonctionnent, la documentation LLVM est un bon point de départ: https: / / clang.llvm.org / docs / Sanitizers.html.

L'objectif technique qui sous-tend cette migration est clair : réduire la « surface d'attaque » qui survient lorsque des composants critiques restent implémentés dans des langues qui permettent des erreurs de mémoire. Google a souligné que certaines vulnérabilités réelles dans les composants de réseau ont exploité précisément l'accès en dehors des limites de mémoire; un exemple publiquement identifié avec son entrée correspondante dans le catalogue de vulnérabilité est CVE-2024-27227 qui illustre le type de problèmes que ces mesures tentent d'éviter.

Pour mettre en œuvre DNS dans l'environnement de modem restreint, Google a adapté le taux Rust connu sous le nom de "hickory-proto", un client / serveur / résoudre DNS développé dans la communauté Rust. La version utilisée a été modifiée pour fonctionner dans des environnements "bare metal" et gaufrés, ce qui signifie changer les hypothèses habituelles d'un système d'exploitation complet. La gestion des unités introduites par ce taux a été facilitée, selon l'entreprise, par un outil interne appelé "cargo-gnaw" qui aide à résoudre et maintenir plus de 30 unités dérivées de l'intégration.

L'intégration technique a suivi un schéma d'interopérabilité pragmatique: Google a déclaré l'interface d'analyse de réponse DNS en C, puis l'a implémenté dans Rust. Rust retourne un code entier qui représente le résultat de l'opération; quand il est nécessaire de mettre à jour les structures de données en mémoire qui sont déjà gérées par le code C existant, l'implémentation Rust invoque les fonctions C précédentes pour effectuer ces modifications. Cette approche hybride évite de réécrire complètement la base de code C validée et permet une adoption progressive de code sûr par mémoire.

Cependant, l'adoption de Rust dans un firmware avec des ressources limitées pose également des défis. Les caisses de Rust ne sont pas toujours conçues pour les environnements avec des restrictions de taille de code et de mémoire ; Google suggère donc que l'optimisation supplémentaire peut être réalisée en utilisant des drapeaux caractéristiques qui vous permettent de compiler uniquement les éléments nécessaires, réduisant l'empreinte binaire et la surface exposée par un code inutile.

Au-delà du cas spécifique de l'analyseur DNS, ce travail s'inscrit dans une tendance plus large : l'industrie des logiciels embarqués et des systèmes d'exploitation mobiles explore et adopte de plus en plus des langages et des techniques qui limitent les classes d'erreur les plus dangereuses. Android, par exemple, maintient la documentation et des guides sur sa stratégie d'adoption de langages sûrs dans les parties critiques du système: https: / / source.android.com / docs / sécurité / mémoire-sécurité. Et le langage propre de Rust, né avec la sécurité de la mémoire comme une priorité, explique sur son site web pourquoi ce modèle réduit beaucoup des erreurs classiques: https: / / www.rust-lang.org.

Pixel plus sûr grâce à Rust: Google intègre le DNS dans le modem et réduit la surface d'attaque
Image générée avec IA.

Quelles sont les implications pratiques pour les utilisateurs et l'industrie? À court terme, cela signifie que des dispositifs comme Pixel 10 peuvent résister à de meilleures tentatives d'exploitation qui cherchent à compromettre le modem. À moyen et long terme, l'expérience du transport et de l'exploitation de composants critiques dans Rust fournira des leçons précieuses sur l'interopérabilité, la gestion d'unité et l'optimisation pour les environnements restreints, et pourrait accélérer plus de parties du système - à la fois sur Android et sur d'autres produits - migre vers le code avec des garanties de sécurité plus strictes.

Ce n'est pas une solution magique, mais une avancée significative: réduire les classes entières de vulnérabilité grâce aux décisions de conception de langage et d'architecture améliore la position de sécurité d'un appareil depuis sa base. La clé sera maintenant de comprendre les coûts de maintenance, les impacts sur la taille du firmware et les meilleures pratiques pour combiner le code Rust et C en composants critiques sans introduire de nouveaux fragments.

Si vous êtes intéressé à lire sur les vulnérabilités historiques des études de baseball et de sécurité sur les radios cellulaires, ainsi que les initiatives techniques de Google dans ce domaine, vous pouvez consulter les contributions et les ressources publiques de la société et de la communauté de la sécurité: Google blog de sécurité et la documentation Android sont de bons points de départ pour approfondir. Un exemple de documentation officielle sur la sécurité Android est disponible sur https: / / source.android.com / sécurité, qui recueille les rapports et les guides relatifs à cet effort.

Couverture

Autres

Plus de nouvelles sur le même sujet.