Journal Booting a Self-signed Linux Kernel

Posté par  (site web personnel) . Licence CC By‑SA.
18
7
sept.
2013

Billet sur le blog de Greg Kroah-Hartman : http://kroah.com/log/blog/2013/09/02/booting-a-self-signed-linux-kernel/

Donc d'après ce que je comprends, une machine avec un firmware UEFi n'est plus un souci pour les utilisateurs de Linux qui pourront non seulement installer leur système mais aussi empêcher le boot d'un autre.

  • # bios uefi

    Posté par  . Évalué à 10. Dernière modification le 07 septembre 2013 à 21:55.

    Corrigez moi si je me trompe mais je pense qu'il faut abandonner cette appellation pour uefi tout court.

    • [^] # Re: bios uefi

      Posté par  . Évalué à 4.

      Ou alors «firmware UEFI», mais «BIOS UEFI» est un abus de langage.

      • [^] # Re: bios uefi

        Posté par  (site web personnel) . Évalué à 1.

        au temps pour moi … je ne peux pas modifier mon journal, si un modérateur peut s'en charger, merci à lui.

        wind0w$ suxX, GNU/Linux roxX!

        • [^] # Re: bios uefi

          Posté par  . Évalué à 3.

          Allez c'est mon jour de bonté, c'est fait!

          "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

          • [^] # Re: bios uefi

            Posté par  . Évalué à 0. Dernière modification le 08 septembre 2013 à 17:17.

            [supprimé, pas répondu au bon endroit…]

        • [^] # Re: bios uefi

          Posté par  . Évalué à 1.

          En même temps, Greg Kroah-Hartman fait lui même l'erreur dans son article, donc même si c'est pléonastique, ça ne doit pas être si grave.

      • [^] # Re: bios uefi

        Posté par  . Évalué à 6. Dernière modification le 08 septembre 2013 à 17:16.

        Et encore, même pas à mon avis.

        La norme Unified Extensible Firmware Interface (UEFI, « interface micrologicielle extensible unifiée ») définit un logiciel intermédiaire entre le micrologiciel (firmware) et le système d'exploitation (OS) d'un ordinateur.

        http://fr.wikipedia.org/wiki/UEFI

        Donc « firmware UEFI » me semble être également un abus de langage incorrect.

  • # Sans bootloader

    Posté par  . Évalué à 7.

    Il était déjà possible depuis un certain temps de booter un Linux en mode UEFI grace à un bootloader adapté (comme gummiboot ou grub2).

    Ce qui est nouveau, c'est que Linux peut être Démarré directement par UEFI sans l'intervention d'un bootloader.
    Mais le gros inconvénient, c'est que les options du noyaux, habituellement passée par le bootloader, doivent alors être inclues dans le noyau à la compilation, de même que le ramdisk s'il en faut un!

    • [^] # Re: Sans bootloader

      Posté par  . Évalué à 4.

      Heu, nope. Ça fait bien longtemps que Linux peut être booté directement par l'UEFI (option CONFIG_EFI_STUB), et on peut très bien configurer l'UEFI pour passer une commandline au noyau. Tout ça sans bootloader (par contre faut effectivement inclure le ramdisk dans le noyal, m'en fout j'ai pas de ramdisk).

      D'ailleurs gummiboot ne peut booter que les noyaux bootables par UEFI.

      • [^] # Re: Sans bootloader

        Posté par  . Évalué à 2.

        Alors pourquoi greg KH explique-t-il dans le post cité dans le journal qu'il faut activer l'option CONFIG_CMDLINE et y mettre les options à passer au noyau?

        • [^] # Re: Sans bootloader

          Posté par  . Évalué à 8.

          Ça c'est si tu veux utiliser Secure Boot et booter un noyau signé, auquel cas faut que tu boot un truc self-contained (noyal+paramètres+initrd) dans un seul binaire que tu vas signer et qui bougera plus d'un octet.

  • # On signe quoi, en fait?

    Posté par  . Évalué à 8.

    A l'origine, on disait que UEFI et Secure Boot, c'est le mal car il était impossible de signer un bootloader sans les bonnes clés.

    Aujourd'hui, UEFI semble devenir politiquement acceptable et il est possible de signer un noyau ?!

    On le signe avec quelle clé, en fait? Car si on peut signer un noyau on devrait pouvoir signer un bootloader avec la même clé, ou j'ai rien compris?

    • [^] # Re: On signe quoi, en fait?

      Posté par  . Évalué à 6.

      Je n'ai lu que l'article lié par le journal (qui dit d'aller en lire d'autres si on veut les détails), et encore, en diagonale, mais si j'ai bien compris on remplace pour cette manœuvre les clés présentes sur l'ordinateur par ses propre clés, puis on se sert de ces clés pour signer son noyau.

      Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.

      • [^] # Re: On signe quoi, en fait?

        Posté par  . Évalué à 3.

        Et ça implique de désactiver le SecureBoot pendant ce temps, ce n'est donc pas tout à fait optimal.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: On signe quoi, en fait?

          Posté par  (site web personnel) . Évalué à 5.

          C'est optimal parce que seul le développeur doit le faire et c'est le but.
          Si tu codes pour ta machine et veut exécuter n'importe quel code de test, ben Secure boot n'est pas pour toi et tu le désactives.

      • [^] # Re: On signe quoi, en fait?

        Posté par  . Évalué à 3.

        On remplace ou on ajoute des clés?

        Dans le cas 1 c'est vraiment moisi car adieu le mutiboot, dans le deuxième cas c'est effectivement bien; cependant je m'interroge toujours sur la pertinence de uefi; ça fait combien de temps qu'un virus s'est installé sur un bootloader?

        Il ne faut pas décorner les boeufs avant d'avoir semé le vent

        • [^] # Re: On signe quoi, en fait?

          Posté par  . Évalué à 5.

          L'article parle de remplacer les clefs.

          « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: On signe quoi, en fait?

          Posté par  (site web personnel) . Évalué à 3.

          en fait assez récemment, il y a eue un article dans misc sur le secure boot et la chaine de propagation.

          j ai vu une jolie prez aux techdays en février, ou le gentil monsieur nous expliquais qu il y avait de plus en plus de virus bios/firwmare,… qui était totalement volatile, une vrai cochonnerie. et ce n'est pas réserver a Microsoft ce genre de bête vus la méthode cela pourrait être n importe quel OS.

          bios/firmware moisi-> secure boot (contaminé) -> suis toute la chaîne de signature et propage le code moisi-> OS vérolé

          pour windows, cela se traduisait pas une infection de la Hive en RAM, aucune écriture disque, et la charge virale n était pas active en l état.

          dans le cas d un linux on voit très bien que l on pourrait injecter un second ramdisk avec une charge en module (fantôme) sans aucun problème.

          http://numerique.ed-diamond.com/produit/234/9786000050320/MISC%20n67%20%20Apple%20%20Mac%20ou%20la%20face%20cachee%20de%20la%20pomme

          vers la page 75

    • [^] # Re: On signe quoi, en fait?

      Posté par  (site web personnel) . Évalué à -5.

      A l'origine, on disait que UEFI et Secure Boot, c'est le mal car il était impossible de signer un bootloader sans les bonnes clés.

      C'était du bon gros FUD et des "faisons-nous peur avec Microsoft en méchant".
      La réalité est "légèrement" différente (mais il faut accepter de passer par Microsoft certes, mais c'est lui qui fait le boulot sur la clé maitre dans les BIOS, n'importe qui d'autre peut le faire aussi si il est assez interesant pour les vendeurs de carte mère, et c'est normal).
      C'est plus dur pour les "anti" de reconnaître ensuite que Microsoft est loi d'être le méchant dans l'histoire.

      • [^] # Re: On signe quoi, en fait?

        Posté par  . Évalué à 6.

        Je crois me souvenir que le problème avec l'UEFI était surtout sur les tablettes Windows RT, pas pour les PC (ou alors il fallait tomber sur une config un peu particulière).

        Sinon, le fait de devoir passer par Microsoft pour installer un Linux est un problème, même si c'est possible de le faire.

        • [^] # Re: On signe quoi, en fait?

          Posté par  (site web personnel) . Évalué à -6.

          les tablettes sont une histoire à part, complètement HS par rapport à SecureBoot : Secureboot est la pour accepter certaines signatures, et peut être désactivé, point barre.
          Qu'ensuite il y a un cas spécial (tablettes sur lesquelles Microsoft enlève une fonctionnalité de secureBoot qui est la possibilité de désactiver) est un autre problème.

          tu penses sérieusement qu'ici les gens parlent des tablettes? Le gros soucis est qu'en mélangeant deux sujet distincts, le libre s'est (encore une fois) couvert de ridicule avec des gens mélangeant tout se faisant entendre.
          Je trouve les gens "extérieurs" qui s’intéressent au libre très courageux, avec toutes les bêtises qui sont dites.

          • [^] # Re: On signe quoi, en fait?

            Posté par  . Évalué à 6.

            Euh de mémoire, ce que tu dis est faux.
            A l'origine, avant de rétropédaler en catastrophe, l'état de guidelines étaient les suivantes :

            • Secureboot fortement recommandé
            • il n'y avait pas obligation à pouvoir désactiver secureboot
            • il n'y avait pas d'obligation à ce que l'utilisateur puisse rajouter des clefs
            • les politiques de signature de Microsoft étaient inexistantes ou inconnues.

            Un petit peu de wikipedia .
            Vu le passif de Microsoft avec TCPA/Palladium, je trouve gonflé que de dire que le libre s'est couvert de ridicule vu les trous dans la raquette de leur côté.

            • [^] # Re: On signe quoi, en fait?

              Posté par  . Évalué à -4.

              il n'y avait pas obligation à pouvoir désactiver secureboot
              il n'y avait pas d'obligation à ce que l'utilisateur puisse rajouter des clefs

              Faux.

              Ce n'etait simplement pas publique car Windows 8 etait en cours de developpement et on ne publie evidemment rien des guidelines a ce moment la.

              Que cela n'ait pas ete publique au moment ou les gens se sont mis a crier ne veut pas dire que ce n'etait pas le cas. (Et la raison pour laquelle ca l'etait deja sur x86 etait simple : eviter des problemes anti-trust)

              • [^] # Re: On signe quoi, en fait?

                Posté par  . Évalué à 1.

                Ce n'etait simplement pas publique car Windows 8 etait en cours de developpement et on ne publie evidemment rien des guidelines a ce moment la

                Le "évidemment" n'engage que toi. Cela dit, au moment où c'est sorti, j'ai assisté à quelques réunions où les gens de Microsoft qui présentaient ont passablement dégusté, donc peut-être que la prochaine fois, la communication technique sera un peu plus soignée.

              • [^] # Re: On signe quoi, en fait?

                Posté par  . Évalué à 5.

                Ou peut-être que c'est ce qu'ils voulaient effectivement faire puis qu'ils ont rétro-pédalé en voyant le tollé. Il y a une boîte dans le secteur des consoles de jeux qui a fait ça, récemment (avec des annonce officielles dans ce cas là, c'est vrai.)

                Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.

                • [^] # Re: On signe quoi, en fait?

                  Posté par  . Évalué à -5.

                  Il y a aussi une boite qui s'est fait sacrement emmerder a cause de problemes anti-trust dans le passe, et qui prefere eviter d'y regouter…

                  • [^] # Re: On signe quoi, en fait?

                    Posté par  . Évalué à 4. Dernière modification le 10 septembre 2013 à 18:06.

                    Si je me trompe pas, les premiers procès anti-trust contre MS, c'etait dans les années 90.

                    L'europe vient encore de condamner MS pour des abus de position dominante, pas plus tard que la semaine dernière, et concernant… Windows 7 !

                    C'est pas parce qu'ils se sont fait chopper une fois qu'ils ont arrété. L'histoire le prouve. Alors nosu faire croire que mtnt ils le font plus parce qu'ils ont peur de se faire chopper… C'est un peu gros !

          • [^] # Re: On signe quoi, en fait?

            Posté par  . Évalué à 1.

            Le gros soucis est qu'en mélangeant deux sujet distincts, le libre s'est (encore une fois) couvert de ridicule avec des gens mélangeant tout se faisant entendre.

            Deux sujets distincts ?

            C'est quoi, au fond, la différence entre un ordinateur et une tablette ? Parce qu'il me semble qu'une tablette EST un ordinateur.

      • [^] # Re: On signe quoi, en fait?

        Posté par  . Évalué à 3.

        La réalité est "légèrement" différente (mais il faut accepter de passer par Microsoft certes,

        Ça n'a rien à voir avec la méthode décrite dans l'article.

        Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.

      • [^] # Re: On signe quoi, en fait?

        Posté par  . Évalué à 6.

        mais il faut accepter de passer par Microsoft certes

        Vu l'ambiance et le contexte avec la NSA, c'est quand même assez compréhensible que beaucoup ne veuillent pas le faire…

        Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

      • [^] # Re: On signe quoi, en fait?

        Posté par  . Évalué à 6.

        n'importe qui d'autre peut le faire aussi si il est assez interesant pour les vendeurs de carte mère
        Ça ne ressemble pas à une histoire de, euh, position dominante ça ? Voire d'abus ?

    • [^] # Re: On signe quoi, en fait?

      Posté par  . Évalué à 2.

      Aujourd'hui, UEFI semble devenir politiquement acceptable et il est possible de signer un noyau ?!

      Je suppose que c'est plutôt le « principe de réalité » :
      - de plus en plus de machines sont purement UEFI, il faut bien que Linux tourne dessus. Le plus simplement possible (pas gagné)
      - même un truc chiant peut avoir des avantages, autant en tirer parti lorsqu'on est obligé de supporter les inconvénients

      • [^] # Re: On signe quoi, en fait?

        Posté par  (site web personnel) . Évalué à 8.

        Le problème de tous ses TPM, c'est toujours de savoir qui contrôle les clefs.

        Dans le trust computing, les master clefs étaient géré par une instance extérieur, un peu comme si quelqu'un d'autre d'inconnu avait les clefs de chez vous.

        Si les clefs sont contrôlé à l'installation, par l'utilisateur uniquement, c'est au contraire une téchno utile.

        "La première sécurité est la liberté"

    • [^] # Re: On signe quoi, en fait?

      Posté par  . Évalué à 4.

      Bon, j'ai lu un peu de doc, et si j'en comprends bien:

      SecureBoot est livré avec un jeu de clés. Ces clés permettent de charger uniquement un système signé. Là, pour linux, on est grillé car on va devoir signer un noyau, ce qui dépend de la bonne volonté du détenteur des clés (microsoft) de signer, et empêche toute upgrade simple par la suite d'autre part.

      Sauf qu'il est possible de désactiver SecureBoot, et remplacer les clés fournies par d'autres. Gros avantage pour les linuxiens: on peut signer ses noyaux, merci GKH du post de blog qui explique comment faire. Au passage, on perd la possibilité de booter du Windows signé, mais ça ne concerne que ceux qui font du multiboot, autant dire que je m'en fiche étant full linux depuis fort longtemps.

      Mais cela soulève un problème: si on peut virer les clés, qu'est ce qui empêche un pirate de désactiver secure boot, de remplacer les clés par les siennes, et de signer un noyau vérolé (ou pire un kernel windows ;) )

      • [^] # Re: On signe quoi, en fait?

        Posté par  . Évalué à 7.

        Mais cela soulève un problème: si on peut virer les clés, qu'est ce qui empêche un pirate de désactiver secure boot, de remplacer les clés par les siennes, et de signer un noyau vérolé (ou pire un kernel windows ;) )

        Il faut un accès physique pour désactiver SecureBoot (et le mot du passe du menu de l'UEFI, ou enlever la pile), ce qui veut dire que n'importe quel malware récupéré sur le Web ne pourra pas le faire. Et c'est la seule protection de SecureBoot en version grand public.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: On signe quoi, en fait?

          Posté par  . Évalué à 1.

          Il faut un accès physique pour désactiver SecureBoot

          Bah oui, mais c'est le principal (unique?) avantage de secure boot.

          Scénario (avant secure boot):
          tu laisses ton portable éteint sans surveillance. Un gars vient, utilise un liveCD, monte le disque et lit toutes les données. La solution, c'est le chiffrement de disque!
          Mais un attaquant peut venir sur ton portable sans surveillance, monter la partition /boot (qui est forcément en clair) et modifier ton noyau/initrd par un autre vérolé qui keylogge ton mot de passe. Il attend que tu te relogues, et il va récupérer une deuxième fois ton portable et hop les données.

          Solution: SecureBoot, avec la machine qui va refuser de booter un kernel autre que celui signé. Donc, c'est génial car cela évite ce problème.

          Mais si l'attaquant peut venir, désactiver secure boot, et mettre son noyau pourri, alors l'interêt de secureboot est réduit du coup.

          • [^] # Re: On signe quoi, en fait?

            Posté par  . Évalué à 2.

            monter la partition /boot (qui est forcément en clair)

            Généralement on recommande de stocker le /boot sur une clé USB pour éviter ce genre de problèmes, par exemple sous Gentoo. Dans les deux cas il reste tout un tas d’attaques possibles, par exemple un mini keylogger physique entre le clavier et la machine.

            • [^] # Re: On signe quoi, en fait?

              Posté par  . Évalué à 2.

              Ou l'attaquant place un /boot sur le disque qui ne lit pas la clef usb, je ne pense pas que tu vas vérifier à chaque démarrage, l'ordre de boot (en plus, il pourrait avoir remplacer le bios/uefi par un qui afficherait qu'il boot de la clef usb mais en fait non.

              « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

          • [^] # Re: On signe quoi, en fait?

            Posté par  (site web personnel) . Évalué à 3.

            Mais si l'attaquant peut venir, désactiver secure boot, et mettre son noyau pourri, alors l'interêt de secureboot est réduit du coup.

            C'est pour ça qu'on a inventé un super truc : le mot de passe pour l'accès au BIOS.
            Va alors falloir beaucoup de temps pour démonter la machine (très dur avec les derniers portable "unibody" sans renvoyer au fabriquant), ça veut alors dire que la machine est perdue.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.