0

Meltdown and Spectre checker

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 :

Meltdown attack paper

Spectre attack paper

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.

Supras

Supras

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *