Pas vraiment un problème de sécurité, mais pour le moins une erreur de conception dérangeante pour la firme de Cupertino. En effet, un chercheur travaillant sur le portage de Linux vers les terminaux Apple équipé de la puce M1 a découvert un défaut nommée M1RACLES dans celle-ci. L’anomalie réside dans un registre système ARM codé sous le nom s3_5_c15_c10_1. Il contient deux bits qui peuvent être lus et écrits en EL0 (Exception level 0, privilège au niveau de l’application) depuis l’ensemble des cœurs en simultanée. Cela ouvre la voie à la mise en place d’un canal de communication discret entre des processus, chose qui normalement est limitée par les règles de sécurité de l’OS.
Selon Hector Martin, fondateur du projet Asahi Linux, « une paire de malware non détectée pourrait construire un canal depuis cet état de deux bits en se servant d’un protocole d’horloge et de données. Par exemple, un côté écrit 1x pour envoyer des données, l’autre 00 pour demander le bit suivant) ». Et d’ajouter : « cela offre aux processus d’échanger une quantité arbitraire de données, limitée uniquement par l’overhead du CPU ». Le spécialiste a publié un script pour démontrer comment lire et écrire des données dans la base de registre trop bavarde et un autre script pour installer un canal secret sur les systèmes M1.
Des options de contournement
Apple a été informé de ce défaut 90 jours avant qu’il ne publie ses travaux et la faille a été classée CVE-2021-30747. Elle affecte macOS Big Sur, Linux v5.13+, et iOS/iPadOS, via la puce A14, qui selon Hector Martin partage le même défaut. L’expert suggère que l’exploitation sur iOS pourrait servir à contourner des protections de la vie privée avec par exemple une application malveillante de clavier qui fonctionnerait en keylogger en envoyant le texte tapé à une autre application, qui elle-même transmettrait les informations sur Internet.
Le bug peut être contourné en utilisant une machine virtuelle, car les hyperviseurs désactivent par défaut l’accès des invités au registre vulnérable. Mais une autre option existe : « il faut exécuter l’OS en EL1, où le registre problématique peut être désactivé, puis avoir au moins une sorte d’hyperviseur minimal en EL2 pour éviter les pièges (sinon l’exécution d’une application qui utilise le registre ferait tout simplement planter votre machine à la place) », glisse Hector Martin. Il poursuit : « le cadre de virtualisation de macOS ne supporte que l'exécution en tant qu'hyperviseur de type 2. Donc, pour résoudre ce problème, il faudrait revoir la conception de l'ensemble pour qu'il fonctionne comme un hyperviseur de type 1. » Pas sûr que ce défaut soit corrigé dans la prochaine évolution de la puce M1...