Comment désactiver la protection Spectre: un nouveau paramètre a été ajouté au noyau Linux

Un indicateur est apparu dans le noyau Linux qui désactive la protection contre les vulnérabilités Spectre v4 dans tous les processus enfants exécutés sur le serveur. En savoir plus sur le nouveau paramètre - sous la coupe.


/ Flickr / Rie H / CC BY / Photo modifiée

Pourquoi avez-vous dû désactiver la protection


Le groupe de vulnérabilités du processeur Spectre est devenu connu au début de 2018, et au cours des mois suivants, cette famille a été reconstituée avec de nouveaux «trous de sécurité». Les vulnérabilités sont associées au fonctionnement des systèmes qui augmentent les performances du processeur - écriture spéculative et lecture et prédiction des transitions - et permettent aux attaquants de contourner les mécanismes d'isolation de la mémoire dans les processeurs Intel et AMD.

Pour fermer les vulnérabilités, les développeurs de systèmes d'exploitation émettent des correctifs, mais leur installation entraîne souvent une diminution de la vitesse des serveurs. Par exemple, sur les machines Linux, certains correctifs Spectre réduisent les performances de 30 à 50%.

Les administrateurs système n'étaient pas satisfaits du problème, en particulier dans les grands centres de données. Ils ont commencé à demander aux développeurs du noyau Linux de désactiver sélectivement la protection Spectre. Certaines des vulnérabilités découvertes ne sont que de nature théorique et, dans un certain nombre de systèmes, elles ne peuvent fondamentalement pas nuire. Par exemple, les fermes de rendu et les superordinateurs hors ligne sont déconnectés d'Internet, ils n'ont donc pas peur des injections de code malveillantes.

L'équipe Linux a rencontré des utilisateurs et introduit plusieurs fonctions qui désactivent la protection contre les vulnérabilités Spectre v1, v2 (nous en parlerons plus tard) et v4. Le dernier d'entre eux a été introduit début février pour toutes les versions actuelles du noyau - il s'agit du nouveau drapeau PR_SPEC_DISABLE_NOEXEC.

Quoi et pourquoi désactive la fonction


La vulnérabilité de Spectre v4 est appelée le contournement de magasin spéculatif. Il permet aux logiciels malveillants d'accéder à des résultats informatiques spéculatifs que le processeur avait précédemment rejetés comme inutiles.

Cette situation se produit lorsque le processeur lit et écrit à tour de rôle en utilisant l'adressage indirect. La lecture se produit plus souvent que l'écriture et le processeur peut utiliser les données de la mémoire pour déterminer l'adresse de lecture sans attendre le calcul du décalage de l'adressage indirect. Si, après avoir calculé le décalage, une intersection des zones de mémoire pour l'écriture et la lecture est détectée (c'est-à-dire que la lecture a été effectuée à partir de la mauvaise zone), la deuxième opération est à nouveau effectuée et le résultat spéculatif est rejeté.

En théorie, il s'avère que si un attaquant connaît les adresses et la structure des cellules de mémoire, il peut en extraire des données, telles que des clés de chiffrement.

Le correctif pour Spectre v4 est apparu dans le noyau Linux quelques jours après la publication d'informations sur la vulnérabilité - par défaut, il a désactivé la fonction de désambiguïsation de la mémoire , ce qui a permis une exécution extraordinaire des commandes. Mais cela a ralenti les opérations d'E / S du processeur de 10 à 40%.


/ Flickr / Rie H / CC BY-SA

Et début juin 2018, la version 4.17 du noyau a permis de désactiver cette protection. Il y avait un problème: le paramètre n'a pas été transmis du processus parent au processus enfant. Pour eux, la protection devait être désactivée manuellement, ce qui gênait les administrateurs système. Mais début février, les développeurs du noyau ont implémenté l'indicateur PR_SPEC_DISABLE_NOEXEC . Il complète la fonction précédente et copie le mode de fonctionnement du patch de Spectre v4 du processus parent vers les processus enfants. PR_SPEC_DISABLE_NOEXEC fait partie de prctl, et vous pouvez l'activer lors du démarrage de tout nouveau processus.

Ce que disent les experts


Dans la liste de diffusion des développeurs du noyau Linux, l'introduction du nouveau drapeau a été écrite par Waiman Long de Red Hat. Selon lui, la protection contre Spectre v4 affecte considérablement les performances des applications qui effectuent de nombreuses opérations d'écriture, telles que les bases de données. PR_SPEC_DISABLE_NOEXEC aidera à automatiser la vérification de la désactivation du correctif et à accélérer les serveurs avec un grand nombre de processus exécutés simultanément.

Dans le même temps, les participants de la communauté informatique notent que dans certaines situations, la manipulation imprudente d'un nouveau drapeau peut entraîner des conséquences désagréables.

«Il convient de noter que dans certains environnements, il n'est pas sûr de désactiver la protection contre Spectre v4», explique Sergey Belkin, chef du département de développement du fournisseur IaaS 1cloud.ru . - Il s'agit, par exemple, des services Web utilisant Java et JavaScript. La divulgation du contenu du processus de contrôle par du code managé peut être fatale pour la sécurité des applications. »

À propos des autres correctifs Spectre dans le noyau Linux


En plus de l'indicateur PR_SPEC_DISABLE_NOEXEC, le noyau Linux a d'autres paramètres qui désactivent la protection Spectre.

Le premier est nospectre_v2 . La fonction désactive la protection de Spectre v2, ce qui permet aux attaquants d' utiliser le bloc de prédiction de transition afin de «forcer» le processeur à effectuer spéculativement une opération dans un module de mémoire spécifique. Pour la protection, le correctif désactive la fonction de prédiction indirecte des transitions et empêche le transfert des informations reçues entre les threads du même cœur de processeur.

La désactivation de la protection entraîne une augmentation des performances du processeur de 30% - c'est ainsi qu'elle est tombée après l'installation d'un patch à partir de Spectre v2. Même le créateur de Linux, Linus Torvalds, a pris en charge la nouvelle fonctionnalité. Selon lui, la vulnérabilité ne menace que les processeurs dotés de la fonction SMT , dans ce cas particulier il sera plus rentable de la désactiver.

Le deuxième paramètre - nospectre_v1 - désactive la protection de la première option Spectre. À l'aide de logiciels malveillants, les pirates peuvent amener le processeur à prédire de manière incorrecte le résultat d'une transition conditionnelle et à ignorer les résultats des calculs spéculatifs dans la zone de mémoire dont les pirates ont besoin. Bien que le patch de la v1 n'affecte pas significativement les performances (selon certains rapports , la réduction de la vitesse du processeur peut être négligée), les développeurs ont demandé d' ajouter la possibilité de désactiver cette protection au noyau. Cela nous a permis de simplifier la structure des réseaux isolés des accès externes.

La communauté du noyau Linux reste fidèle à l'idée de libre choix que Linus Torvalds a posée au tout début: les utilisateurs eux-mêmes sont responsables de l'équilibre entre la sécurité et les performances des systèmes Linux. Par conséquent, il convient de s'attendre à ce que lors de la détection de nouvelles vulnérabilités similaires à Spectre dans le noyau, un correctif et la possibilité de le désactiver apparaîtront.

Messages de notre blog d'entreprise:

Source: https://habr.com/ru/post/fr442140/


All Articles