Un des packages associés à NixOS a présenté une technique d'attaque permettant d'accéder aux données sur des partitions de disque chiffrées, dans des configurations ne nécessitant pas la saisie d'un mot de passe de déblocage au démarrage, grâce au stockage dans le TPM2 (Trusted Platform Module) d'informations pour le déchiffrement. De telles configurations sont souvent utilisées sur des serveurs ou des stations de travail multi-utilisateurs, où il est problématique de saisir manuellement un mot de passe après chaque redémarrage.
Avec une telle méthode de chiffrement des disques, le déchiffrement est effectué à l'aide d'une clé supplémentaire, stockée dans le TPM et délivrée uniquement après confirmation de l'état d'origine du système. L'état du système est conservé sous forme de hachages dans les enregistreurs PCR (Platform Configuration Register) et est lié à une signature numérique qui valide le chargeur, ainsi qu'aux sommes de contrôle du chargeur et de l'environnement de démarrage initial (initrd). L'accès à la clé dans le TPM est accordé uniquement lorsque tous les enregistreurs PCR qui y sont liés se trouvent dans le même état que lors de la sauvegarde de la clé.
Il est sous-entendu que la chaîne de démarrage du système d'exploitation est vérifiée à l'aide du démarrage sécurisé UEFI et que l'accès aux clés ne peut être obtenu qu'à partir d'une image initrd non modifiée. Lors d'une vérification réussie, le disque se déverrouille automatiquement, mais l'accès aux données déchiffrées nécessite une connexion à votre compte dans le système. En cas d'accès sans démarrage vérifié ou si des tentatives de remplacement ou de modification de l'initrd sont faites afin d'intercepter les clés, la chaîne de confiance sera rompue, l'état des enregistreurs PCR sera modifié et le TPM2 ne fournira pas les informations nécessaires au déchiffrement.
La méthode d'attaque publiée permet d'éviter de modifier le contenu de l'initrd dans des configurations ne présentant pas de partitions chiffrées LUKS. Il est à noter que l'intégration d'un tel contrôle des partitions n'est pas décrite dans l'ensemble des instructions disponibles sur la configuration du chiffrement de disque, car l'identification de la partition complique considérablement la configuration (cela nécessite l'utilisation d'un enregistrement PCR supplémentaire pour vérifier la clé de la partition et la génération d'initrd en tenant compte de sa valeur). Des exemples d'attaque ont été démontrés pour Fedora Linux en lien avec l'outil clevis et pour NixOS en lien avec systemd-cryptenroll. Pour exécuter cette attaque, un accès physique à l'ordinateur et la possibilité d'extraire le support de stockage sont nécessaires.
La méthode repose sur le fait que l'attaquant peut remplacer une partition chiffrée racine existante par sa propre partition chiffrée, créée avec le même identifiant UUID et des clés de déchiffrement connues de l'attaquant. L'environnement initrd passera le contrôle au processus init dans la partition de l'attaquant. Comme le contenu de l'initrd n'a pas été modifié, l'état du TPM ne sera pas compromis et ayant obtenu le contrôle dans son environnement, l'attaquant pourra utiliser le TPM pour déchiffrer la clé de la partition de disque d'origine.
L'attaque se résume aux étapes suivantes :
- Extraction du disque et analyse sur un autre ordinateur des données non chiffrées dans la partition /boot. Identification des informations sur la partition chiffrée et son identifiant UUID à partir de l'image initrd, se trouvant dans la partition /boot.
- Création d'une sauvegarde des premiers 64 Mo de la partition LUKS chiffrée.
- Remplacement de ces 64 Mo par une image contenant sa propre partition racine, chiffrée avec une clé connue de l'attaquant et ayant un identifiant UUID identique à celui de l'ancienne partition.
- Retourner le disque dans l'ordinateur d'origine et démarrer avec la partition racine remplacée. Étant donné que le déverrouillage automatique par la clé du TPM pour la partition remplacée échoue, l'initrd affichera une demande pour la saisie manuelle du mot de passe.
- Récupération de la clé d'origine à partir du TPM, en utilisant les métadonnées du TPM et le token chiffré provenant de l'en-tête LUKS de l'ancienne partition.
- Remplacement du disque sur l'ordinateur de l'attaquant, restauration de la partie réécrite de la partition LUKS à partir de la sauvegarde et utilisation de la clé d'origine obtenue pour accéder aux données.
Source : opennet.ru
