Ce qui se passe
Une recherche présentée à SummerCon montre comment le cache de traduction de Rosetta 2 peut servir à dissimuler du code malveillant sur macOS.
Comment fonctionne Rosetta 2
Rosetta 2 est la couche qui permet d'exécuter des binaires Mach-O x86_64 sur Apple Silicon. Elle procède en deux temps :
- Compilation anticipée : à l'appel d'un exécutable, le démon
oahd_helpertraduit ce qu'il peut à l'avance et met le résultat en cache. - Compilation à la volée : les appels indirects, impossibles à résoudre statiquement, sont confiés à un JIT.
C'est cette combinaison qui rend la traduction fluide — et c'est elle qui ouvre la porte.
Le problème
Le code réellement exécuté n'est plus celui du binaire d'origine mais sa traduction mise en cache. Une analyse qui n'inspecte que le binaire x86 passe à côté de ce qui tourne vraiment, et la part confiée au JIT échappe à l'examen statique.
L'auteur le résume sans détour : le mélange est propice à des malwares plus difficiles à détecter qu'on ne l'imagine.
L'échéance qui change tout
Apple retire Rosetta 2 au prochain macOS majeur. Elle sera remplacée par d'autres outils, dont le Game Porting Toolkit pour le portage de jeux Windows, et des dispositifs de virtualisation Linux.
La fenêtre est donc double : le risque existe aujourd'hui sur les machines qui l'utilisent encore, et il disparaîtra avec la couche elle-même — en laissant derrière lui la question des caches déjà écrits.
Ce qu'il faut en retenir
Si vous exploitez un parc Apple Silicon, la question à poser à votre outillage de sécurité est simple : inspecte-t-il le cache de traduction, ou seulement les binaires ?