L'implémentation de Binder IPC pour Android, écrite en Rust, a été acceptée dans le noyau Linux 6.18.

Dans le code de base du noyau Linux, sur lequel est basé la version 6.18, l'implémentation du mécanisme de communication inter-processus Binder, écrite en Rust, a été adoptée. Binder est utilisé sur Android pour organiser la communication entre les processus et l'appel de méthodes à distance (un processus Android peut appeler une méthode ou une fonction dans un autre processus Android en utilisant Binder pour identifier, invoquer et transmettre des arguments entre les processus). Le code de Binder a été réécrit en Rust dans le cadre d'un projet visant à renforcer la sécurité, à promouvoir les pratiques de programmation sécurisée et à améliorer l'efficacité de la détection des problÚmes de gestion de la mémoire sur Android (environ 70 % de toutes les vulnérabilités critiques détectées sur Android sont causées par des erreurs de gestion de la mémoire).

L'utilisation de Rust a permis de rĂ©soudre certains problĂšmes auxquels Ă©taient confrontĂ©s les dĂ©veloppeurs de Binder, y compris les erreurs liĂ©es au comptage des rĂ©fĂ©rences, aux blocages et Ă  la vĂ©rification des limites, ainsi qu'Ă  rĂ©duire considĂ©rablement la complexitĂ© de la gestion des erreurs. L'implĂ©mentation de Binder en Rust est fonctionnellement Ă©quivalente Ă  la version originale en C, passe tous les tests AOSP (Android Open-Source Project) et peut ĂȘtre utilisĂ©e pour crĂ©er des versions fonctionnelles des firmwares Android. MalgrĂ© des capacitĂ©s avancĂ©es et le support d'objets avec une sĂ©mantique complexe de possession, le pilote en Rust est plus petit que la version en C — 5,5 par rapport Ă  5,8 milliers de lignes de code.

Dans la description du commit, l'auteur mentionne les motivations suivantes pour la réécriture de Binder :

  • Binder, qui existe depuis 15 ans, a vu sa fonctionnalitĂ© et sa complexitĂ© augmenter considĂ©rablement au fil du temps — le projet se situe Ă  la jonction de tous les composants d'Android et couvre de nombreuses tĂąches, allant au-delĂ  de l'IPC :
    • analyse et transformation correctes du contenu des transactions, qui peuvent contenir plusieurs objets de types diffĂ©rents (par exemple, des pointeurs, des descripteurs de fichiers), interagissant les uns avec les autres ;
    • contrĂŽle de la taille des pools de threads dans l'espace utilisateur et garantie de l'attribution des transactions aux threads de maniĂšre Ă  Ă©viter les blocages mutuels lors de l'Ă©puisement des threads dans le pool ;
    • suivi des compteurs de rĂ©fĂ©rences des objets partagĂ©s par plusieurs processus, en transmettant correctement les modifications des compteurs de rĂ©fĂ©rences entre les processus ;
    • Le traitement de nombreux scĂ©narios d'erreurs et la combinaison de 13 diffĂ©rents verrouillages, 7 compteurs de liens et de variables atomiques. Dans ce cas, il doit exĂ©cuter de telles tĂąches aussi rapidement et correctement que possible.
  • Le code ancien accumule une dette technique significative, ce qui complique la recherche d'erreurs ainsi que le dĂ©veloppement ultĂ©rieur. Par exemple, dans le noyau, il existe de grandes fonctions de plus de mille lignes de code, des mĂ©thodes de gestion des erreurs douteuses et des structures embrouillĂ©es.
  • Binder est un composant critique en termes de sĂ©curitĂ© dans Android, car les Ă©lĂ©ments de la plateforme fonctionnant dans des environnements sandbox isolĂ©s, comme le processus de rendu dans Chrome et SW Codec, y ont un accĂšs direct, et une vulnĂ©rabilitĂ© dans Binder permettrait de contourner cette isolation. La complexitĂ© Ă©levĂ©e, associĂ©e Ă  la dette technique, rend le maintien d'un niveau de sĂ©curitĂ© Ă©levĂ© dans Binder trĂšs difficile.

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster