Retour dans En août 2021, les correctifs initiaux d’Intel pour”FineIBT”pour le noyau Linux visaient à combiner le meilleur de leur technologie d’application de flux de contrôle (CET) et de l’intégrité du flux de contrôle pour renforcer les protections de sécurité du noyau de manière efficace.

L’année dernière, les correctifs FineIBT ont été mis à jour et cette semaine, l’ingénieur Intel Peter Zijlstra a envoyé les derniers correctifs FineIBT pour Linux. Son dernier résumé de ce travail d’intégrité de flux de contrôle FineIBT pour Linux se résume à :

Mettre en œuvre un schéma CFI alternatif qui fusionne à la fois la nature fine de kCFI mais tire également pleinement parti de la granularité grossière matériel CFI tel que fourni par IBT.

Pour contraster :

kCFI est un schéma CFI purement logiciel et repose sur la capacité de lire du texte-en particulier l’instruction * avant * le symbole cible, et effectue la validation du hachage * avant * de faire le appel (sinon le flux de contrôle est déjà compromis).

FineIBT est un schéma hybride logiciel et matériel ; en s’assurant que chaque cible de branche commence par une validation de hachage, il est possible de placer la validation de hachage après la branche. Cela présente plusieurs avantages :

o le chargement (de hachage) est évité ; pas de mémo; aucune exigence de réception.

o L’état IBT WAIT-FOR-ENDBR est un arrêt de spéculation ; en plaçant la validation de hachage dans l’instruction immédiate après la cible de branche, il y a une fenêtre de spéculation minimale et l’ensemble est une défense viable contre SpectreBHB.

Évidemment, ce correctif s’appuie sur kCFI (en amont), mais il s’appuie également sur le rembourrage des correctifs de suivi de la profondeur des appels (tip/x86/core). Il utilise ce rembourrage pour placer la validation de hachage pendant que les sites d’appel sont réécrits pour modifier la cible indirecte à 16 octets devant la cible d’origine, frappant ainsi ce nouveau préambule.

Notamment, aucun matériel n’a besoin d’un suivi de la profondeur des appels (Skylake) et prend en charge IBT (Tigerlake et versions ultérieures).

Ce code s’appuie sur le dernier appel Depth Tracking fonctionne sur le chemin de Linux principal (probablement 6.2). Voir cette série de correctifs pour la dernière discussion autour de FineIBT–y compris quelques discussions sur les implications de sécurité supplémentaires à prendre en compte. Nous verrons où mène ce travail FineIBT et si/quand il parvient à être repris par le noyau principal.

Categories: IT Info