Elle ne peut être corrigée par une mise à jour logicielle car elle est présente dans le silicium
Une vulnérabilité récemment découverte dans la série de puces M d’Apple permet aux attaquants d’extraire des clés secrètes des Mac lorsqu’ils effectuent des opérations cryptographiques couramment utilisées, ont révélé des chercheurs universitaires. Cette faille, présente dans les puces Apple M1, M2 et M3, ne peut être corrigée par une mise à jour logicielle car elle est présente dans le silicium lui-même. Il existe des techniques d’atténuation que les développeurs cryptographiques peuvent créer pour réduire l’efficacité de l’exploit, mais comme l’écrit Kim Zetter de Zero Day, « le résultat final pour les utilisateurs est qu’il n’y a rien que vous puissiez faire pour y remédier ».
Les puces Apple et les autres processeurs modernes sont dotés d’une technique d’optimisation appelée “prefetching”, conçue pour accélérer le traitement en recherchant dans la mémoire de l’ordinateur des modèles d’activité, c’est-à-dire des fonctions que vous exécutez fréquemment et des données auxquelles vous accédez souvent. Le prefetcher détermine les données auxquelles vous avez déjà accédé et place dans la mémoire cache du système un pointeur, ou localisateur d’adresse, indiquant l’emplacement de ces données ou de ce code de fonction dans la mémoire, afin que le système puisse les trouver et les utiliser plus rapidement lorsque vous en avez besoin.
Le problème est que la mémoire cache peut « fuiter » les informations qui y sont stockées, ce qui permet aux pirates de s’en emparer dans le cadre d’attaques dites « par canal latéral ». Pour cette raison, la norme interdit aux systèmes de mélanger des données avec des adresses ou des pointeurs d’adresse ; si des données sont mélangées avec une adresse, lorsque l’utilisateur accède à l’adresse, celle-ci peut être placée dans la mémoire cache où elle risque de fuiter.
Mais une équipe de sept chercheurs d’universités américaines a publié un article et une vidéo montrant que les puces Apple de la série M mélangent les données et les adresses, ce qui peut être exploité pour obtenir des clés cryptographiques. Ils ont réussi à concevoir une application malveillante qui, lorsqu’elle est téléchargée sur l’ordinateur d’un utilisateur, trompe le prefetcher d’Apple – connu sous le nom de Data Memory-Dependent Prefetcher (DMP) – en lui faisant croire que le matériel secret lié à la clé est une adresse. La recherche a été partiellement financée par des subventions de l’Air Force Office of Scientific Research et de la Defense Advanced Research Projects Agency, selon le site web des chercheurs.
La clé cryptographique elle-même n’est pas placée dans la mémoire cache. Mais des éléments dérivés de la clé sont placés dans le cache, et un attaquant peut assembler ces éléments de manière à reconstruire la clé, après avoir amené le processeur à le faire plusieurs fois. Les chercheurs ont pu dériver la clé de quatre algorithmes cryptographiques différents : Go, OpenSSL, CRYSTALS-Kyber et CRYSTALS-Dilithium. Ces deux derniers sont considérés comme des algorithmes résistants au quantum, c’est-à-dire des algorithmes censés être si sûrs qu’ils ne pourraient pas être déchiffrés à l’aide d’un ordinateur quantique. Les chercheurs n’ont pas testé leur attaque contre d’autres algorithmes, mais ils pensent qu’elle serait également efficace contre d’autres algorithmes.
Moins d’une heure pour extraire suffisamment de données du cache afin de reconstruire une clé RSA de 2048 bits
Le premier média à avoir rapporté l’affaire note que l’attaque conçue par les chercheurs prend moins d’une heure pour extraire suffisamment de données du cache pour reconstruire une clé RSA de 2048 bits et « un peu plus de 2 heures pour extraire une clé Diffie-Hellman de 2048 bits. L’attaque prend 54 minutes pour extraire le matériel nécessaire à l’assemblage d’une clé Kyber-512 et environ 10 heures pour une clé Dilithium-2 ».
Matthew Green, cryptographe et professeur d’informatique à l’université Johns Hopkins, estime qu’il s’agit d’une attaque intelligente.
« Le code Apple […] applique un certain nombre de critères [pour déterminer] ce qu’est une adresse », explique-t-il. « Les chercheurs ont compris que si [leur logiciel malveillant fournit] un message à décrypter, l’algorithme de décryptage combinera à un moment donné la clé avec une partie de [ce] message…. Et cela ressemble suffisamment à une adresse pour tromper ce petit prefetcher [en le plaçant dans le cache] ».
Il ajoute que la détermination de ce qui est ou n’est pas une adresse est un problème difficile à résoudre pour les prefetcher.
« Beaucoup de choses ressemblent à une adresse, et [le prefetcher] doit deviner ce qui est réellement une adresse ou non, et [les chercheurs] parviennent ainsi à se faufiler [à travers] cette supposition », explique-t-il.
Le programme GoFetch
Les chercheurs ont créé un programme malveillant qu’ils ont appelé GoFetch et qui permet de réaliser ce tour de passe-passe, ainsi qu’une vidéo démontrant l’attaque en action.
Les ingénieurs qui conçoivent des applications exécutant des fonctions cryptographiques mettent en œuvre une technique appelée programmation à temps constant, qui empêche efficacement les données d’être mélangées à des adresses, d’être placées dans le cache et de faire l’objet d’une fuite. Mais dans le cas des puces de la série M, la programmation à temps constant n’est pas efficace, explique Daniel Genkin, professeur de cybersécurité et de protection de la vie privée à l’Institut de technologie de Géorgie et l’un des chercheurs qui ont découvert la faille.
Il explique que le problème du prefetcher des puces Apple de la série M est dû au fait que, contrairement aux prefetcher d’autres puces qui n’examinent que les adresses, le prefetcher des puces Apple est programmé pour examiner également les valeurs stockées à l’intérieur des adresses, ce qui le met dans une position de vulnérabilité lui permettant de confondre une valeur avec une adresse et de la placer dans la mémoire cache.
« Si une valeur ressemble à une adresse, le prefetcher peut décider de la traiter comme une adresse », explique-t-il.
La puce M3 dispose d’un bit spécial dans le processeur que les programmeurs peuvent activer pour désactiver le préfiltre pour les fonctions cryptographiques et empêcher les données cryptographiques d’être placées dans la mémoire cache ; mais les puces M1 et M2 ne permettent pas de désactiver le prefetcher.
Vecteur d’attaque
Comment un attaquant peut-il tromper le processeur ? En glissant un code malveillant dans une application que l’utilisateur télécharge sur son ordinateur. Le code d’attaque GoFetch qu’ils ont créé ne nécessite pas d’accès root sur une machine pour fonctionner ; il peut tromper le processeur avec le même niveau d’accès que n’importe quelle application tierce sur une machine.
Il peut également être exécuté sur un serveur cloud hébergeant des machines virtuelles utilisées par plusieurs parties.
« Si je suis sur Amazon, sur un serveur cloud utilisant une machine virtuelle et qu’il y a une autre machine virtuelle utilisant des clés, c’est un autre exemple de cas où cela pourrait poser un problème », explique Green. Il précise toutefois qu’il ne s’agit pas d’une attaque facile à réaliser.
En théorie, il est également possible pour un pirate d’intégrer un code malveillant dans le Javascript d’un site web, de sorte que lorsqu’un ordinateur équipé d’une puce de la série M visite le site, le code malveillant du pirate peut mener l’attaque pour s’emparer des données de la mémoire cache. Les chercheurs n’ont pas testé d’attaque sur un site web, mais Green estime que ce scénario est plausible. Il s’agirait également d’une attaque plus inquiétante, note-t-il, car les pirates pourraient l’étendre à des milliers d’ordinateurs rapidement.
Selon Green, le risque d’une attaque de type application GoFetch est probablement faible pour la plupart des gens.
« Nous parlons d’utilisateurs haut de gamme, comme quelqu’un qui possède un portefeuille de crypto-monnaies avec beaucoup d’argent », précise-t-il. Mais il note qu’en théorie, cette attaque pourrait être utilisée pour casser la cryptographie TLS que le navigateur d’un ordinateur utilise pour chiffrer la communication entre l’ordinateur et les sites web, ce qui pourrait permettre aux attaquants de déchiffrer cette communication pour extraire le cookie de session d’un utilisateur pour son compte Gmail ou un autre compte de messagerie en ligne et l’utiliser pour se connecter au compte en tant que tel.
« Je ne dis pas qu’il s’agit d’une attaque pratique, je dis simplement que c’est le type de menace qui peut vous inquiéter », précise-t-il. « Vous pouvez obtenir [d’autres] clés très précieuses potentiellement », y compris leurs clés iCloud pour accéder aux données sauvegardées.
Le correctif
Comme il ne s’agit pas d’une faille dans le système d’exploitation d’Apple, mais d’un problème matériel dans la puce, Apple ne peut pas simplement publier un correctif comme elle le ferait pour des failles logicielles. Elle pourrait toutefois corriger le problème dans les conceptions ultérieures de la puce.
Interrogé sur ce problème, un porte-parole d’Apple n’a pas répondu directement aux questions de Kim Zetter de Zero Day, se contentant de dire : « Nous tenons à remercier les chercheurs pour leur collaboration, car cette recherche nous permet de mieux comprendre ce type de menaces ». Il a également envoyé un lien vers un site Apple destiné aux développeurs d’applications.
Le site contient une instruction aux développeurs d’applications cryptographiques d’inclure dans leur programme un code qui oblige le processeur à implémenter un timing indépendant des données, ou DIT, qui désactive effectivement le prefetcher lorsque l’ordinateur exécute des fonctions cryptographiques pour leur application. On ne sait pas exactement depuis combien de temps cette instruction se trouve sur le site des développeurs d’Apple ; il n’y a pas de date sur la page.
La page des développeurs d’Apple, qui indique aux développeurs qui créent des applications cryptographiques d’activer DIT pour éviter le problème découvert par les chercheurs. Mais le correctif décrit sur cette page ne fonctionne qu’avec les puces M3 d’Apple, et non avec les M1 et M2.
La solution DIT pose toutefois deux problèmes :
- Selon les chercheurs, la désactivation du préfiltre ralentira probablement le processeur pendant les fonctions cryptographiques. Ils ne savent pas dans quelle mesure.
- Le DIT ne fonctionne que pour les puces Apple M3 ; comme indiqué ci-dessus, les puces M1 et M2 n’ont pas la possibilité de désactiver le prefetcher. Apple n’a lancé la puce M3 que récemment – les premiers Macbooks équipés de puces M3 ont été mis sur le marché en octobre dernier. Cela suggère qu’Apple a peut-être pris conscience du problème de son propre chef, quelque temps après la vente des produits équipés des puces M1 et M2 (et avant que les chercheurs ne les informent du problème en décembre), et qu’elle a donc ajouté la possibilité de désactiver le préfiltre dans la puce M3. Si c’est le cas, cela signifie qu’Apple a effectué ce changement sans informer les consommateurs du problème avec leurs puces M1 et M2. Mais il ne s’agit pour l’instant que de spéculations.
Matthew Green déclare qu’il n’a jamais eu connaissance de cette instruction donnée aux développeurs pour qu’ils mettent en œuvre la DIT.
« J’implémente la cryptographie et c’est littéralement la première fois que j’en entends parler », déclare-t-il, précisant que d’autres cryptographes n’en ont probablement pas eu connaissance non plus.
source : developpez