Auteur Sujet: Spectre et Meltdown: Grave problème de design des CPU Intel depuis 10ans  (Lu 36477 fois)

0 Membres et 2 Invités sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Grave probleme de design des CPU intel depuis 10ans
« Réponse #60 le: 09 janvier 2018 à 22:42:58 »
C'est la première fois que je vois un correctif de sécurité Ubuntu ne sortir que sue x86_64 (ARM et i386 seront patchés pus tard).

Le correctif est donc limité :
- uniquement l'architecture x86_64
- ne concerne que Meldown (CVE-2017-5754)

La mise à jour a été poussée pour Ubuntu 17.10

Le kernel a été compilé hier soir :
4.13.0-25-generic #29-Ubuntu SMP Mon Jan 8 21:14:41 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Pour Ubuntu LTS, ils attendent plus de tests pour le pousser.


hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Grave probleme de design des CPU intel depuis 10ans
« Réponse #61 le: 10 janvier 2018 à 03:01:07 »
Il n'y a pas de KTPI en 32 bits, il semble que certains kernels avec les patchs grsec ne soient pas impactés, je ne sais pas ce que les distributions vont faire.
Windows n'a pas de patch en 32 bits non plus.

Attention, les kernels inférieurs à Linux 4.14 ne supportent pas PCID, donc l'impact de KTPI sur les performances peut être plus important dans certains cas.
Pour Windows, c'est pareil : seul Windows 10 supporte PCID (mais uniquement sur les CPU supportant aussi INVPCID, cad Haswell et plus récents).

Leon

  • Client SFR sur réseau Numericable
  • Modérateur
  • *
  • Messages: 5 971
Grave probleme de design des CPU intel depuis 10ans
« Réponse #62 le: 10 janvier 2018 à 06:28:43 »
KTPI = ??

Leon.

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Grave probleme de design des CPU intel depuis 10ans
« Réponse #63 le: 10 janvier 2018 à 07:20:45 »
KPTI est une modification de la gestion mémoire pour isoler même quand le CPU n'est pas fiable sur l'isolation mémoire.

C'est ce patch intégré en fin de développement (RC6) de Linux 4.15 qui a fait beaucoup parler de lui. A la RC-6 seuls des petits correctifs de quelques lignes sont autorisés, pas un changement majeur dans la gestion de la mémoire. Cela montrait que cette intégration avait été préparée en sous-marin, pour une divulgation le plus tard possible.

Wikipédia dit : Kernel page-table isolation (KPTI) is a Linux kernel feature that mitigates the Meltdown security vulnerability (affecting mainly Intel's x86 CPUs) and improves kernel hardening against attempts to bypass kernel address space layout randomization (KASLR). It works by better isolating user space and kernel space memory. KPTI was merged into Linux kernel version 4.15, to be released in early 2018, and backported to Linux kernels 4.14.11, 4.9.75, 4.4.110.

Windows and macOS released similar updates.

KPTI does not address the related Spectre vulnerability.


Il y a plus de détails sur Wikipedia et sur lwn.net (sur ce dernier site, on parle de KAISER, qui est l'ancien nom de KPTI)

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Grave probleme de design des CPU intel depuis 10ans
« Réponse #64 le: 10 janvier 2018 à 08:53:01 »
Ce qu tu soulève hwti est très intéressant sur le support ou non de PCID (Process-context identifier), qui permet de ne pas trop perdre en performance avec ce patch. C'est dommage que les tests montrant les régressions en terme de performance n'explique pas si cela a été fait avec le support de PCID ou non.

J'ai quatre questions hwti :

Sous Linux :

- La vulnérabilité Meltdown n'est pas exploitable sur un OS 32bits ou on ne sais pas la corriger ? (c'est complètement différent)

- Si le CPU support PCID, Linux 4.14 et 4.15 a moins de perte de performances, que les Linux précédents ? (attention les deux kernel 4.14 et 4.15 ne sont pas encore utilisés dans les distributions Linux, car le premier est trop récent et le second est encore en développement)


Les CPU qui supportent PCID (Process-context identifier) sont ceux de la famille de processeurs Westmere, conçus à partir de janvier 2010. On les identifie sous Linux par un lscpu => ce sont les Family 6 modèle 37/42/44/45/47 et tous les modèles > 50

Pour avoir le kernel 4.15 sous Ubuntu, il faut Ubuntu 18.04 minimum (sortie en avril 2018), ou Ubuntu 16.04 avec le HWE Kernel. Le Kernel 4.15 sera mis en place automatiquement pour ceux qui ont le HWE Kernel à partir de juillet 2018. Plus d'information sur https://wiki.ubuntu.com/Kernel/LTSEnablementStack

Sous Windows :

- Si si on a un CPU récent, supportant INVPCID (Haswell ou plus récent), il y a un impact de perte de performance supérieure lié au patch sous Windows 7, comparé à Windows 10 ?

- Sous Windows 10, il y a impact de perte de performance du patch supérieur avec un CPU plus ancien que Haswell  vs Haswell  et  récent ? (la cause étant le non support de INVPCID qui empêche d'utiliser PCID)

Cela va peut-être motiver Microsoft à supporter, comme sous Linux 4.14 et+, PCID sur les famille de processeurs Westmere, Sandy Bridge et Ivy Bridge ?


microarchitecture Haswell = 4ème génération de processeurs Core. Ils sont conçus à partir de juin 2013. Ce sont les par exemple les Core i3-4xxx, Core i5-4xxx, Core i7-4xxx.

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Grave probleme de design des CPU intel depuis 10ans
« Réponse #65 le: 10 janvier 2018 à 14:11:22 »
Microsoft fait un premier point sur l'impact des patch sur les performances : (source Microsoft)

- Windows 10 + processeurs récents (PC de 2016 avec un processeur Skylake, Kabylake ou supérieur) : les benchmarks affichent des ralentissements à un chiffre, mais nous ne nous attendons pas à ce que la plupart des utilisateurs remarquent un changement car ces pourcentages sont reflétés en millisecondes.

- Windows 10 + processeurs un peu plus anciens (PC de 2015, processeurs Haswell et plus anciens) : certains benchmarks montrent des ralentissements plus importants, et nous nous attendons à ce que certains utilisateurs remarquent une baisse des performances du système.

- Windows 8/7 (PC de 2015, processeurs Haswell et plus anciens) : Impact significatif sur les performances du système : nous nous attendons à ce que la plupart des utilisateurs remarquent une baisse des performances du système.

- Windows Server, sur n’importe quel processeur : cette version est touchée par l’impact sur les performances. L'impact est plus fort sur les applications gourmandes en opérations d'entrée-sortie. L'impact est plus significatif sur les performances lorsque vous activez les mitigations pour isoler du code non fiable dans une instance Windows Server. C'est pourquoi vous devez prendre soin d'évaluer le risque de code non fiable pour chaque instance Windows Server et d'équilibrer le compromis sécurité / performance pour votre environnement.


J'ai par contre un peu de mal à comprendre : Windows 10 ne supporte pas PCID sur Haswell ?

Microsoft classe les PC en deux catégorie :
- La famille de processeurs Haswell (4ème génération) et plus ancien (Core i3-4xxx, Core i5-4xxx, Core i7-4xxx)
- La famille de processeurs Skylake (6ème génération) et plus récent (Core i3-6xxx, Core i5-6xxx, Core i7-6xxx)

Microsoft ne parle pas de la famille de processeurs Broadwell (5ème génération Core i3-5xxx, Core i5-5xxx, Core i7-5xxx). Il supportent PCID sous Windows 10 ?

Rajoutons à propose des patch publiés par Microsoft contre ces failles, que des PC équipés de processeurs AMD concernés par ces failles ne démarraient plus après application du patch Windows en question

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Grave probleme de design des CPU intel depuis 10ans
« Réponse #66 le: 10 janvier 2018 à 22:04:16 »
Sous Linux :

- La vulnérabilité Meltdown n'est pas exploitable sur un OS 32bits ou on ne sais pas la corriger ? (c'est complètement différent)
Elle n'est pas corrigée actuellement (à part peut-être avec les kernel Linux grsec ou dérivés, mais ce n'est pas ce que les principales distributions utilisent), je ne sais pas dans quelle mesure elle pourrait l'être (surtout qu'il y a en général 2 variantes en 32 bits : avec ou sans PAE).
C'est aussi valable sur ARM, mais seul le Cortex-A75 est impacté, et les premiers produits l'utilisant arrivent seulement dans quelques mois, aucune chance que ce soit avec un kernel 32 bits heureusement (Il y a eu des téléphones Android avec des Cortex-A53 et un kernel 32 bits, mais normalement c'est fini).

- Si le CPU support PCID, Linux 4.14 et 4.15 a moins de perte de performances, que les Linux précédents ? (attention les deux kernel 4.14 et 4.15 ne sont pas encore utilisés dans les distributions Linux, car le premier est trop récent et le second est encore en développement)[/size]

Les CPU qui supportent PCID (Process-context identifier) sont ceux de la famille de processeurs Westmere, conçus à partir de janvier 2010. On les identifie sous Linux par un lscpu => ce sont les Family 6 modèle 37/42/44/45/47 et tous les modèles > 50
Le cas optimal c'est PCID+INVPCID (cad Haswell et plus récent).
Normalement avec juste PCID, Linux devrait pouvoir s'en servir, ce qui est mieux que rien.
Mais bien sûr ce n'est que pour les kernels >= 4.14.

Sous Windows :

- Si si on a un CPU récent, supportant INVPCID (Haswell ou plus récent), il y a un impact de perte de performance supérieure lié au patch sous Windows 7, comparé à Windows 10 ?

- Sous Windows 10, il y a impact de perte de performance du patch supérieur avec un CPU plus ancien que Haswell  vs Haswell  et  récent ? (la cause étant le non support de INVPCID qui empêche d'utiliser PCID)

Cela va peut-être motiver Microsoft à supporter, comme sous Linux 4.14 et+, PCID sur les famille de processeurs Westmere, Sandy Bridge et Ivy Bridge ?

Seul Windows 10 sait gérer PCID+INVPCID (donc uniquement à partir d'Haswell) actuellement, c'est le cas "idéal".
Actuellement, il n'y a pas de code pour PCID seul, mais il est possible que ce soit prévu (l'API qui remonte le statut des corrections remonte deux informations pour PCID/INVPCID, mais actuellement les deux sont positionnés en lien avec INVPCID).


Tout ça c'est uniquement pour Meltdown, pour Spectre c'est encore plus compliqué, selon les techniques utilisées pour la variante 2 :
 - retpoline : recompilation des kernels/programmes
 - IBRS/STIBP/IBPB (ajouté par les nouveaux microcodes, respectivement Indirect Branch Restricted Speculation, Single Thread Indirect Branch Predictors, Indirect Branch Predictor Barrier) : restriction de la spéculation sur les branchements indirects (selon les OS et réglages, c'est appliqué sur le kernel seulement, ou tout le temps)
L'impact de IBRS/IBPB varie beaucoup selon la génération de processeur, donc dans certains cas Linux préférera probablement retpoline par défaut.
Windows semble actuellement les préférer s'ils sont disponibles, et les activer tout le temps (ce qui devrait pénaliser Haswell plus que Skylake).

A noter que selon https://newsroom.intel.com/wp-content/uploads/sites/11/2018/01/Intel-Analysis-of-Speculative-Execution-Side-Channels.pdf :
Citer
These capabilities will be available on modern existing products if the appropriate microcode update is applied, as well as on future products, where the performance cost of these mitigations will be improved
Spectre semble trop compliquée pour être vraiment corrigée, donc à l'avenir il faudra toujours compter sur un minimum de "coopération de l'OS", même si l'impact de performance pourrait se réduire.
Citer
Future Intel processors will also have hardware support for mitigating Rogue Data Cache Load.
Je pense qu'ils ne veulent pas se mouiller, mais Meltdown devrait être corrigée.

J'ai par contre un peu de mal à comprendre : Windows 10 ne supporte pas PCID sur Haswell ?
Le problème sur Haswell avec Windows 10, c'est l'impact d'IBRS à priori.
« Modifié: 10 janvier 2018 à 22:27:21 par hwti »

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Grave probleme de design des CPU intel depuis 10ans
« Réponse #68 le: 10 janvier 2018 à 22:32:37 »
Toujours pour la correction de Spectre, Intel fait un retour arrière et demande aux distributions de revenir sur un vieux microcode, pour deux CPU :
- sig 0x000406f1, pf_mask 0xef, 2017-11-18, rev 0xb000025, size 27648
- sig 0x000506c9, pf_mask 0x03, 2017-11-22, rev 0x002e, size 16384

Le microcode de Novembre 2017 doit être remplacé par celui de mars 2017 :

intel-microcode 3.20180108.1 source package in Ubuntu
Changelog

intel-microcode (3.20180108.1) unstable; urgency=high

  * New upstream microcode data file 20180108 (closes: #886367)
    + Updated Microcodes:
      sig 0x000306c3, pf_mask 0x32, 2017-11-20, rev 0x0023, size 23552
      sig 0x000306d4, pf_mask 0xc0, 2017-11-17, rev 0x0028, size 18432
      sig 0x000306e4, pf_mask 0xed, 2017-12-01, rev 0x042a, size 15360
      sig 0x000306f2, pf_mask 0x6f, 2017-11-17, rev 0x003b, size 33792
      sig 0x000306f4, pf_mask 0x80, 2017-11-17, rev 0x0010, size 17408
      sig 0x00040651, pf_mask 0x72, 2017-11-20, rev 0x0021, size 22528
      sig 0x00040661, pf_mask 0x32, 2017-11-20, rev 0x0018, size 25600
      sig 0x00040671, pf_mask 0x22, 2017-11-17, rev 0x001b, size 13312
      sig 0x000406e3, pf_mask 0xc0, 2017-11-16, rev 0x00c2, size 99328
      sig 0x00050654, pf_mask 0xb7, 2017-12-08, rev 0x200003c, size 27648
      sig 0x00050662, pf_mask 0x10, 2017-12-16, rev 0x0014, size 31744
      sig 0x00050663, pf_mask 0x10, 2017-12-16, rev 0x7000011, size 22528
      sig 0x000506e3, pf_mask 0x36, 2017-11-16, rev 0x00c2, size 99328
      sig 0x000706a1, pf_mask 0x01, 2017-12-26, rev 0x0022, size 73728
      sig 0x000806e9, pf_mask 0xc0, 2018-01-04, rev 0x0080, size 98304
      sig 0x000806ea, pf_mask 0xc0, 2018-01-04, rev 0x0080, size 98304
      sig 0x000906e9, pf_mask 0x2a, 2018-01-04, rev 0x0080, size 98304
      sig 0x000906ea, pf_mask 0x22, 2018-01-04, rev 0x0080, size 97280
      sig 0x000906eb, pf_mask 0x02, 2018-01-04, rev 0x0080, size 98304
    + Implements IBRS/IBPB support and enhances LFENCE: mitigation
      against Spectre (CVE-2017-5715)
    + Very likely fixes several other errata on some of the processors
  * supplementary-ucode-CVE-2017-5715.d/: remove.
    + Downgraded microcodes:
      sig 0x000406f1, pf_mask 0xef, 2017-03-01, rev 0xb000021, size 26624
      sig 0x000506c9, pf_mask 0x03, 2017-03-25, rev 0x002c, size 16384
    + This removes IBRS/IBPB support for these two platforms when compared
      with the previous (and unofficial) release, 20171215.  We don't know
      why Intel declined to include these microcode updates (as well as
      several others) in the release.
  * source: remove superseded upstream data file: 20171117
  * README.Debian, copyright: update download URLs (closes: #886368)

 -- Henrique de Moraes Holschuh <hmh@debian.org>  Wed, 10 Jan 2018 00:23:44 -0200

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Grave probleme de design des CPU intel depuis 10ans
« Réponse #69 le: 10 janvier 2018 à 22:49:59 »
Toujours pour la correction de Spectre, Intel fait un retour arrière et demande aux distributions de revenir sur un vieux microcode, pour deux CPU :
- sig 0x000406f1, pf_mask 0xef, 2017-11-18, rev 0xb000025, size 27648
- sig 0x000506c9, pf_mask 0x03, 2017-11-22, rev 0x002e, size 16384
Il s'agit de Broadwell-E(P) (i7-68xxK, i7-69xxK/X, Xeon E5 v4), et Apollo Lake (dérivés d'Atom vendus sous le nom de Celeron N/J et Pentium N/J).

alain_p

  • Abonné Free fibre
  • *
  • Messages: 16 168
  • Delta S 10G-EPON sur Les Ulis (91)
Grave probleme de design des CPU intel depuis 10ans
« Réponse #70 le: 10 janvier 2018 à 22:54:58 »
Pour savoir ce que Windows a appliqué sur une machine donnée :
 - https://support.microsoft.com/en-us/help/4073119/protect-against-speculative-execution-side-channel-vulnerabilities-in
 - https://github.com/ionescu007/SpecuCheck

Merci pour ces infos. J'ai fait le test Microsoft PowerShell, il m'a recommandé un upgrade du BIOS (PC Dell). Je suis allé chercher le dernier BIOS, 1.3.1 du 8 Janvier, je l'ai appliqué (update aussi firmware Intel), il a fait plusieurs reboot. A la fin j'ai ré-éxécuté le test et tout était bon.

Donc il faut aussi mettre à jour le BIOS de ses PCs....

C'est aussi le cas des serveurs Dell au moins (et probablement d'autres constructeurs) :
http://www.dell.com/support/article/fr/fr/frbsdt1/sln308588/microprocessor-side-channel-vulnerabilities--cve-2017-5715--cve-2017-5753--cve-2017-5754---impact-on-dell-emc-products--dell-enterprise-servers--storage-and-networking-?lang=en

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Grave probleme de design des CPU intel depuis 10ans
« Réponse #71 le: 10 janvier 2018 à 23:01:14 »
Donc il faut aussi mettre à jour le BIOS de ses PCs....
Microsoft ne semble effectivement pas distribuer ces mises à jour de microcode, alors qu'ils le font parfois via Windows Update.
Je ne sais pas si c'est parce qu'ils sont frileux (peu de retour de tests, performances), ou s'il y a un conflit entre ce qu'ils font et le moment où Windows les charge (Linux sait appliquer les microcodes à plusieurs moments, et il me semble avoir déjà lu que certains ne pouvaient l'être que très tôt dans le boot).