Rust est déjà un favori pour le développement Android

Google a dévoilé récemment l'inclution langage de programmation Rouille parmi les langues autorisées pour le développement Android.

Depuis que le compilateur Rust a été inclus dans l'arborescence des sources Android en 2019, la prise en charge du langage est restée expérimentale. Certains des premiers composants Rust à être livrés sur Android sont de nouvelles implémentations du mécanisme de communication interprocessus de Binder et de la pile Bluetooth.

L'implémentation de Rust a été réalisé dans le cadre d'un projet de renforcement de la sécurité, promouvoir des techniques de codage sécurisées et améliorer l'efficacité de l'identification des problèmes lors de l'utilisation de la mémoire sous Android. On observe qu'environ 70% de toutes les vulnérabilités dangereuses identifiées dans Android sont causées par des erreurs lors du travail avec la mémoire.

L'utilisation du langage Rust, Quoi se concentre sur la gestion sûre de la mémoire et fournit une gestion automatique de la mémoire, cela réduira le risque de vulnérabilités causées par des erreurs lors de la gestion de la mémoire, telles que l'accès à une zone mémoire après qu'elle a été libérée et le dépassement des limites de la mémoire tampon.

La gestion sécurisée de la mémoire est assurée dans Rust au moment de la compilation en vérifiant les références, en suivant la propriété et la durée de vie des objets (portée), ainsi qu'en évaluant l'exactitude de l'accès à la mémoire au moment de l'exécution.

Calme fournit également des moyens de protection contre les débordements entier, nécessite l'initialisation obligatoire des valeurs de variable avant utilisation, gère mieux les erreurs dans la bibliothèque standard, adopte le concept de références et de variables immuables par défaut et offre une écriture statique forte pour minimiser les erreurs logiques.

Sur Android, la gestion sécurisée de la mémoire est fournie dans les langages Kotlin et Java déjà pris en charge, mais ne convient pas au développement de composants système en raison d'une surcharge importante.

Rust permet d'atteindre une performance proche des langages C et C ++, lui permettant d'être utilisé pour développer des parties de bas niveau de la plate-forme et des composants pour s'interfacer avec le matériel.

Pour garantir la sécurité du code C et C ++, Android utilise l'isolement sandbox, l'analyse statique et les tests de fuzzing. Les capacités d'isolation du bac à sable sont limitées et ont atteint la limite de leurs capacités (une fragmentation supplémentaire des processus n'est pas pratique du point de vue de la consommation des ressources).

Parmi les limites de l'utilisation de sandbox, ils mentionnent la surcharge élevée et la consommation de mémoire plus élevée causées par la nécessité de générer de nouveaux processus, ainsi que la latence supplémentaire associée à l'utilisation d'IPC.

Dans le même temps, le bac à sable n'élimine pas les vulnérabilités du code, mais réduit seulement les risques et complique l'attaque, puisque l'exploitation nécessite l'identification non pas d'une, mais de plusieurs vulnérabilités.

Les méthodes de test de code sont limitées car, pour détecter les erreurs, vous devez créer les conditions de la manifestation du problème. Il n'est pas possible de couvrir toutes les options possibles, de nombreuses erreurs passent donc inaperçues.

Pour les processus système sur Android, Google adhère à la `` règle de deux ''Selon dont tout code ajouté ne doit pas remplir plus de deux conditions sur trois- Travaillez avec des données d'entrée non vérifiées, utilisez un langage de programmation non sécurisé (C / C ++) et exécutez sans isolation de bac à sable dur (avec des privilèges élevés).

Il découle de cette règle que le code pour traiter les données externes doit être réduit au moindre privilège (isolé) ou écrit dans un langage de programmation sécurisé.

Google n'a pas pour objectif de réécrire le code C / C ++ existant dans Rust, mais il envisage d'utiliser ce langage pour développer un nouveau code.

Il est logique d'utiliser Rust pour le nouveau code, car statistiquement la plupart des erreurs apparaissent dans le code nouveau ou récemment modifié. En particulier, environ 50% des erreurs de mémoire détectées dans Android le sont dans du code écrit il y a moins d'un an.

source: https://security.googleblog.com


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   miguel rodríguez dit

    L'ironie, quand votre plus gros concurrent finit par adopter quelque chose que vous avez aidé à développer pour vos propres besoins… La rouille est à la hausse.