Sécurité du volume système signé
Apple a introduit le volume système en lecture seule sous macOS 10.15. Il s’agit d’un volume isolé, dédié au contenu du système. macOS 11 ou une version ultérieure a permis d’ajouter des protections cryptographiques robustes au contenu du système sur un volume système signé (VSS). Le VSS est doté d’un mécanisme de noyau qui vérifie l’intégrité du contenu du système pendant son fonctionnement et qui rejette toute donnée, code ou autre, qui ne présente pas de signature cryptographique valide émise par Apple. À partir d’iOS 15 et d’iPadOS 15, le volume système d’un appareil iPhone ou iPad bénéficie également de la protection cryptographique d’un volume système signé.
Non seulement le VSS aide à prévenir l’altération de tout logiciel Apple faisant partie du système d’exploitation, il rend aussi la mise à jour logicielle de macOS plus fiable et plus sûre. Comme le VSS utilise les instantanés du système de fichiers d’Apple (APFS), si une mise à jour ne parvient pas à être installée, la version antérieure du système peut être restaurée sans réinstallation.
Depuis son apparition, l’APFS contribue à l’intégrité des métadonnées du système de fichiers au moyen de sommes de contrôle non cryptographiques sur le dispositif de stockage interne. Le VSS consolide le mécanisme d’intégrité en ajoutant des hachages cryptographiques de manière à englober chaque octet de données de fichiers. Les données du dispositif de stockage interne (y compris les métadonnées du système de fichiers) sont hachées de façon cryptographique dans le chemin de lecture, puis le hachage est comparé à une valeur attendue dans les métadonnées du système de fichiers. En cas de différence, le système considère que les données ont été altérées et ne les renvoient pas au logiciel qui les a demandées.
Chaque hachage SHA256 du VSS est stocké dans l’arborescence principale des métadonnées du système de fichiers, qui est elle-même hachée. De plus, comme chaque nœud de l’arbre vérifie récursivement l’intégrité des hachages de ses fichiers dépendants, une méthode semblable à l’arbre de hachage (ou arbre de Merkle) binaire, la valeur de hachage du nœud racine, appelée sceau, couvre donc chaque octet de données du VSS. Par conséquent, la signature cryptographique couvre l’intégralité du volume système.
Lors de l’installation et des mises à jour de macOS, ce sceau est recalculé à partir du système de fichiers directement sur l’appareil, et cette mesure est comparée à celle qu’Apple a signée. Sur un Mac avec puce Apple, le chargeur de démarrage vérifie le sceau avant de transmettre le contrôle au noyau. Sur un Mac avec processeur Intel et puce T2 Security d’Apple, le chargeur de démarrage renvoie la mesure et la signature au noyau, qui vérifie directement le sceau avant de monter le système de fichiers racine. Dans les deux cas, si la vérification échoue, le processus de démarrage s’arrête, et l’utilisateur est invité à réinstaller macOS. Cette procédure est répétée à chaque démarrage à moins que l’utilisateur ait choisi un règlement de sécurité inférieur et qu’il ait explicitement choisi de désactiver le volume système signé.
Lors des mises à jour logicielles iOS et iPadOS, le volume système est préparé et recalculé de manière similaire. Les chargeurs d’amorçage iOS et iPadOS vérifient que le sceau est intact et qu’il correspond à une valeur signée par Apple avant d’autoriser l’appareil à démarrer le noyau. En cas d’incompatibilité au démarrage, l’utilisateur est invité à mettre à jour le logiciel système de l’appareil. Les utilisateurs ne sont pas autorisés à désactiver la protection d’un volume système signé sur iOS et iPadOS.
VSS et signature du code
La signature du code a toujours lieu et est imposée par le noyau. Le volume système signé offre sa protection lorsque tout octet de données est lu à partir du dispositif de stockage interne. En revanche, la signature du code offre une protection lorsque des objets Mach sont mis en correspondance avec la mémoire en tant qu’exécutables. Le VSS et la signature du code protègent tous les deux le code exécutable sur tous les chemins de lecture et d’exécution.
VSS et FileVault
Sous macOS 11 ou une version ultérieure, une protection au repos équivalente pour le contenu du système est assurée par le VSS et le volume système n’a donc plus besoin d’être chiffré. Toute modification apportée au système de fichiers lorsque ce dernier est au repos est détectée par le système de fichiers lorsqu’il procède à leur lecture. Si l’utilisateur a activé FileVault, son contenu sur le volume de données est tout de même chiffré au moyen d’un secret qu’il a lui-même fourni.
Si l’utilisateur choisit de désactiver le VSS, le système devient vulnérable aux altérations lorsqu’il est au repos, et de telles altérations pourraient permettre à un assaillant d’extraire des données chiffrées de l’utilisateur lors du prochain démarrage du système. Par conséquent, le système n’autorisera pas l’utilisateur à désactiver le VSS si FileVault est activé. La cohérence exige que la protection au repos soit activée ou désactivée sur les deux volumes.
Sous macOS 10.15 ou une version antérieure, FileVault protège le système d’exploitation au repos en chiffrant le contenu de l’utilisateur et le contenu du système au moyen d’une clé protégée par un secret fourni par l’utilisateur. Cela empêche un assaillant ayant physiquement accès à l’appareil d’accéder au système de fichiers renfermant les logiciels système ou de le modifier.
VSS et Mac avec puce T2 Security d’Apple
Sur un Mac avec puce T2 Security d’Apple, seul macOS est protégé par le VSS. Le logiciel qui s’exécute sur la puce T2 et qui vérifie macOS est protégé par le démarrage sécurisé.