VMware/AWS/Azure/HyperV – Hyperthreading, sharing is not a crime ?

Doc’, je vois double !?

Back to the… Petit retour en arrière direction 2002 avec les début de l’Hyperthreading sur l’architecture NetBurst, un artifice vu comme de la sorcellerie permettant d’améliorer les performances via la parallélisation des calculs exécutés sur les processeurs x86 d’Intel.

Pendant un moment oublié sur Core, sûrement des suites des critiques du à son implémentation de l’époque voir du faible nombre d’applications utilisant le SMT, il est réapparu sur Nehalem et la vapeur a fini par s’inverser (plus ou moins…) et son activation devenue quasi automatique, la virtualisation et sa grosse consommation de 2.21 Gigowatts de cores aidant.

Avec l’HT, ce sont désormais deux flux d’instructions qui arrivent à l’entrée du pipeline. A noter que seule la partie en amont du pipeline est, d’une certaine façon, “consciente” de la présence de ces deux flux provenant de deux threads différents, et le reste du traitement s’effectue comme s’il s’agissait d’un unique flux d’instruction. Ainsi, les deux threads se partagent les unités de calcul et les mémoires caches.

x86-Secret – Atouts et faiblesses de l’Hyper-Threading

Hardware vs Software

Ces derniers temps l’actualité n’a eu de cesse de parler des vulnérabilités hardware à l’instar des plus connues comme Specte et Meltdown avec des patchs logiciels (pas le choix avec du hardware) plus ou moins réussis et ça n’a pas l’air de s’améliorer.

Les vulnérabilités Twin Pines Spectre et Meltdown nous ont appris que les caches peuvent servir de canal latéral potentiel par lequel des informations peuvent être divulguées, c’est la qu’on se dit qu’en creusant un peu on peut avoir de belle surprises comme L1TF et TLBleed.

L1TF aka Foreshadow

Vous avez peut-être eu à faire à ce message esx.problem.hyperthreading.unmitigated ces derniers temps suite à l’update ESXi vers la version VMSA-2018-0020 ou plus récente.
A savoir que les updates incluent entre autre un patch pour la CVE-2018-3646 et qu’Intel a présenté les détails d’une nouvelle vulnérabilité connue sous le nom de L1 Terminal Fault (L1TF aka Foreshadow), impactant les processeurs Intel de 2009 à 2018.

CVE-2018-3646 (L1 Terminal Fault – VMM) – CVE-2018-3620 (L1 Terminal Fault – OS) – CVE-2018-3615 (L1 Terminal Fault – SGX)

Il peut permettre à une machine virtuelle malveillante s’exécutant sur un core donné de déduire le contenu des informations privilégiées de l’hyperviseur ou d’une autre machine virtuelle résidant simultanément dans le cache L1 du même core. Étant donné que les processeurs Intel actuels avec Hyperthreading partagent le cache L1 entre les deux cores logiques d’un core physique, il y a des « possibilités » pour que ça entraîne des fuites d’informations supplémentaires.

TLBleed

Pour éviter les problèmes de performance d’accès mémoire, le processeur met en cache le résultat de ses promenades dans une structure distincte appelée Pierre Cardin Translation Lookaside Buffer (TLB). Les traductions récemment utilisées sont donc beaucoup plus rapides à résoudre. Si une entrée n’existe pas, le processeur effectuera la consultation de pages mémoire beaucoup plus coûteuse et remplira une entrée TLB. C’est la que nous avons assisté à une autre attaque contre le TLB sous forme de vulnérabilité appelée TLBleed, qui a entraîné la désactivation de l’HT dans les nouvelles releases d’OpenBSD.

 

Spectre, Meltdown, L1TF, TLBleed … le CPU ne s’est jamais aussi mal porté niveau sécurité et contrairement au software il n’y à pas de réelle solution (Nop ! Une rustine software qui disable SMT ne compte pas) à part changer de CPU (et encore pas tout de suite à priori).

Un remède Doc’ ?

Du coté de VMware il y a un patch certe mais qui force un core logique pour un core physique, en d’autres termes c’est une désactivation de l’HT qui engendre automatiquement une perte de performance.

Enabling this option will result in the vSphere UI reporting only a single logical processor per physical core; halving the number of logical processors if Hyperthreading was previously enabled. In addition Hyperthreading may be reported as ‘Disabled’ in various configuration tabs.

Search VMware response to ‘L1 Terminal Fault – VMM’

Amazon aurait résolu le problème, vu les explications très minces sur la DeLorean il faut les croire sur parole.

AWS has designed and implemented its infrastructure with protections against these types of attacks, and has also deployed additional protections for L1TF. All EC2 host infrastructure has been updated with these new protections, and no customer action is required at the infrastructure level.

L1 Terminal Fault Speculative Execution Issue

Azure (via Hyper-V) serait capable de mitiger la faille Foreshadow avec une perte de performance négligeable via son scheduler et diverses isolations.

By using a combination of core scheduling, address space isolation, and data clearing, Hyper-V HyperClear is able to mitigate the L1TF speculative execution side channel attack across VMs with negligible performance impact and with full support of SMT.

Hyper-V HyperClear Mitigation for L1 Terminal Fault

Ca reste un sujet très controversé, car il est clair qu’il y a une différence de performance de l’ordre de 5% à 50%, j’ai personnellement eu des pertes de l’ordre de 30% sur le combo Citrix XenApp sur VMware ESXi.

Malheureusement Intel n’a pas l’air de réagir plus que ça à toutes ces révélations, ils se reposent avec une bonne pizza dans le canap’ en attendant les nouveau exploits sur le fait qu’il y ai des patchs plus ou moins réussis au niveau software, en attendant d’adresser ces failles via de nouveaux CPUs plus secure.

CPUs Intel compatibles ESXi affectés par la faille

Intel Code Name FMS Intel Brand Names
Nehalem-EP 0x106a5 Intel Xeon 35xx Series;
Intel Xeon 55xx Series
Lynnfield 0x106e5 Intel Xeon 34xx Lynnfield Series
Clarkdale 0x20652 Intel i3/i5 Clarkdale Series;
Intel Xeon 34xx Clarkdale Series
Arrandale 0x20655 Intel Core i7-620LE Processor
Sandy Bridge DT 0x206a7 Intel Xeon E3-1100 Series;
Intel Xeon E3-1200 Series;
Intel i7-2655-LE Series;  Intel i3-2100 Series
Westmere EP 0x206c2 Intel Xeon 56xx Series;
Intel Xeon 36xx Series
Sandy Bridge EP 0x206d7 Intel Pentium 1400 Series;
Intel Xeon E5-1400 Series;
Intel Xeon E5-1600 Series;
Intel Xeon E5-2400 Series;
Intel Xeon E5-2600 Series;
Intel Xeon E5-4600 Series
Nehalem EX 0x206e6 Intel Xeon 65xx Series;
Intel Xeon 75xx Series
Westmere EX 0x206f2 Intel Xeon E7-8800 Series;
Intel Xeon E7-4800 Series;
Intel Xeon E7-2800 Series
Ivy Bridge DT 0x306a9 Intel i3-3200 Series; Intel i7-3500-LE/UE, Intel i7-3600-QE,
Intel Xeon E3-1200-v2 Series;
Intel Xeon E3-1100-C-v2 Series;
Intel Pentium B925C
Haswell DT 0x306c3 Intel Xeon E3-1200-v3 Series
Ivy Bridge EP 0x306e4 Intel Xeon E5-4600-v2 Series;
Intel Xeon E5-2400-v2 Series;
Intel Xeon E5-2600-v2 Series;
Intel Xeon E5-1400-v2 Series;
Intel Xeon E5-2600-v2 Series
Ivy Bridge EX 0x306e7 Intel Xeon E7-8800/4800/2800-v2 Series
Haswell EP 0x306f2 Intel Xeon E5-2400-v3 Series;
Intel Xeon E5-1400-v3 Series;
Intel Xeon E5-1600-v3 Series;
Intel Xeon E5-2600-v3 Series;
Intel Xeon E5-4600-v3 Series
Haswell EX 0x306f4 Intel Xeon E7-8800/4800-v3 Series
Broadwell H 0x40671 Intel Core i7-5700EQ;
Intel Xeon E3-1200-v4 Series
Avoton 0x406d8 Intel Atom C2300 Series;
Intel Atom C2500 Series;
Intel Atom C2700 Series
Broadwell EP/EX 0x406f1 Intel Xeon E7-8800/4800-v4 Series;
Intel Xeon E5-4600-v4 Series;
Intel Xeon E5-2600-v4 Series;
Intel Xeon E5-1600-v4 Series
Skylake SP 0x50654 Intel Xeon Platinum 8100 (Skylake-SP) Series;
Intel Xeon Gold 6100/5100 (Skylake-SP) Series
Intel Xeon Silver 4100, Bronze 3100 (Skylake-SP) Series
Broadwell DE 0x50662 Intel Xeon D-1500 Series
Broadwell DE 0x50663 Intel Xeon D-1500 Series
Broadwell DE 0x50664 Intel Xeon D-1500 Series
Broadwell NS 0x50665 Intel Xeon D-1500 Series
Skylake H/S 0x506e3 Intel Xeon E3-1500-v5 Series;
Intel Xeon E3-1200-v5 Series
Kaby Lake H/S/X 0x906e9 Intel Xeon E3-1200-v6

Mathieu

Je suis actuellement ingénieur spécialisé dans le design d'environnements cloud virtualisés. Adepte des technologies de VMware, Nutanix, Citrix et Microsoft je propose à travers ce blog diverses astuces de troubleshooting.

S’abonner
Notification pour
guest

0 Commentaires
Commentaires en ligne
Afficher tous les commentaires