Analyse de la nature de SBAT et des problÚmes de mise à jour vers Windows, impactant le démarrage de Linux

Matthew Garrett, un dĂ©veloppeur du noyau Linux reconnu qui a reçu autrefois un prix du fonds de logiciels libres pour sa contribution au dĂ©veloppement de logiciels libres, a expliquĂ© la nature du mĂ©canisme SBAT (Secure Boot Advanced Targeting), conçu pour bloquer les vulnĂ©rabilitĂ©s dans le chargeur de dĂ©marrage sans rĂ©voquer de signatures numĂ©riques, ainsi que son rĂŽle dans l'incident rĂ©cent liĂ© Ă  une mise Ă  jour de Windows qui a conduit Ă  l'arrĂȘt du dĂ©marrage de certaines distributions Linux installĂ©es parallĂšlement Ă  Windows sur des systĂšmes avec UEFI Secure Boot activĂ©. En rĂ©sumĂ©, la responsabilitĂ© incombe tant Ă  Microsoft, qui n'a pas testĂ© l'ensemble de la mise Ă  jour ni appliquĂ© celle-ci aux systĂšmes auxquels elle ne devait pas ĂȘtre appliquĂ©e, qu'aux dĂ©veloppeurs de certaines distributions Linux, qui n'ont pas mis Ă  jour le chargeur GRUB et la version de SBAT lorsque des vulnĂ©rabilitĂ©s ont Ă©tĂ© dĂ©couvertes dans GRUB.

Voici la traduction de l'article de Garrett :

Lorsque la spĂ©cification UEFI Secure Boot Ă©tait en cours de dĂ©veloppement, tous les participants Ă©taient, disons, un peu naĂŻfs. Le modĂšle de sĂ©curitĂ© principal de Secure Boot stipule que tout code s'exĂ©cutant dans un environnement privilĂ©giĂ© au niveau du noyau doit ĂȘtre vĂ©rifiĂ© avant d'ĂȘtre exĂ©cutĂ© — le firmware vĂ©rifie le chargeur de dĂ©marrage, le chargeur de dĂ©marrage vĂ©rifie le noyau, le noyau vĂ©rifie tout code supplĂ©mentaire chargĂ© en cours d'exĂ©cution, et maintenant nous avons un environnement de confiance pour imposer toute autre politique de sĂ©curitĂ© que nous souhaitons. Il est Ă©vident que les individus peuvent faire des erreurs, mais la spĂ©cification prĂ©voyait un moyen de rĂ©voquer les composants signĂ©s qui se sont rĂ©vĂ©lĂ©s non fiables : il suffisait d'ajouter le hachage du code non fiable Ă  une variable, puis de refuser de charger quoi que ce soit avec ce hachage, mĂȘme s'il Ă©tait signĂ© par une clĂ© de confiance.

Malheureusement, il s'avĂšre que le problĂšme est Ă  l'Ă©chelle. Chaque distribution Linux fonctionnant dans l'Ă©cosystĂšme Secure Boot gĂ©nĂšre ses propres fichiers binaires de chargeur, et chacun d'eux a son propre hachage. Si une vulnĂ©rabilitĂ© est trouvĂ©e dans le code source d'un tel chargeur, il est nĂ©cessaire de rĂ©voquer un grand nombre de fichiers binaires diffĂ©rents. Et l'espace mĂ©moire pour stocker la variable contenant tous ces hachages est limitĂ©. Il n'y a tout simplement pas assez de place pour ajouter un nouvel ensemble de hachages chaque fois qu'il s'avĂšre que GRUB (le chargeur, Ă  l'origine Ă©crit Ă  une Ă©poque oĂč la protection du dĂ©marrage n'Ă©tait pas pratiquĂ©e, et ayant plusieurs analyseurs d'images img, ainsi qu'un analyseur de polices) a encore un autre mĂ©canisme pour un attaquant pour le forcer Ă  exĂ©cuter du code arbitraire, donc une autre solution Ă©tait nĂ©cessaire.

Cette solution est devenue SBAT. Le concept gĂ©nĂ©ral de SBAT est assez simple. Chaque composant important de la chaĂźne de dĂ©marrage dĂ©clare une gĂ©nĂ©ration de sĂ©curitĂ©, qui est incluse dans le fichier binaire signĂ©. Lorsque la vulnĂ©rabilitĂ© est dĂ©tectĂ©e et corrigĂ©e, cette gĂ©nĂ©ration augmente. Ensuite, une mise Ă  jour peut ĂȘtre Ă©mise, dĂ©finissant la gĂ©nĂ©ration minimale — les composants de dĂ©marrage vĂ©rifieront l'Ă©lĂ©ment suivant de la chaĂźne, compareront son nom et son numĂ©ro de gĂ©nĂ©ration avec ceux stockĂ©s dans la variable du firmware, et dĂ©cideront de l'exĂ©cuter ou non sur cette base. Au lieu de rĂ©voquer un grand nombre de hachages individuels, une seule mise Ă  jour peut ĂȘtre Ă©mise, qui dit simplement : « Toute version de GRUB avec une gĂ©nĂ©ration de sĂ©curitĂ© infĂ©rieure Ă  ce numĂ©ro est considĂ©rĂ©e comme non fiable ».

Pourquoi cela est-il devenu soudainement pertinent ? SBAT a été développé conjointement par la communauté Linux et Microsoft, et Microsoft a décidé de publier une mise à jour pour Windows qui a dit aux systÚmes de ne pas faire confiance aux versions de GRUB avec une génération de sécurité inférieure à un certain niveau. Cela a été fait car ces versions de GRUB avaient de réelles vulnérabilités de sécurité qui permettaient aux attaquants de compromettre la chaßne de démarrage sécurisée de Windows, et nous avons vu des exemples réels de logiciels malveillants cherchant à le faire (Black Lotus a utilisé une vulnérabilité dans le chargeur Windows, mais la vulnérabilité de GRUB était tout aussi efficace). Vu sous l'angle de la sécurité, c'est un désir tout à fait légitime.

Concernant le message « Quelque chose s'est mal passé » et l'impossibilité de démarrer suite à cette mise à jour, il provient de shim, et non d'un code de Microsoft. Shim prend en compte les mises à jour SBAT, et afin de respecter les principes de sécurité adoptés par d'autres chargeurs dans le systÚme, bien que Microsoft ait publié une mise à jour SBAT, c'est le chargeur Linux qui refuse de lancer les anciennes versions de GRUB. Tout fonctionne comme prévu.

Le problĂšme auquel les gens sont confrontĂ©s est que plusieurs distributions Linux n'ont pas publiĂ© de versions de GRUB avec une gĂ©nĂ©ration de sĂ©curitĂ© plus rĂ©cente, et donc ces versions de GRUB sont considĂ©rĂ©es comme non sĂ©curisĂ©es (il convient de noter que GRUB est signĂ© par les distributions elles-mĂȘmes, et non par Microsoft, il n'y a donc pas de retard introduit de l'extĂ©rieur). Selon Microsoft, la mise Ă  jour Windows Update devait appliquer la mise Ă  jour SBAT uniquement aux systĂšmes fonctionnant exclusivement avec Windows, tandis que toute installation en double dĂ©marrage resterait vulnĂ©rable aux attaques tant que la distribution installĂ©e ne mettrait pas Ă  jour GRUB et ne mettrait pas Ă  jour la gĂ©nĂ©ration SBAT. Malheureusement, comme il est dĂ©sormais Ă©vident, cela n'a pas fonctionnĂ© comme prĂ©vu, et certaines systĂšmes en double dĂ©marrage ont appliquĂ© la mise Ă  jour, alors que Shim de cette distribution a refusĂ© de charger GRUB de cette distribution.

Quel est le rĂ©sultat ? Microsoft (pour des raisons comprĂ©hensibles) ne voulait pas que Windows puisse ĂȘtre attaquĂ© avec une version vulnĂ©rable de GRUB, qui pourrait ĂȘtre trompĂ©e pour exĂ©cuter du code arbitraire et ensuite injecter un bootkit dans le noyau Windows pendant le dĂ©marrage. Microsoft a rĂ©alisĂ© cela en publiant une mise Ă  jour Windows qui a mis Ă  jour la variable SBAT, indiquant que les versions vulnĂ©rables de GRUB ne devaient pas se charger sur ces systĂšmes. Le chargeur de premier niveau fourni par la distribution lisait cette variable, lisait la section SBAT de la copie GRUB installĂ©e, rĂ©alisait qu'il y avait un conflit et refusait de charger grub avec le message « Quelque chose s'est mal passĂ© ». Cette mise Ă  jour ne devait pas s'appliquer aux systĂšmes en double dĂ©marrage, mais elle a tout de mĂȘme Ă©tĂ© appliquĂ©e.

En résumé :

1) Microsoft a appliqué la mise à jour à des systÚmes à laquelle elle ne devait pas s'appliquer

2) Certaines distributions Linux n'ont pas mis à jour le chargeur GRUB et la génération de sécurité SBAT lorsque des vulnérabilités ont été découvertes dans GRUB.

En consĂ©quence, certaines personnes ne peuvent pas dĂ©marrer leurs systĂšmes. Je pense qu'il y a beaucoup de responsables ici. Microsoft aurait dĂ» effectuer plus de tests pour s'assurer que les installations en double dĂ©marrage peuvent ĂȘtre dĂ©tectĂ©es avec prĂ©cision. Mais les distributions fournissant des chargeurs signĂ©s doivent Ă©galement s'assurer qu'elles les mettent Ă  jour et actualisent les versions de sĂ©curitĂ© pour s'y conformer, sinon elles fournissent un vecteur d'attaque pouvant ĂȘtre utilisĂ© pour compromettre d'autres systĂšmes d'exploitation, et c'est en quelque sorte une violation du contrat social qui entoure tout cela.

Malheureusement, les victimes ici sont principalement les utilisateurs finaux, confrontĂ©s Ă  une situation oĂč le systĂšme refuse soudainement de dĂ©marrer l'OS qu'ils souhaitent lancer. Cela ne devrait jamais se produire. Je ne pense pas qu'un sondage auprĂšs des utilisateurs finaux sur leur dĂ©sir d'avoir des mises Ă  jour du systĂšme de dĂ©marrage sĂ©curisĂ© aura un bon rĂ©sultat, et bien que je penche en quelque sorte vers le fait que le dĂ©marrage sĂ©curisĂ© UEFI n'apporte pas d'avantages Ă  la plupart des utilisateurs finaux, c'est aussi une chose que vous ne voulez pas dĂ©couvrir aprĂšs de tels incidents. C'est pourquoi je sympathise avec le fait qu'il soit activĂ© par dĂ©faut, donc je soutiens son activation par dĂ©faut, partageant le choix de Microsoft, Ă  l'exception de la tentative infructueuse d'Ă©viter les mises Ă  jour sur les systĂšmes en double dĂ©marrage.

Quoi qu'il en soit, j'ai Ă©tĂ© fortement impliquĂ© dans la mise en Ɠuvre de ce mĂ©canisme pour Linux en 2012 et j'ai Ă©crit le premier prototype de Shim (qui est maintenant un chargeur beaucoup mieux soutenu par un plus large Ă©ventail de personnes, et auquel je n'ai pas touchĂ© depuis plusieurs annĂ©es). Donc, si vous voulez accuser quelqu'un, n'hĂ©sitez pas Ă  m'accuser. C'est quelque chose qui ne devrait pas arriver, et si vous n'ĂȘtes pas Microsoft ou une distribution Linux, ce n'est pas de votre faute. Je m'excuse.

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster