Nouveautés chez GrapheneOS : marché d'applications, Android 12.1 et améliorations

Passage en revue des dernières nouveautés et améliorations apportées par GrapheneOS ces derniers mois : Android 12.1, nouveau marché d'applications, et améliorations diverses.

Nouveautés chez GrapheneOS : marché d'applications, Android 12.1 et améliorations

Désireux de partager régulièrement des nouvelles au sujet de GrapheneOS pour la sphère francophone, je propose cet article afin que nous puissions nous retrouver encore pour aborder l'actualité de ce système d'exploitation. Si vous ne savez pas ce qu'est GrapheneOS, je vous invite à parcourir les différents articles à ce sujet :

GrapheneOS : présentation en détails de l’OS et du projet
GrapheneOS est un système d’exploitation mobile basé sur le code source d’Android (AOSP), compatible avec son écosystème d’applications, et visant à renforcer la sécurité et la vie privée. Revenons ensemble sur l’état de cet OS open-source alternatif en 2021 !
GrapheneOS et Play services : comment ça marche ?
GrapheneOS a récemment développé une méthode de compatibilité avec les Google Play services, permettant d’accroître sa compatibilité avec les applications Android. Regardons en détails le fonctionnement de cette méthode alternative.
Quoi d’neuf chez GrapheneOS ? Android 12, nouvelle app Camera, Play Store, support du Pixel 6...
Revue des dernières nouveautés et améliorations apportées par GrapheneOS ces derniers mois : Android 12, nouvelle application Camera, Play Store fonctionnel, et support du Pixel 6.

Le premier article cité est une revue générale de GrapheneOS faite l'année dernière, quand l'OS était encore basé sur Android 11 et ne supportait pas encore les Play services. Néanmoins, une grande partie du contenu est toujours d'actualité, notamment la philosophie du projet ainsi que les mesures de protection principales qui ont fait sa renommée.

Sans plus attendre, effleurons quelques nouveautés de ces derniers mois (mais aussi certaines à venir) !

Android 12.1 : plus de couleurs... plus de vibrations ?

Dévoilé sous le nom de "Android 12L", Android 12.1 est en faite la seconde mise à jour trimestrielle de maintenance d'Android 12, qui apporte son lot de petites nouveautés et d'améliorations.

Pour les développeurs, Android 12.1 introduit le niveau d'API 32.

L pour Large

L'amélioration majeure était attendue du côté du support des écrans à taille large, notamment les tablettes, mais aussi les smartphones pliables (cela concorde notamment avec des rumeurs sur un potentiel Pixel Fold).

Google
Google

Une amélioration qui devrait bénéficier également à l'écosystème des applications Android qui ne sont pas toutes forcément pensées pour ces types d'écran. Google n'avait pas autant apporté d'attention depuis Android Honeycomb qui était une itération carrément réservée aux tablettes (il y a plus de 10 ans déjà). Peu à peu, ChromeOS prenait directement la place d'Android sur les tablettes, en allant jusqu'à supporter les applications Android avec le Play Store, mais aussi Linux avec Crostini.

On peut peut-être s'attendre à des offres plus évoluées du côté d'Android directement désormais... et qui sait, GrapheneOS sur tablette sera peut-être envisageable ?

Je pense que c'est à suivre de près, tant la frontière entre tablette et laptop peut s'estomper de nos jours. Aujourd'hui, il est clair que l'iPad domine dans ce secteur, que ce soit dans son écosystème d'applications ou d'accessoires. Bien que l'iPad est un appareil que j'apprécie particulièrement (mon appareil préféré chez Apple, en fait), je ne peux cacher mon excitation pour assister au grand retour d'Android sur ces formats d'appareils qui ont été délaissés.

Je ne vais pas m'attarder dessus, je vous invite à regarder par vous-même :

12L: A new look for Android’s larger screens
12L introduces new features for Android’s larger screens including tablet and foldables.

Rendez la Monet !

Android 12.1 apporte également Monet, la fonction emblématique de la refonte Material You permettant à Android 12 d'adapter ses couleurs au fond d'écran choisi. Bien que Monet existait déjà sur l'OS stock, son code source n'était pas ouvert, car il n'était pas encore intégré à AOSP. C'est désormais chose faite…

Google

Cependant, GrapheneOS préfère ne pas l'activer par défaut. En effet, Monet a des implications en matière de vie privée : par exemple, les couleurs utilisées constituent un identifiant qui peut être récupéré par les applications. Pas de panique pour les utilisateurs qui souhaitent l'utiliser : il est prévu d'ajouter un toggle pour activer la fonctionnalité, et potentiellement d'ajouter un système de choix manuel de la palette de couleurs.

Danny Lin (@kdrag0n)
Repainter 1.1.0 is out! • Separate accent and background color selection (works without root on Pixel and Samsung devices)• QS tile to toggle theming • Themed app icon on Android 13• Many UI/UX improvements and bug fixes https://repainter.kdrag0n.dev/play

Un tel système pourrait ressembler à l'implémentation de @kdrag0n, développeur de ProtonAOSP et contributeur de GrapheneOS également, que vous connaissez peut-être aussi pour avoir massivement contribué à la couche de compatibilité permettant aux Play services de fonctionner sur GrapheneOS de façon isolée. Je vous conseille de le suivre par la même occasion, il fait des choses très ludiques avec Android !

Nous avons parcouru globalement les nouveautés majeures d'Android 12.1, et comme vous l'aurez remarqué, vous n'en bénéficierez pas forcément directement. Outre ces nouveautés, Android 12.1 apporte quelques améliorations et changements : des bugs sont corrigés (notamment la barre de recherche du tiroir d'applications), certains menus sont revus, des retours haptiques sont ajoutés... La mise à jour contient également des correctifs de sécurité, il est donc important de la faire.

GrapheneOS adopte Android 12.1

GrapheneOS a été porté vers Android 12.1 très rapidement, avant même que la mise à jour ne soit disponible chez tous les possesseurs de Pixel sous l'OS stock.

Il y a néanmoins eu quelques couacs avec certains appareils dû à une régression upstream qui empêchait les mises à jour OTA (over the air). Cette régression est la résultante d'une tentative d'amélioration du système de snapshots dans Android 12.1. Cette amélioration part du principe que l'option CONFIG_SECURITY_SELINUX_DEVELOP est activée, et cette dernière rend SELinux permissif à une étape préliminaire du démarrage.

C'est le cas sur l'OS stock et les autres OS basés sur Android, mais pas sur GrapheneOS qui applique la sécurité en profondeur. Cette option représente une surface d'attaque car un attaquant avec des privilège suffisants pourrait parvenir dans certaines situations à désactiver temporairement SELinux (avec setenforce 0 par exemple). Cela affecte notamment le comportement du kernel au démarrage : la régression introduite dans le système de snapshots n'a pas la permission suffisante si cette option est désactivée, ce qui empêche donc les mises à jour OTA.

Bien que l'OS stock n'ait donc pas été affecté car réutilisant les mêmes kernels pour les builds de production et de debug, laissant donc l'option CONFIG_SECURITY_SELINUX_DEVELOP activée, le projet prévoit de reporter ce problème directement à Google. C'est un exemple parmi d'autres de travail de GrapheneOS qui bénéficie à l'ensemble des utilisateurs d'Android. C'est une vulnérabilité qui n'a pas un impact significatif a priori.

Des travaux sont encore en cours pour que le Pixel 3 puisse supporter Android 12.1 (c'est déjà le cas, mais il y a un problème avec le keystore empêchant les fonctionnalités d'attestation de fonctionner), qui pour rappel n'est plus supporté officiellement par Google et est considéré en fin de vie, et ne reçoit plus de mises à jour de sécurité pour son firmware. Il est vivement conseillé de changer dès que possible pour un modèle supporté. Je conseille particulièrement d'investir dans un Pixel 6 qui est un bon investissement à long terme avec ses 5 ans de support.

Gestion de Dirty Pipe (CVE-2022-0847)

Dirty Pipe est une vulnérabilité de haute sévérité dans le noyau Linux, découverte récemment et affectant des versions plutôt récentes (5.8+). C'est une vulnérabilité qui émane d'un bug de logique (variable non-initialisée, oui) dans la gestion des pipes (flux de données entre des processus), et permet une montée en privilèges si elle venait à être exploitée par un attaquant. Vous pouvez trouver une explication détaillée à cette adresse.

  • Cette vulnérabilité ne concerne pas tous les appareils supportés, car par exemple le Pixel 3a utilise une version de Linux antérieure à l'introduction du code vulnérable.
  • Cette vulnérabilité a été corrigée pour les appareils concernés (Pixel 6 notamment) dans la dernière mise à jour de GrapheneOS. Google n'a pas pu l'inclure à temps pour sa mise à jour de Mars, donc ça fait une petite avance pour GrapheneOS !

Comme beaucoup de vulnérabilités, celle-ci a été médiatisée sans être particulièrement plus importante que d'autres. Rien qu'au mois de Mars (ici et ), plus d'une dizaine de vulnérabilités de type EoP (élévation de privilèges) et quelques vulnérabilités critiques de type RCE (exécution de code arbitraire à distance) ont été corrigées pour Android et Linux, ainsi que les firmwares de plusieurs smartphones.

GrapheneOS a son marché d'applications

C'était prévu depuis quelques temps, mais c'est désormais réalité : le marché d'applications de GrapheneOS est désormais prêt pour la production, et est désormais intégré à l'OS en tant que source de confiance. Ce marché peut avoir l'air minimaliste, mais il améliore grandement l'expérience utilisateur :

  • Il était auparavant nécessaire de suivre des instructions peu accessibles pour le néophyte afin d'installer les Play services. Désormais, ce marché pourra réaliser ce processus, tout en gardant à jour les différentes composantes et en gérant les dépendances entre elles.
  • C'est un moyen plus simple de distribuer des mises à jour pour les applications du système, telles que la nouvelle application Camera.

Les mises à jour sont automatiques et transparentes. Comme indiqué ci-dessus, l'application prend en compte la notion de dépendance car elle est nécessaire pour le Play Store et les Play services.

Le projet prévoit d'étendre l'offre des applications afin de proposer des applications populaires comme Element ou Signal.

Mais pourquoi pas F-Droid ?

F-Droid est un marché d'applications alternatif souvent conseillé au sein d'un public soucieux de la sécurité et de la vie privée. Historiquement, GrapheneOS a intégré F-Droid par le passé, avant de se rétracter : les deux projets ne partagent en effet pas les mêmes avis, ni les mêmes buts, et il faut à mon avis respecter les deux parties pour leurs philosophies.

Maintenant, F-Droid a fait des choix qui lui font défaut en matière de sécurité et d'expérience utilisateur. Pour résumer, F-Droid :

  • Détient les clés (uniques par application) signant ses propres builds d'applications. Il faut donc leur faire confiance en tant que tierce partie supplémentaire ; une confiance qui ne se substitue absolument pas à celle que l'on place dans le développeur original qui maintient le code source.
  • Réutilise les IDs des applications en proposant des builds avec des signatures différentes : il faudrait idéalement que F-Droid ajoute un préfixe/suffixe à ces IDs pour éviter des conflits de signature.
  • N'adopte pas les améliorations d'Android moderne, qui sont pourtant bénéfiques pour la vie privée et la sécurité. Par exemple, F-Droid continue de pousser l'usage de son extension privilégiée quand Android 12 dispose d'une API sûre permettant les mises à jour automatiques. L'idéal serait de cibler Android 12 pour utiliser ses fonctionnalités sans pour autant délaisser les autres versions.
  • Fait le choix de supporter l'intégration de plusieurs dépôts d'application au sein d'une même application. Cependant, les APIs d'Android considèrent qu'un marché = une application-client = un dépôt en tant que source unique.
  • Utilise des méthodes de signatures obsolètes pour ses applications et les métadonnées de ses dépôts. C'est ce qui avait notamment posé problème lors de l'arrivée d'Android 11 qui ne supportait plus les signatures v1.
  • Liste de manière trompeuse les permissions de bas-niveau dans le manifeste des applications. Toutes les permissions n'ont pas les mêmes implications en matière de vie privée, et certaines n'en ont pas.

Une analyse plus détaillée que j'ai écrite en anglais est disponible à cette adresse. C'était à la base une initiative personnelle qui était vouée à guider les utilisateurs dans leur choix d'utiliser ou non F-Droid. Encore une fois, j'insiste : il est évident que F-Droid suit un courant philosophique différent, prônant davantage certaines idées.

Je pense très sincèrement qu'il n'y a rien de mal à ça et il ne faut pas mal interpréter la démarche d'analyse critique : le but est simplement de fournir des informations objectives qui ont le droit d'exister et d'être partagées.

Une autre alternative (extérieure à, mais influencée par GrapheneOS) en voie de développement est Accrescent. J'en reparlerai quand le projet sera plus mature, mais c'est très prometteur !

Amélioration du support des Play services

La grande amélioration notable est la possibilité de re-router l'API de localisation des Play services vers l'API fournie par l'OS. Cela signifie que vous n'avez plus besoin d'octroyer la permission de localisation aux Play services (mais vous le pouvez toujours) pour que cette fonctionnalité fonctionne sur des applications qui passaient délibérément par l'API des Play services.

Ce paramètre est accessible (en anglais, désolé !) dans Settings > Apps > Sandboxed Google Play.

Vous y trouverez d'ailleurs un nouveau menu qui facilite la configuration des Play services, et vous avertira en cas de problèmes dans votre installation.

Au passage : dans les paramètres des Play services ("Google settings" ici), il est désormais possible de supprimer l'identifiant publicitaire (ads ID) au lieu de simplement indiquer aux applications de ne pas l'utiliser (la gentillesse ne fonctionne pas de toute façon). Cet identifiant sera (il me semble) remplacé par une chaîne de zéros.

Pour celles et ceux qui apprécient les jeux mobiles, Google Play Games est enfin supporté par la couche de compatibilité.

Feuille de route

Dans l'immédiat, le travail est à la stabilisation des fonctionnalités actuelles sur Android 12.1. Les premiers travaux de portage vers Android 13 commenceront d'ailleurs sous peu avec les premiers tests des kernels, histoire de prendre le maximum d'avance possible.

J'ai sélectionné quelques nouveautés attendues pour les mois à venir :

  • La compatibilité avec l'eSIM : bien que l'eSIM fonctionne déjà techniquement, sa configuration devait auparavant se faire sur l'OS stock. Une solution sera développée pour supporter intégralement la configuration de l'eSIM sans intégrer du code privilégié de l'OS stock.
  • Les profils utilisateurs "imbriqués" : cette fonctionnalité sera exposée pour permettre par exemple d'avoir les notifications d'un profil utilisateur sur un autre. Pour rappel, les profils utilisateurs sont un outil, qui allié à la sandbox des applications, permet de mieux renforcer la séparation entre différentes applications potentiellement invasives.
  • Il est envisagé de faciliter l'accès à des informations telles que l'empreinte de la clé de la signature d'une application. Il faut passer par apksigner actuellement, ou une application tierce. GrapheneOS a déjà repris une petite modification de LineageOS consistant à afficher l'ID de l'application dans les paramètres.
  • Il se pourrait également que GrapheneOS propose une base de données de ces empreintes, avec une automatisation pour suivre les applications populaires du Play Store. L'avantage est de renforcer la confiance au moment de l'installation d'une application (les mises à jour vérifiant systématiquement la signature par la suite).
  • Le remplacement progressif des applications de base AOSP par des applications développées par GrapheneOS. L'application Camera était un exemple. FlorisBoard remplacera éventuellement le clavier AOSP, qui est toujours maintenu, mais désuet sur bien des aspects.
  • D'ici la fin d'année, on peut s'attendre au support d'un smartphone qui ne sera pas un Google Pixel ! En partenariat avec GrapheneOS, un constructeur mystère va proposer un smartphone qui aura un niveau de sécurité suffisamment décent pour être supporté officiellement par le projet. Le SoC devrait être un Snapdragon de Qualcomm.

Pour terminer, GrapheneOS propose désormais son application Camera (sous le nom de Secure Camera) sur le Google Play Store. J'ai déjà présenté l'application au mois de Décembre dernier, qui s'est améliorée depuis. Puisqu'elle repose sur CameraX, il faut garder à l'esprit que ses fonctionnalités sont variables d'un appareil à l'autre.

Ce n'est ni plus ni moins la meilleure application Camera open-source disponible à ce jour (même si je n'étais pas biaisé, je le dirais quand même), et même si vous lui préférez Google Camera et ses algorithmes qu'on ne présente plus, elle reste très utile pour sa fonctionnalité de scan de QR code. N'hésitez donc pas à l'essayer, à faire vos retours et à lui donner une bonne note, cela fera plaisir aux développeurs de l'application.

Sur ce, à la prochaine !