Question Comment fonctionne le démarrage sécurisé?


Je joue avec GRUB2, SecureBoot et Kernel Signing et je pense avoir trouvé un bogue possible dans mon démarrage sécurisé, mais je veux d'abord vérifier ma compréhension de ces processus.

Je sais que lorsque le démarrage sécurisé est activé, seuls les binaires signés avec une clé chargée dans le microprogramme peuvent être lancés, de sorte que tous les chargeurs de démarrage doivent être signés. Dans un cas typique sont les cales et GRUB.

Shim devrait déjeuner le MoakManager si le démarrage échoue ou si vous avez des clés à importer ou à supprimer et si tout va bien, il devrait alors lancer GRUB qui est le véritable chargeur de démarrage.

Le problème est que je viens de générer une version personnalisée de GRUB avec grub-mkstandalone que j'ai signé avec une nouvelle clé créée avec OpenSSl; une clé que je n'ai pas encore importée dans le micrologiciel et que shim a pu lancer sans aucun rapport de Secure Boot.

J'ai vérifié les clés avec mokutil --list-enrolled et il n'a rapporté que le certificat canonique.


Donc, pour récapituler:

Dans ma partition EFI, j'ai:

  • shimx64.efi signé par Canonical, généré avec grub-install
  • mon GRUB personnalisé, généré avec grub-mkstandalone, signé avec ma propre clé, que je n'ai pas encore importé, nommé grubx64.efi.

Au démarrage, SHIM pourrait déjeuner et GRUB pourrait démarrer Ubuntu avec succès.

Si certains Secure Boot ne vérifient que le signe du premier bootloader et que les autres chargeurs sont responsables de la vérification et des modules préchargés et que les utilisateurs finissent par charger, le problème de sécurité est vraiment grave.

Je vais faire d'autres tests, mais peut-être devrais-je ouvrir un ticket de bug.


Des idées?


6
2018-01-21 16:33


origine




Réponses:


Je crois que votre compréhension est correcte, sauf cette shimx64.efi est livré sous forme binaire via un package, ne pas généré localement via grub-install. (grub-install est susceptible de installer  shimx64.efi à l'ESP, cependant.) Oh, et c'est MokManager, pas MoakManager.

Avant de déposer un rapport de bogue, vous devriez revenir sur vos pas et être sûr à 100% que vous démarrez via votre GRUB compilé localement. Il est facile de mettre accidentellement un binaire au mauvais endroit ou de négliger de l'exécuter efibootmgr pour ajuster l'ordre de démarrage, par exemple. (Vous n'avez pas décrit comment vous installez votre compte grubx64.efi - écrasez-vous le binaire Ubuntu standard ou mettez-en un autre ailleurs et enregistrez-le [et une copie de Shim] via efibootmgr?) Vous pourriez vouloir courir sudo efibootmgr -v pour voir vos détails de démarrage. Faites attention au BootOrder et BootCurrent lines - la première vous indique l'ordre dans lequel les options de démarrage seront essayées et la dernière montre l'option utilisée pour démarrer l'ordinateur. Vous devrez recouper les numéros avec les différents Boot#### lignes décrivant chaque option de démarrage. Si vous avez installé votre propre GRUB séparé du GRUB d'Ubuntu, il est concevable que le micrologiciel l'ait ignoré silencieusement en raison d'une erreur de démarrage sécurisé, puis est retombé sur le stock Ubuntu Shim / GRUB, ce qui expliquerait ce que vous voyez.

Une autre possibilité est que Secure Boot n'est pas réellement activé sur votre ordinateur. Vous pouvez vérifier cette possibilité comme suit:

$ hexdump /sys/firmware/efi/efivars/SecureBoot-8be4df61-93ca-11d2-aa0d-00e098032b8c 
0000000 0016 0000 0001              
0000005

Dans cet exemple, la première ligne de sortie (0000000 0016 0000 0001) se termine par un 1. Cela indique que le démarrage sécurisé est actif. S'il se termine par un 0, puis Secure Boot est désactivé sur votre ordinateur.

Une autre possibilité est que vous ayez peut-être installé votre clé locale dans la liste de bases de données du micrologiciel. C'est une tâche difficile, cependant, il est peu probable que vous l'ayez fait accidentellement et sans vous en rendre compte. (Voir ma page sur le sujet pour plus de détails sur la façon de le configurer.) Je mentionne cette possibilité principalement par souci d'exhaustivité; cela ne me semble pas du tout probable, sauf si vous omettez de mentionner une tentative précédente de maîtriser Secure Boot de cette manière.

Si vous voyez un bogue, cela peut être dans Shim ou dans votre firmware.

Une autre mise en garde est que je ne suis que passablement familier avec les outils spécifiques à GRUB tels que grub-mkstandalone. Comme je gère rEFInd, je préfère l'utiliser, donc ma connaissance des outils GRUB n'est pas aussi approfondie qu'elle pourrait l'être. Ainsi, il se peut que je manque certains détails critiques parce que c'est spécifique à GRUB.


4
2018-01-24 01:44



Vous avez raison, j'ai désactivé l'option lors de mes nombreux tests, je ne le crois pas. - JumpAlways
Il y a un autre comportement étrange maintenant, le démarrage montre démarrage réussi Ubuntu et puis l'écran bleu MokManager apparaît pour me dire Échec de la vérification. Depuis que j'ai seulement modifié le GRUB, pourquoi la boîte aux lettres standard de Secure Boot n'apparaît-elle pas à la place? - JumpAlways
J'ai vu que vous étiez un expert dans ce domaine et je voudrais vous demander quelque chose d'autre à propos des chargeurs de démarrage. Comment puis-je vous contacter? - JumpAlways
Si vous générez une coutume grubx64.efi, soit il doit être signé ou son hash inscrit pour que Shim l'accepte. Si vous constatez une erreur telle que vous la décrivez, je pense que vous n'avez pas enregistré la clé ou que vous avez commis une erreur lors du processus de signature. Il y a beaucoup d'autres causes possibles, comme un noyau mal signé, un bogue dans Shim, une erreur dans la configuration de la chaîne de binaires, etc. Vous pouvez me contacter à l'adresse de mon site Web, rodsbooks.com. - Rod Smith