Comment atténuer les vulnérabilités de Spectre et de Meltdown sur les systèmes Linux?

34

Des chercheurs en sécurité ont publié sur le projet Zéro une nouvelle vulnérabilité appelée Spectre et fusion pour permettre à un programme de voler des informations dans la mémoire d’autres programmes. Cela affecte les architectures Intel, AMD et ARM.

Cette faille peut être exploitée à distance en visitant un site web JavaScript. Les détails techniques sont disponibles sur le site Web redhat , l’ équipe de sécurité Ubuntu .

Fuite d'informations lors d'attaques spéculatives sur les canaux secondaires d'exécution (CVE-2017-5715, CVE-2017-5753, CVE-2017-5754, alias Spectre et Meltdown)

Il a été découvert qu'une nouvelle classe d'attaques par canaux auxiliaires affecte la plupart des processeurs, notamment les processeurs Intel, AMD et ARM. L’attaque permet aux processus de l’espace utilisateur malveillant de lire la mémoire du noyau et le code malveillant des invités de lire la mémoire de l’hyperviseur. Pour résoudre ce problème, des mises à jour du noyau Ubuntu et du microcode du processeur seront nécessaires. Ces mises à jour seront annoncées dans les prochains avis de sécurité Ubuntu dès qu'elles seront disponibles.

Exemple d'implémentation en JavaScript

Comme preuve de concept, du code JavaScript a été écrit qui, lorsqu'il est exécuté dans le navigateur Google Chrome, permet à JavaScript de lire la mémoire privée à partir du processus dans lequel il s'exécute.

Mon système semble être affecté par la vulnérabilité du spectre. J'ai compilé et exécuté cette preuve de concept ( spectre.c).

Informations système:

$ uname -a
4.13.0-0.bpo.1-amd64 #1 SMP Debian 4.13.13-1~bpo9+1 (2017-11-22) x86_64 GNU/Linux

$ cat /proc/cpuinfo
model name  : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz

$gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516

Comment atténuer les vulnérabilités Spectre et Meldown sur les systèmes Linux?

Lectures supplémentaires: Utilisation de Meltdown pour voler des mots de passe en temps réel .

Mise à jour

Utilisation de l' Spectre & Meltdown Checkeraprès le passage à la 4.9.0-5version du noyau suivante réponse @Carlos Pasqualini , car une mise à jour de sécurité est disponible pour atténuer les CVE-2017-5754 sur debian Stretch:

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  NO  (only 31 opcodes found, should be >= 70)
> STATUS:  VULNERABLE  (heuristic to be improved when official patches become available)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation:  NO 
*   Kernel support for IBRS:  NO 
*   IBRS enabled for Kernel space:  NO 
*   IBRS enabled for User space:  NO 
* Mitigation 2
*   Kernel compiled with retpoline option:  NO 
*   Kernel compiled with a retpoline-aware compiler:  NO 
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  YES 
* PTI enabled and active:  YES 
> STATUS:  NOT VULNERABLE  (PTI mitigates the vulnerability)

Mise à jour le 25 janvier 2018

Le spectre-meltdown-checkerscript est officiellement emballé par debian, il est disponible pour Debian Stretch via le référentiel de backports, Buster et Sid.

Mise à jour 22/05/2018

Dérivation spéculative de magasin (SSB) - également appelée variante 4

Les systèmes dotés de microprocesseurs utilisant une exécution spéculative et une exécution spéculative de lectures en mémoire avant la connaissance des adresses de toutes les écritures précédentes peuvent permettre la divulgation non autorisée d'informations à un attaquant disposant d'un accès utilisateur local via une analyse par canal latéral.

Rogue System Register Read (RSRE) - également connu sous le nom de variante 3a

Les systèmes dotés de microprocesseurs utilisant une exécution spéculative et effectuant des lectures spéculatives de registres système peuvent permettre la divulgation non autorisée de paramètres système à un attaquant disposant d'un accès utilisateur local via une analyse par canal latéral.

Modifier le 27 juillet 2018

NetSpectre: Lecture de mémoire arbitraire sur le réseau

Dans cet article, nous présentons NetSpectre, une nouvelle attaque basée sur la variante 1 de Spectre, ne nécessitant aucun code sous le contrôle de l'attaquant sur le périphérique cible, affectant ainsi des milliards de périphériques. Semblable à une attaque Spectre locale, notre attaque à distance nécessite la présence d'un gadget Spectre dans le code de la cible. Nous montrons que les systèmes contenant les gadgets Specter requis dans une interface réseau ou une API exposée peuvent être attaqués avec notre attaque Specter à distance générique, ce qui permet de lire de la mémoire arbitraire sur le réseau. L'attaquant n'envoie qu'une série de requêtes spécialement conçues à la victime et mesure le temps de réponse nécessaire à la fuite d'une valeur secrète de la mémoire de la victime.

GAD3R
la source
1
J'ai enlevé la balise Debian pour permettre à ce Q de s'appliquer à tout Linux (selon le titre); Revenez si vous avez l’intention de vous concentrer uniquement sur Debian.
Jeff Schaller

Réponses:

12

Alan Cox a partagé un lien du blog d'AMD: https://www.amd.com/fr/corporate/speculative-execution

Première variante: Bounds Check Bypass

Résolu par les mises à jour de logiciels / systèmes d'exploitation à mettre à disposition par les vendeurs et les fabricants de systèmes. Impact sur les performances négligeable attendu.

Variante deux: injection de cible de branche

Les différences d'architecture d'AMD signifient que le risque d'exploitation de cette variante est quasi nul. La vulnérabilité à la variante 2 n'a pas été démontrée sur les processeurs AMD à ce jour.

Variante trois: chargement du cache de données non fiables

Zéro vulnérabilité AMD due aux différences d'architecture AMD.

Cependant, il serait bon d’avoir confirmation des déclarations de ces sociétés par une tierce partie.

Les 'mesures d'atténuation' sur les systèmes affectés nécessiteraient un nouveau noyau et un redémarrage, mais sur de nombreuses distributions, aucun package contenant les correctifs n'est encore disponible:

Debian:

Autres sources d'informations que j'ai trouvées:

Carlos Pasqualini
la source
12
Toute une série d'informations AMD ne va pas aider un questionneur dont le processeur est un processeur Intel Core.
JdeBP
4
Pour le noyau Linux, voir le message de Greg Kroah-Hartman: kroah.com/log/blog/2018/01/06/meltdown-status
alanc
Selon les pages debian liées ci-dessus (et les pages liées), il semble que les correctifs du noyau soient distribués au fur et à mesure que les fournisseurs responsables publient leur microcode. Toutefois, d'après security-tracker.debian.org/tracker/CVE-2017-5754 (le seul corrigé à ce jour), il semble que des correctifs n'aient été mis à la disposition que des versions stables et instables. Est-ce que quelqu'un sait si nous pouvons nous attendre à des corrections pour oldstable ("jessie")? Je n'ai pu trouver aucune déclaration de Debian ou de l'équipe de sécurité Debian à ce sujet ...
Shevek
11

27 janvier 2018 Intel Microcode casse certains systèmes

La mise à jour 2018-01-08 d’Intel Microcode, destinée à résoudre les problèmes de sécurité liés au branchement d’exécution spéculatifs, a endommagé certains systèmes. Cela a affecté de nombreux systèmes Ubuntu du 8 au 21 janvier. Le 22 janvier 2018, Ubuntu a publié une mise à jour qui remet l'ancien Microcode du 2017-07-07.

Si vous avez rencontré des problèmes avec les mises à jour, que vous avez réinstallé Ubuntu et que vous avez désactivé les mises à jour entre le 2018-01-08 et le 2018-01-22, vous souhaiterez peut-être essayer à nouveau les mises à jour automatiques d'Ubuntu.

Mise à jour du Spectre du 16 janvier 2018 dans les versions 4.14.14 et 4.9.77

Si vous exécutez déjà les versions de noyau 4.14.13 ou 4.9.76 telles que je suis, l'installation est simple 4.14.14et 4.9.77lorsqu'elles sortent dans quelques jours pour atténuer la faille de sécurité de Spectre. Le nom de ce correctif est Retpoline et ne présente pas les conséquences graves en termes de performances spécifiées précédemment:

Greg Kroah-Hartman a envoyé les derniers correctifs pour les versions Linux 4.9 et 4.14, qui incluent désormais le support Retpoline.

Ce X86_FEATURE_RETPOLINE est activé pour tous les processeurs AMD / Intel. Pour un support complet, vous devez également construire le noyau avec un compilateur GCC plus récent contenant le support -mindirect-branch = thunk-extern. Les modifications apportées par GCC ont atterri dans GCC 8.0 hier et sont sur le point d'être potentiellement rétroportées vers GCC 7.3.

Ceux qui souhaitent désactiver le support Retpoline peuvent démarrer les noyaux corrigés avec noretpoline .

Sans entrer dans les détails de JavaScript, voici comment éviter immédiatement le trou de fusion (et à compter du 10 janvier 2018, Spectre protection)

Mise à jour du 12 janvier 2018

La protection initiale de Spectre est là et sera améliorée dans les semaines et les mois à venir.

Noyaux Linux 4.14.13, 4.9.76 LTS et 4.4.111 LTS

De cet article de Softpedia :

Les noyaux Linux 4.14.13, 4.9.76 LTS et 4.4.111 LTS sont maintenant disponibles au téléchargement sur kernel.org, et ils incluent davantage de corrections concernant la vulnérabilité de sécurité de Specter, ainsi que certaines régressions sous Linux 4.14.12, 4.9. .75 LTS et 4.4.110 noyaux LTS publiés la semaine dernière, certains rapportant des problèmes mineurs.

Ces problèmes semblent être résolus maintenant. Il est donc prudent de mettre à jour vos systèmes d’exploitation Linux avec les nouvelles versions du noyau publiées aujourd’hui, qui incluent davantage de mises à jour x86, certains correctifs PA-RISC, s390 et PowerPC (PPC), diverses améliorations apportées pilotes (Intel i915, crypto, IOMMU, MTD) et les modifications habituelles des noyaux mm et core.

De nombreux utilisateurs ont eu des problèmes avec les mises à jour Ubuntu LTS le 4 janvier 2018 et le 10 janvier 2018. Je l'utilise 4.14.13depuis quelques jours sans aucun problème, toutefois, YMMV .


Mise à jour du 7 janvier 2018

Greg Kroah-Hartman a écrit hier une mise à jour de la situation concernant les failles de sécurité du noyau Meltdown et du noyau Spectre Linux. Certains pourraient l'appeler le deuxième homme le plus puissant du monde Linux, juste après Linus. L'article traite des noyaux stables (décrits ci-dessous) et des noyaux LTS dont disposent la majorité des utilisateurs d'Ubuntu.


Noyaux Linux 4.14.11, 4.9.74, 4.4.109, 3.16.52 et 3.2.97: Défaut de fusion du correctif

De cet article :

Les utilisateurs sont invités à mettre à jour leurs systèmes immédiatement

4 janvier 2018 01h42 GMT · Par Marius Nestor

Les mainteneurs du noyau Linux, Greg Kroah-Hartman et Ben Hutchings, ont publié une nouvelle version des séries de noyaux Linux 4.14, 4.9, 4.4, 3.16, 3.18 et 3.12 du LTS (support à long terme) qui corrigent apparemment l'une des deux failles de sécurité critiques affectant la plupart des systèmes modernes. processeurs.

Les noyaux Linux 4.14.11, 4.9.74, 4.4.109, 3.16.52, 3.18.91 et 3.2.97 sont maintenant disponibles pour téléchargement sur le site Web kernel.org, et les utilisateurs sont instamment invités à mettre à jour leurs distributions GNU / Linux. à ces nouvelles versions s’ils exécutent immédiatement l’une de ces séries de noyaux. Pourquoi mettre à jour? Parce qu'ils corrigent apparemment une vulnérabilité critique appelée Meltdown.

Comme indiqué précédemment, Meltdown et Specter sont deux exploits qui affectent presque tous les périphériques alimentés par des processeurs modernes (CPU) lancés au cours des 25 dernières années. Oui, cela signifie presque tous les téléphones mobiles et les ordinateurs personnels. Meltdown peut être exploité par un attaquant sans privilège afin d'obtenir de manière malveillante des informations sensibles stockées dans la mémoire du noyau.

La vulnérabilité de correctif pour Spectre est toujours en cours

Bien que Meltdown soit une vulnérabilité sérieuse pouvant exposer vos données secrètes, y compris vos mots de passe et clés de cryptage, Spectre est encore pire et il n’est pas facile à corriger. Les chercheurs en sécurité disent que cela nous hantera pendant un certain temps. Spectre est connu pour exploiter la technique d'exécution spéculative utilisée par les processeurs modernes pour optimiser les performances.

Tant que le bogue Specter n'aura pas été corrigé, il est vivement recommandé de mettre au moins vos distributions GNU / Linux à jour avec l'une des versions du noyau Linux récemment publiées. Recherchez donc la nouvelle mise à jour du noyau dans les répertoires de logiciels de votre distribution préférée et installez-la dès que possible. N'attendez pas qu'il soit trop tard, faites-le maintenant!


J'utilisais le noyau 4.14.10 depuis une semaine et le téléchargement et le démarrage de la version 4.14.11 du noyau principal d'Ubuntu ne me posaient donc pas trop de problème.

Les utilisateurs d’Ubuntu 16.04 pourraient être plus à l’aise avec les versions de noyau 4.4.109 ou 4.9.74 publiées en même temps que 4.14.11.

Si vos mises à jour régulières n'installez pas la version du noyau souhaitée, vous pouvez le faire manuellement en suivant la réponse à cette question: Demandez à Ubuntu: https://askubuntu.com/questions/879888/how-do-i-update-kernel-to-the-latest -mainline-version / 879920 # 879920


4.14.12 - Quelle différence un jour fait

Moins de 24 heures après ma réponse initiale, un correctif a été publié pour corriger la version du noyau 4.14.11 qu’ils auraient pu se précipiter. La mise à niveau vers 4.14.12 est recommandée pour tous les utilisateurs 4.14.11. Greg-KH dit :

J'annonce la publication du noyau 4.14.12.

Tous les utilisateurs de la série de noyaux 4.14 doivent effectuer une mise à niveau.

Il existe quelques problèmes mineurs connus avec cette version que les gens ont rencontrés. Espérons qu'ils seront résolus ce week-end, car les correctifs n'ont pas atterri dans l'arbre de Linus.

Pour l'instant, comme toujours, veuillez tester votre environnement interne.

En regardant cette mise à jour, peu de lignes de code source ont été modifiées.

WinEunuuchs2Unix
la source
1
La solution existe maintenant pour Meltdown, disponible via apt-get dist-upgrade.
luchonacho
1
Sur mon téléphone maintenant, mais la mise à jour sur LTS provoque la panique du noyau le 10/01/2018. Voir Ask Ubuntu.
WinEunuuchs2Unix
1
Heureusement, je l'ai mis à jour avec 109 (108 donne la panique du noyau). Donc, n'a pas eu ce problème. Ça fonctionne bien.
luchonacho
1
@ WinEunuuchs2Unix, une mise à jour est disponible ici USN-3531-2: Régression du microcode Intel
GAD3R le
1
@ GAD3R Merci beaucoup pour le lien. Cela m'aide à poster une réponse dans Ask Ubuntu qui pourrait aider beaucoup de gens: askubuntu.com/questions/998471/…
WinEunuuchs2Unix
6

Cette faille peut être exploitée à distance en visitant un site web JavaScript.

Effectivement. Par conséquent, une solution raisonnable consiste à désactiver JavaScript dans vos navigateurs Web ou à utiliser des navigateurs Web qui ne prennent pas en charge JavaScript.

La plupart des navigateurs prenant en charge JavaScript ont un paramètre permettant de le désactiver. Par ailleurs, si vous souhaitez conserver une liste blanche de sites ou de domaines pour lesquels JavaScript doit être autorisé, plusieurs add-ons peuvent vous aider, tels que uBlock Origin et NoScript .

NB Il va sans dire que désactiver / restreindre JavaScript ne devrait pas être votre seule mesure d’ atténuation. Vous devez en outre examiner (et probablement appliquer) les correctifs de noyau et autres mises à jour de sécurité pertinents une fois qu'ils ont été écrits, testés et publiés. Sur les distributions dérivées de Debian, l' utilisation des commandes telles que sudo apt update , sudo apt list-upgradable, et sudo apt upgrade.

Mise à jour: ne me croyez pas sur parole. Alan Cox dit à peu près la même chose:

Ce que vous avez besoin de se soucier de grand temps javascript est parce que l'exploit peut être à distance utilisé par javascript sur les pages Web pour voler des choses de votre mémoire système. ... considérez des éléments tels que Adblockers et des extensions telles que noscript qui peuvent empêcher de nombreuses tâches inutiles de s'exécuter. Faites-le dès que possible. Lorsque les mises à jour du système d'exploitation apparaissent, appliquez-les. ( Source )

sampablokuper
la source
5
Excusez-moi, bien que cela aide contre l'attaque, sans JS, vous n'auriez pas pu laisser la réponse ici. Ce conseil est similaire à "cesser d'utiliser Internet" (en 2018).
Moritz Both le
4
@ MoritzBoth, heureusement, de nombreux sites fonctionnent bien sans JS. Malheureusement, StackExchange requiert JS pour la publication, comme vous le signalez. C'est une (grave!)
Lacune
3
Pour FireFox, un noScript comme addon pourrait aider à réduire l’utilisation de JavaScript sur des sites douteux - bien que les récents changements apportés par FF Quantum (V57) aient jeté une très grosse pierre dans l’ensemble du pool d’addons FF ...
SlySven
2
Depuis la sortie de Quantum, je suis passé à Pale Moon, pour cette raison. Cela fonctionne très bien pour moi, y compris NoScript et Cookie Masters (une fois Cookie Monster).
Murphy
2
@ MoritzBoth Je ne pense vraiment pas que désactiver JS revient à "arrêter d'utiliser le Web" et encore moins "arrêter d'utiliser Internet". Cependant, le moment est propice pour sensibiliser aux problèmes liés à la confiance universelle accordée à JS par certains fournisseurs de contenu Web.
Tobia Tesan
5

Le fait que ceci soit exploitable à l'aide de JavaScript n'est pas le principal problème, et ne devrait pas être la préoccupation principale (bien qu'il s'agisse d'un problème majeur car le code distant peut ainsi être facilement exécuté sur votre système, mais ce n'est pas le seul. comme cela peut arriver).

Votre focus ne devrait pas être sur Javascript et / ou votre navigateur. Idéalement, votre processeur devrait être corrigé. Malheureusement, pour la plupart des bugs actuels, cela ne semble pas possible. Debian, ensemble, toutes les autres parties fournissant des systèmes d’exploitation iront donc de la seule façon possible, à moins de recommander un CPU qui ne soit pas imparfait: elles obligent le système à contourner le bogue dans le CPU. Ces correctifs ne résolvent pas les problèmes. Au lieu de cela, le système d'exploitation les cache le mieux possible de tout programme qu'un utilisateur exécute sur la machine (et donc aussi sur votre navigateur).

Cette dissimulation est un travail de calcul supplémentaire, et donc les performances globales de votre système seront inférieures à celles de l'extérieur. Combien plus bas dépend probablement fortement de ce que font exactement ces programmes.

Gardez cela à l’esprit pour revenir à votre question: pour protéger votre système Debian, vous devez installer les mises à jour de sécurité. J'espère que Debian fera tout son possible, à la lumière de ces bugs, pour exécuter Debian de manière aussi sécurisée que possible, malgré les défauts inhérents au processeur.

Toutes sortes de grandes entreprises travaillent déjà sur cette question, de même que de nombreux gourous du matériel et de Linux. Je ne veux pas vous empêcher absolument d'essayer quelque chose vous-même ou d'essayer d'aider l'effort général. Cependant, si votre propre sécurité et une solution rapide sont tout ce qui vous intéresse, ils trouveront probablement une meilleure solution plus rapidement que vous ne le feriez, en commençant dès maintenant à examiner la question vous-même.

utilisateur68856
la source