Impossible d’être dans le monde I.T et de ne pas avoir entendu parler des menaces Meltdown et Spectre !
Pour un bref résumé, ce sont des failles critiques visant les microprocesseurs des ordinateurs personnels, serveurs et des appareils mobiles. Ce sont donc des milliards et des milliards d’appareils concernés..
Meltdown (CVE-2017-5754) vise les processeurs Intel et permet d’obtenir des informations confidentielles contenues dans la mémoire du processeur. Des patchs ont déja été déployés pour Linux, Windows et OS X.
Spectre (CVE-2017-5753 & CVE-2017-5715) est un problème plus profond, et vise également les processeurs AMD et ARM. Il y a deux variantes, Bounds Check Bypass et Branch Target Injection.
N’étant pas l’objet de ce billet, un aperçu et une explication plus technique est disponible ici.
En bonus :
Linux checker
Meltdown checker nécessite g++ en plus de gcc pour compiler
$ apt update && apt install g++
Récupération du dépôt git
$ git clone https://github.com/raphaelsc/Am-I-affected-by-Meltdown.git && mv Am-I-affected* meltdown_checker Clonage dans 'Am-I-affected-by-Meltdown'... remote: Counting objects: 143, done. remote: Compressing objects: 100% (99/99), done. remote: Total 143 (delta 88), reused 98 (delta 44), pack-reused 0 Réception d'objets: 100% (143/143), 106.23 KiB | 143.00 KiB/s, fait. Résolution des deltas: 100% (88/88), fait. Vérification de la connectivité... fait.
On se rend dans le dossier et on lance la compilation
$ cd meltdown_checker/ && make g++ -I. --std=c++11 -O0 --no-pie -mrtm -fPIC -c -o meltdown_checker.o meltdown_checker.cc g++ -I. --std=c++11 -O0 --no-pie -mrtm -fPIC -o meltdown-checker meltdown_checker.o
On se retrouve maintenant avec un fichier exécutable meltdown-checker.
Pour éviter de se retrouver avec un message d’erreur, on peut soit lancer l’exécution du fichier avec les droits privilégiés (sudo) ou alors mettre le niveau à 0 au niveau des restrictions de lecture pour le fichier /proc/sys/kernel/kptr_restrict. Ce sont des fichiers kernel seulement modifiable par le super-utilisateur.
$sudo sh -c "echo 0 > /proc/sys/kernel/kptr_restrict"
Moment de vérité..
$ ./meltdown-checker Checking whether system is affected by Variant 3: rogue data cache load (CVE-2017-5754), a.k.a MELTDOWN ... Checking syscall table (sys_call_table) found at address 0xffffffff9ae00240 ... 0xffffffff9a6466c0 -> That's SyS_read System affected! Please consider upgrading your kernel to one that is patched with KAISER Check https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html for more details
Et merde !
Pendant l’écriture de ce billet, un nouvel outil pour vérifier sa vulnérabilité sous GNU/Linux est sortie. Cette fois-ci il englobe Meltdown et Spectre.
$ git clone https://github.com/speed47/spectre-meltdown-checker.git && cd spectre-meltdown-checker Clonage dans 'spectre-meltdown-checker'... remote: Counting objects: 284, done. remote: Compressing objects: 100% (10/10), done. remote: Total 284 (delta 5), reused 12 (delta 4), pack-reused 270 Réception d'objets: 100% (284/284), 99.96 KiB | 0 bytes/s, fait. Résolution des deltas: 100% (165/165), fait. Vérification de la connectivité... fait.
On exécute
$ sudo ./spectre-meltdown-checker.sh
Bon et bien je crois que c’est clair :'(
Windows checker
Avant toute chose, on vérifie la version de son Powershell :
$ psversionstable
Il est nécessaire d’avoir le version 5.0 minimum. Pour mettre à jour sa version, c’est ici. Une fois que c’est bon, on lance Powershell en tant qu’administrateur et on importe le module SpeculationControl
$ Install-Module SpeculationControl
On ajuste la politique d’exécution de Powershell (bypass = rien n’est bloqué et il n’y a pas de messages d’avertissement)
$ Set-ExecutionPolicy Bypass
On vérifie maintenant si le système est vulnérable ou pas..
$ Get-SpeculationControlSettings
Le code couleur et les messages qui défilent sont assez clairs…si c’est rouge, c’est pas bon.
Quelques actions sont suggérés à la fin pour rendre invulnérable son système à ces attaques, mais il n’y a pas de secret … on met à jour le plus rapidement possible !
Correctifs
Un petit point sur les correctifs déployés à la date d’édition de ce billet (11/01/2018).
Un aperçu complet et en temps réel est disponible ici ! On y retrouve notamment un point sur le déploiement des correctifs d’hyperviseurs (Proxmox, vSphere) et d’OS axé Cloud (CoreOS, CloudLinux, SUSE Container..).
Windows
Chez Microsoft, on est plutôt bien. Les gammes 2008 R2, 2012 R2 et 2016 sont patchés pour toutes les menaces. Pour la gamme simple 2008 et 2012, il faut migré sur la version R2 pour bénéficié du patch.
Linux
Debian
Des correctifs ont été déployés pour Meltdown, de Wheezy (7) à Stretch (9). Mais toujours en attente d’un correctif pour les deux variantes de Spectre ..
Red Hat & CentOS
Similaire à Debian : RHEL 6 & 7 sont patchés contre Meltdown. Mais toujours aucun patch pour les variantes de Spectre.
Pour la version communautaire de Red Hat CentOS, des correctifs sont disponible pour Meltdown et la variante n°1 de Spectre (CVE-2017-5753) sont disponibles pour les versions 6 & 7 de CentOS. Mais toujours en attente pour la variante n°2.
Ubuntu
Un patch est disponible pour Meltdown, pour toutes les versions LTS encore maintenues d’Ubuntu (12.04 à 18.04). Mais toujours en attente concernant les deux variantes de Spectre.