C'est qui KPTI ?

Salut,

2018 suit la tendance corrective de 2017 !

Un patch logiciel qui va dégrader les performances Intel à cause d’un trou de sécurité “matérgiciel” (logiciel gravé dans la puce) non encore complètement dévoilé.

KPTI : des correctifs pourraient impacter lourdement les performances des processeurs Intel

Outre Linux, des patchs doivent arriver pour les principaux systèmes d’exploitation, tels que Windows comme le rapporte le blog Python sweetness qui a été l’un des premiers à couvrir l’affaire. Intel, qui a participé aux correctifs, semble directement concerné, AMD ayant de son côté indiqué ne pas être touché.

1 J'aime

le truc pas cool c’est que les proc AMD sont aussi impacté alors qu’ils ne sont pas concerné …

Il me semble avoir lu qu’on pourrait désactiver la fonctionnalité via un paramètre du noyau.
Edit : mais je n’arrive pas à retrouver l’info…
Re-edit : ah, là : http://linuxfr.org/users/pied/journaux/ca-sent-pas-bon-chez-intel

Le patch est très volumineux, a un impact non négligeable sur les performances, et est activé par défaut. Un développeur AMD a juste altéré le patch en précisant que les processeurs AMD ne sont pas impactés car leur fonctionnement rend le patch inutile.

J’interprète “activé par défaut” comme “désactivable”, et apparemment désactivé avec les processeurs AMD qui ne seraient pas impactés.

Oui il semble qu’il y ai un flag, mais du coup tu es obligé de recompilé ton kernel … pas top. Une détection dynamique aurait été bien mieux. Peut être plus tard …

Flag de compilation seulement ?
Alors il faudrait à nouveau fournir des noyaux précompilés différenciés pour Intel et AMD, comme il y a fort fort longtemps.

Ceci dit, comme le patch semble particulièrement “invasif”, ça ne m’étonne pas plus que ça que ce soit désactivable uniquement à la compilation. Un peu comme le support de PAE.

D’après deux personnes de chez google, le 9 janvier doit être révélée la source profonde du problème lié à l’exécution spéculative.

D’autre part, ils affirment que tous les fondeurs sont concernés.

These vulnerabilities affect many CPUs, including those from AMD, ARM, and Intel, as well as the devices and operating systems running on them.

Google Online Security Blog: Today’s CPU vulnerability: what you need to know

Le site des menaces fantômes :

Meltdown and Spectre

Meltdown est traitée par KPTI dans linux.

Spectre, comme son nom l’indique, couvre une très large gamme de machines.

Julian Assange va-t-il être au chômage ?

Andreas Lubitz s’est-il vraiment suicidé ?

Christophe de Margerie a-t-il été victime d’une déneigeuse ?

1 J'aime

Une solution de ripolinage est détaillée dans un bulletin du CERT :

Bulletin d’actualité CERTFR-2018-ACT-001 – CERT-FR

Paul Turner, ingénieur chez Google, a présenté une contre-mesure baptisé retpoline (contraction de « return » et « trampoline ») pour faire face à cette dernière catégorie d’attaques

AVANT

jmp *%r11

APRÈS

call construction_destination; 
capture_execution_speculative: 
pause;
jmp capture_execution_speculative;
construction_destination:
mov %r11, (%rsp); 
ret;

Tout ça pour mettre en échec l’exécution spéculative… C’est tordu et ça obscurcit pas mal le code.

mov %r11, (%rsp); 
ret;

est quand même beaucoup moins explicite que que

jmp *%r11

Le Spectre toucherait aussi le GPU d’après nVidia !

Cette page est plus claire
https://cert.ssi.gouv.fr/alerte/CERTFR-2018-ALE-001/

1 J'aime

Le gcc de jessie a été ripoliné :

[SECURITY] [DSA 4117-1] gcc-4.9 security update

Package : gcc-4.9
CVE ID : not applicable

This update doesn’t fix a vulnerability in GCC itself, but instead
provides support for building retpoline-enabled Linux kernel updates.

For the oldstable distribution (jessie), this problem has been fixed
in version 4.9.2-10+deb8u1.

Simplement une info sur le terme “retpoline”

The name “retpoline” is a portmanteau of “return” and “trampoline.” It is a trampoline construct constructed using return operations which also figuratively ensures that any associated speculative execution will “bounce” endlessly.

https://support.google.com/faqs/answer/7625886
Le concept c’est quelque chose comme " jouer au trempoline avec les retours pour faire rebondir indéfiniment toute exécution spéculative"
A part une association du au son de la prononciation, ça n’a donc pas grand chose à voir avec le français ripoliné qui est tiré du nom de la marque de peinture Ripolin

Il n’y a pas de traduction en français de ce terme retpoline qui est lui même un barbarisme en anglais:

la mise à jour ne corrige pas une vulnérabilité dans GCC lui-même, mais fournit plutôt une prise en charge pour la compilation de mises à jour du noyau Linux avec « Retpoline » activé.

https://www.debian.org/security/2018/dsa-4117

Certes, je propose le “rebonbond” :slight_smile:

«Rebonline» ?

Le gcc de stretch a fait aussi son trampotour :

[SECURITY] [DSA 4121-1] gcc-6 security update

Et le noyau linux ainsi recompilé suit :

[SECURITY] [DSA 4120-1] linux security update

Le Spectre v1 n’est que partiellement traité

Additionnaly to those vulnerability, some mitigations for CVE-2017-5753 are included in this release.

More use sites will be added over time.

Apparemment pour ceux qui veulent compiler le noyau eux meme, il faut les options CONFIG_PAGE_TABLE_ISOLATION et CONFIG_RETPOLINE

Pour l’instant il n’y en a qu’une dans le 4.9

uname --all
Linux debian 4.9.0-5-amd64 #1 SMP Debian 4.9.65-3+deb9u2 (2018-01-04) x86_64 GNU/Linux
root@debian:/boot# grep CONFIG_PAGE_TABLE_ISOLATION config-4.9.0-5-amd64
CONFIG_PAGE_TABLE_ISOLATION=y
root@debian:/boot# grep CONFIG_RETPOLINE config-4.9.0-5-amd64
root@debian:/boot# 

Il faut donc installer le 4.9.0-6 pour les avoir

root@debian:/boot# grep CONFIG_RETPOLINE config-4.9.0-6-amd64
CONFIG_RETPOLINE=y
root@debian:/boot# grep CONFIG_PAGE_TABLE_ISOLATION config-4.9.0-6-amd64
CONFIG_PAGE_TABLE_ISOLATION=y

Et donc ça progresse :v:

root@debian:/# grep . /sys/devices/system/cpu/vulnerabilities/*
/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: __user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Full AMD retpoline - vulnerable module loaded
root@debian:/# uname --all
Linux debian 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u2 (2018-02-21) x86_64 GNU/Linux
root@debian:/# 

pour info le résultat satisfaisant est

 grep . /sys/devices/system/cpu/vulnerabilities/*
/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: __user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Full AMD retpoline

Si vous voyez mentionné vulnerable module loaded c’est qu’il y a une application qui pose problème.
CF: https://patchwork.kernel.org/patch/10184921/
On peut l’identifier par

journalctl -xb | grep retpoline