Introduction aux vulnérabilités des processeurs Spectre et Meltdown
Une façon de bloquer ces attaques consiste à vider les caches mémoire à certains moments, en éliminant les informations exfiltrées avant que l'attaquant ne puisse y accéder. Le téléchargement du cache après chaque appel système bloquerait probablement un large éventail d'attaques spéculatives, mais cela ralentirait également le système au point que les utilisateurs chercheraient des moyens de désactiver le mécanisme. La sécurité de l'information est très importante, mais les coûts sont trop élevés alors que vider les mémoires caches réduit un temps de production précieux.
Les attaques qui utilisent l'exécution spéculative impliquent de convaincre le processeur de spéculer sur une route que l'exécution non spéculative ne suivra pas. Par exemple, une fonction du noyau peut contenir un contrôle de limite qui empêchera le code d'accéder au-delà de la fin d'un tableau, ce qui entraînera le renvoi d'une erreur. Une attaque qui utilise la vulnérabilité Spectre ignorera cette vérification de manière spéculative, accédant à des données auxquelles le code a été écrit spécifiquement pour ne pas accéder. Le retour d'erreur est un indice qu'il se passe peut-être quelque chose d'inapproprié, mais d'ici là, le mal sera fait.
Comment vérifier si votre serveur Linux est vulnérable aux bogues du processeur Spectre
Vérificateur de spectre et de fusion est un script shell qui recherche les bugs des processeurs Intel/AMD/ARM et autres suivants :
- CVE-2017-5753 :contournement de la vérification des limites (Spectre Variant 1). Vous devez recompiler le logiciel et le noyau avec un compilateur modifié qui introduit l'opcode LFENCE aux positions appropriées dans le code résultant. L'impact de l'atténuation sur les performances est négligeable.
- CVE-2017-5715 :injection de cible de branche (Spectre Variant 2). L'impact de l'atténuation sur les performances dépend de votre processeur.
- CVE-2017-5754 :chargement de cache de données malveillant (Meltdown). Vous devez installer la version mise à jour du noyau avec les correctifs PTI/KPTI. La mise à jour du noyau suffit. L'impact de l'atténuation sur les performances est faible à moyen.
spectre-meltdown-checker.sh est un simple script shell pour savoir si votre noyau Linux (installation) est vulnérable contre les 3 CVE "à exécution spéculative".
Installation
Le script doit être exécuté en tant que root utilisateur. Vous pouvez voir le code source ci-dessous. Utilisez la commande wget ou curl pour récupérer le code source sur votre machine Linux :
$ cd /tmp/
$ wget https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh
OU
$ git clone https://github.com/speed47/spectre-meltdown-checker.git
Exemples de résultats :
Clonage dans 'spectre-meltdown-checker'...
remote :Comptage d'objets :155, terminé.
remote :Compression d'objets :100 % (20/20), terminé.
distant :Total 155 (delta 18), réutilisé 21 (delta 10), pack réutilisé 125
Réception d'objets :100 % (155/155), 49,78 Kio | 145,00 Kio/s, terminé.
Résolution des deltas :100 % (88/88), terminé.
Comment vérifier Linux pour la vulnérabilité Spectre et Meltdown
Exécutez le script en tant qu'utilisateur root à l'aide de la commande sudo ou su :
$ sudo sh spectre-meltdown-checker.sh
Exemples de sorties du bureau Ubuntu Linux :
Une autre sortie de mon serveur CentOS 7.x où Meltdown/Spectre v1 a été corrigé avec Kernel :
$ sudo sh spectre-meltdown-checker.sh
Comment installer/mettre à jour le firmware du microcode Intel sous Linux ?
Un microcode n'est rien d'autre qu'un firmware CPU fourni par Intel ou AMD. Le noyau Linux peut mettre à jour le micrologiciel du processeur sans la mise à jour du BIOS au démarrage. Le microcode du processeur est stocké dans la RAM et le noyau met à jour le microcode à chaque démarrage. Ces mises à jour du microcode d'Intel/AMD devaient corriger des bogues ou appliquer des errata pour éviter les bogues du processeur. Cette page explique comment installer la mise à jour du microcode AMD ou Intel à l'aide du gestionnaire de packages ou des mises à jour du microcode du processeur fournies par Intel sous Linux.
Comment connaître l'état actuel du microcode
Exécutez la commande suivante en tant que root utilisateur :
# dmesg | grep microcode
Exemples de sorties :
Comment installer le micrologiciel du microcode Intel sur Linux à l'aide d'un gestionnaire de packages
L'outil pour transformer et déployer la mise à jour du microcode CPU pour x86/amd64 est fourni avec Linux. La procédure pour installer le firmware du microcode AMD ou Intel sous Linux est la suivante :
- Ouvrez l'application du terminal
- Type d'utilisateur Debian/Ubuntu Linux :sudo apt install intel-microcode
- Type d'utilisateur Linux CentOS/RHEL :sudo yum install microcode_ctl
Les noms de packages sont les suivants pour les distributions Linux populaires :
- microcode_ctl et linux-firmware – package de mise à jour du microcode CentOS/RHEL
- intel-microcode – Paquet de mise à jour du microcode Debian/Ubuntu et clones pour les processeurs Intel
- amd64-microcode – microcode Debian/Ubuntu et clones microcode pour les processeurs AMD
- linux-firmware – Firmware du microcode Arch Linux pour les processeurs AMD (installé par défaut et aucune action n'est requise de votre part)
- intel-ucode – micrologiciel de microcode Arch Linux pour les processeurs Intel
- microcode_ctl, linux-firmware et ucode-intel – Package de mise à jour du microcode Linux Suse/OpenSUSE
Avertissement :Dans certains cas, la mise à jour du microcode peut entraîner des problèmes de démarrage tels que le blocage du serveur ou sa réinitialisation automatique au moment du démarrage. Faites-le à vos risques et périls.
Exemples
Tapez la commande apt/commande apt-get suivante sur un Debian/Ubuntu Linux pour processeur Intel :
$ sudo apt-get install intel-microcode
Exemples de sorties :
Vous devez redémarrer la box pour activer la mise à jour du microcode :
$ sudo reboot
Vérifiez-le après le redémarrage :
# dmesg | grep 'microcode'
Si vous utilisez RHEL/CentOS, essayez d'installer ou de mettre à jour les deux packages suivants à l'aide de la commande yum :
$ sudo yum install linux-firmware microcode_ctl
$ sudo reboot
$ sudo dmesg | grep 'microcode'
Comment mettre à jour/installer le microcode téléchargé depuis le site Intel ?
N'utilisez la méthode suivante que lorsqu'elle est recommandée par votre fournisseur, sinon respectez les packages Linux comme décrit ci-dessus. La plupart des mainteneurs de distribution Linux mettent à jour le microcode via le gestionnaire de packages. La méthode du gestionnaire de packages est sûre, testée par de nombreux utilisateurs.
Comment installer le microcode blob du processeur Intel pour Linux (version 20180108) ?
Visitez le site AMD ou Intel pour récupérer le dernier micrologiciel de microcode. Commencez par l'extraire à l'aide de la commande tar :
$ mkdir firmware
$ cd firmware
$ tar xvf ~/path/to/file/microcode-20180108.tgz
$ ls –l
Exemples de sorties :
Assurez-vous que /sys/devices/system/cpu/microcode/reload se termine :
$ ls -l /sys/devices/system/cpu/microcode/reload
Vous devez copier tous les fichiers d'intel-ucode vers /lib/firmware/intel-ucode/ en utilisant la commande cp :
$ sudo cp -v intel-ucode/* /lib/firmware/intel-ucode/
Vous venez de copier le répertoire intel-ucode dans /lib/firmware/. Écrivez l'interface de rechargement à 1 pour recharger les fichiers de microcode :
# echo 1 > /sys/devices/system/cpu/microcode/reload
Mettez à jour un initramfs existant afin que la prochaine fois qu'il soit chargé via le noyau :
$ sudo update-initramfs -u
$ sudo reboot
Vérification que le microcode a été mis à jour au démarrage ou rechargé par la commande echo :
# dmesg | grep microcode
C'est tout. Vous venez de mettre à jour le firmware de votre CPU Intel.