Mesures d’atténuation des vulnérabilités du processeur
Ditana active par défaut les mesures d’atténuation des vulnérabilités du processeur en mode High Security. Le programme d’installation détecte les mesures d’atténuation dont votre processeur a besoin en lisant /sys/devices/system/cpu/vulnerabilities/, puis les propose chacune sous forme de case à cocher activable individuellement dans la boîte de dialogue Expert Settings → CPU Vulnerability Mitigation Options. Cette page documente chaque option en détail.
Paramètres par défaut du noyau face aux mesures d’atténuation de Ditana
Section intitulée « Paramètres par défaut du noyau face aux mesures d’atténuation de Ditana »Les valeurs par défaut de Linux, fixées en amont, mettent en balance sécurité et performances, et laissent certaines vulnérabilités sans atténuation, sauf activation explicite. Ditana choisit par défaut de les atténuer – pour la plupart des charges de travail, le coût est négligeable, alors que le gain en sécurité est substantiel. Vous pouvez annuler individuellement chaque mesure d’atténuation dans le programme d’installation si l’une de vos charges de travail en tire un bénéfice démontrable.
La logique des mesures d’atténuation dépend du matériel. Seules les vulnérabilités que présente réellement votre processeur sont configurées ; tout le reste conserve la valeur par défaut du noyau.
Après l’installation
Section intitulée « Après l’installation »Plusieurs mesures d’atténuation impliquent de désactiver, en solution de repli, le Simultaneous Multi-Threading (SMT, également appelé Hyper-Threading). L’en-tête de terminal personnalisé de Ditana indique quelles mesures d’atténuation sont actives et si le SMT est activé ou désactivé.
Vous pouvez aussi vérifier avec :
lscpuPour comparer les performances avec et sans une mesure d’atténuation donnée, modifiez la ligne de commande du noyau pour un seul démarrage et supprimez le paramètre associé à la mesure d’atténuation que vous voulez tester. Sur une installation ZFS (c’est ce que produit le profil Standard), cela se fait avec l’éditeur d’environnements de démarrage de ZFSBootMenu ; sur un système qui démarre avec GRUB, appuyez sur e dans le menu. Les paramètres sont indiqués ci-dessous sous « Paramètre du noyau appliqué » pour chaque entrée. Redémarrez et exécutez votre charge de travail réelle – les tests de performance synthétiques reflètent rarement l’impact réel.
Pour rendre une modification permanente sur une installation ZFS, définissez la ligne de commande dans l’environnement de démarrage :
sudo zfs set org.zfsbootmenu:commandline="rw <options>" ditana-root/ROOTzfs get org.zfsbootmenu:commandline ditana-root/ROOTPour la rendre permanente sur un système qui démarre via GRUB, modifiez /etc/default/grub, repérez la ligne GRUB_CMDLINE_LINUX_DEFAULT (enregistrez d’abord une sauvegarde), supprimez le paramètre, puis exécutez :
sudo grub-mkconfig -o /boot/grub/grub.cfgSi une modification empêche le démarrage, modifiez la ligne de commande du noyau dans le menu GRUB pour récupérer le système, puis refaites la modification et exécutez de nouveau grub-mkconfig.
Mesures d’atténuation que Ditana active par défaut
Section intitulée « Mesures d’atténuation que Ditana active par défaut »Spectre variante 2 – Branch Target Injection
Section intitulée « Spectre variante 2 – Branch Target Injection »Exploit d’exécution spéculative permettant à des attaquants de lire des données sensibles au moyen de prédicteurs de branchements indirects mal entraînés. Ditana applique la mesure d’atténuation complète (Indirect Branch Prediction Barrier toujours active plutôt que conditionnelle).
Toutes les mesures d’atténuation de Spectre variante 2 peuvent être forcées au démarrage pour tous les programmes. Cela ajoutera un surcoût, car les spéculations de branchements indirects de tous les programmes seront restreintes.
Identifiant lscpu |
Spectre v2 |
| Nom du paramètre | Enforce Spectre Variant 2 Mitigation |
| Paramètre du noyau appliqué | spectre_v2=on |
L1 Terminal Fault (L1TF)
Section intitulée « L1 Terminal Fault (L1TF) »Touche les processeurs Intel et permet un accès non autorisé aux données du cache L1. Ditana impose l’atténuation complète avec un vidage agressif du cache.
Par défaut, le noyau n’impose pas la désactivation du SMT, ce qui laisse les systèmes SMT vulnérables lorsqu’ils exécutent des systèmes invités non fiables avec EPT activé.
Identifiant lscpu |
L1tf |
| Nom du paramètre | Enforce L1 Terminal Fault Mitigation |
| Paramètre du noyau appliqué | l1tf=full,force |
Microarchitectural Data Sampling (MDS)
Section intitulée « Microarchitectural Data Sampling (MDS) »Permet à des attaquants d’échantillonner des données dans les tampons du processeur. L’atténuation complète peut désactiver le SMT si nécessaire.
Par défaut, le noyau n’impose pas la désactivation du SMT, ce qui laisse les systèmes SMT vulnérables lorsqu’ils exécutent du code non fiable.
Identifiant lscpu |
Mds |
| Nom du paramètre | Enforce MDS Mitigation |
| Paramètre du noyau appliqué | mds=full,nosmt |
TSX Asynchronous Abort (TAA)
Section intitulée « TSX Asynchronous Abort (TAA) »Touche les processeurs dotés des Transactional Synchronization Extensions. L’atténuation complète peut désactiver le SMT si besoin.
TSX peut être désactivé si le microcode fournit un MSR de contrôle de TSX. Dans ce cas, le système n’est pas vulnérable.
Identifiant lscpu |
Tsx async abort |
| Nom du paramètre | Enforce TSX Async Abort Mitigation |
| Paramètre du noyau appliqué | tsx_async_abort=full,nosmt |
Meltdown (vidage du cache L1D)
Section intitulée « Meltdown (vidage du cache L1D) »Exploit d’exécution spéculative permettant de lire la mémoire du noyau depuis l’espace utilisateur. Ditana force le vidage du cache de données L1.
La ligne de commande du noyau permet de contrôler au démarrage les mesures d’atténuation par vidage du L1D avec l’option
l1d_flush=. Par défaut, le mécanisme est désactivé.
Identifiant lscpu |
Meltdown |
| Nom du paramètre | Enforce Meltdown Mitigation |
| Paramètre du noyau appliqué | l1d_flush=on |
MMIO Stale Data
Section intitulée « MMIO Stale Data »Fuite de données provenant d’entrées-sorties mappées en mémoire. L’atténuation complète peut désactiver le SMT.
full,nosmt– Commefull, avec le SMT désactivé sur les processeurs vulnérables. C’est l’atténuation complète.
Identifiant lscpu |
Mmio stale data |
| Nom du paramètre | Enforce MMIO Stale Data Mitigation |
| Paramètre du noyau appliqué | mmio_stale_data=full,nosmt |
Retbleed – Cross-Thread Return Address Predictions
Section intitulée « Retbleed – Cross-Thread Return Address Predictions »Attaque par exécution spéculative qui divulgue des adresses de retour. La mesure d’atténuation sélectionnée automatiquement peut désactiver le SMT.
auto,nosmt– sélectionne automatiquement une mesure d’atténuation, en désactivant le SMT si nécessaire pour l’atténuation complète.
Identifiant lscpu |
Retbleed |
| Nom du paramètre | Enforce Retbleed Mitigation |
| Paramètre du noyau appliqué | retbleed=auto,nosmt |
Consultez aussi kernel.org : Cross-Thread Return Address Predictions.
Speculative Return Stack Overflow (SRSO)
Section intitulée « Speculative Return Stack Overflow (SRSO) »Attaques spéculatives via le tampon de la pile de retour. Combine des barrières IBPB avec le mode strict spectre_v2-user.
Mitigation: IBPB: protection semblable à « safe RET », mais qui emploie une barrière IBPB lors des passages entre domaines de privilèges (utilisateur→noyau, invité→hôte).
Identifiant lscpu |
Spec rstack overflow |
| Nom du paramètre | Enforce SRSO Mitigation |
| Paramètre du noyau appliqué | spec_rstack_overflow=ibpb spectre_v2_user=on |
Gather Data Sampling (GDS)
Section intitulée « Gather Data Sampling (GDS) »Touche les instructions AVX. Impose l’atténuation par microcode, ou désactive AVX lorsque le microcode n’est pas disponible.
Indiquer
gather_data_sampling=forceutilisera l’atténuation par microcode lorsqu’elle est disponible, ou désactivera AVX sur les systèmes concernés dont le microcode n’a pas été mis à jour pour inclure l’atténuation.
Identifiant lscpu |
Gather data sampling |
| Nom du paramètre | Enforce Gather Data Sampling Mitigation |
| Paramètre du noyau appliqué | gather_data_sampling=force |
Register File Data Sampling (RFDS)
Section intitulée « Register File Data Sampling (RFDS) »Permet d’échantillonner des données dans les registres du processeur.
Ce paramètre remplace la valeur par défaut définie à la compilation par
CONFIG_MITIGATION_RFDS.
Identifiant lscpu |
Reg file data sampling |
| Nom du paramètre | Enforce RFDS Mitigation |
| Paramètre du noyau appliqué | reg_file_data_sampling=on |
Consultez aussi kernel.org : RFDS.
Vulnérabilités non proposées dans le programme d’installation
Section intitulée « Vulnérabilités non proposées dans le programme d’installation »Pour celles-ci, le noyau applique par défaut l’atténuation maximale – Ditana n’a rien à y ajouter.
Cinq autres sont signalées par le noyau sans être nommées nulle part ci-dessus, car Ditana n’y ajoute rien non plus : Ghostwrite, Indirect Target Selection, old microcode, TSA et VMSCAPE. Le noyau décide de ce dont chacune a besoin en fonction du processeur qu’il trouve et laisse le résultat là où lscpu et /sys/devices/system/cpu/vulnerabilities/ l’affichent.
Spectre variante 1 – Bounds Check Bypass
Section intitulée « Spectre variante 1 – Bounds Check Bypass »Rien ne garantit que tous les vecteurs d’attaque possibles de Spectre variante 1 soient couverts.
Identifiant lscpu : Spectre v1
iTLB multihit
Section intitulée « iTLB multihit »Identifiant lscpu : Itlb multihit. Consultez kernel.org : iTLB multihit.
SRBDS – Special Register Buffer Data Sampling
Section intitulée « SRBDS – Special Register Buffer Data Sampling »Identifiant lscpu : Srbds. Consultez kernel.org : SRBDS.
Speculative Store Bypass (SSB)
Section intitulée « Speculative Store Bypass (SSB) »Le noyau fournit des mesures d’atténuation pour ces vulnérabilités sous diverses formes.
Identifiant lscpu : Spec store bypass.
Réduction des mesures d’atténuation – à vos risques et périls
Section intitulée « Réduction des mesures d’atténuation – à vos risques et périls »Le programme d’installation propose aussi deux options qui réduisent les mesures d’atténuation. Elles augmentent considérablement votre exposition aux vulnérabilités connues des processeurs. Ne les utilisez que pour une raison claire et justifiée.
Désactiver l’Indirect Branch Tracking d’Intel – ibt=off
Section intitulée « Désactiver l’Indirect Branch Tracking d’Intel – ibt=off »Désactive l’Indirect Branch Tracking du noyau. IBT est la moitié de la Control-flow Enforcement Technology consacrée aux transferts vers l’avant (forward edge) – le matériel vérifie que chaque saut ou appel indirect aboutit sur une instruction endbr, ce qui rend difficiles la programmation orientée saut et la programmation orientée appel. Il s’agit d’intégrité du flux de contrôle, pas d’une mesure d’atténuation de l’exécution spéculative : Branch Target Injection correspond à Spectre v2, traité plus haut sous spectre_v2=on. Ce paramètre du noyau n’est pas documenté dans la référence officielle des paramètres du noyau, bien qu’il soit couramment activé par défaut sur certaines distributions sans aucune communication explicite.
Le noyau documente l’autre moitié de la CET, la pile fantôme (shadow stack) de l’espace utilisateur, sous shstk ; IBT lui-même n’y a pas de page qui lui soit propre.
Désactiver toutes les mesures d’atténuation – mitigations=off
Section intitulée « Désactiver toutes les mesures d’atténuation – mitigations=off »C’est plus radical que de décocher chaque mesure d’atténuation individuelle dans la boîte de dialogue. Avec mitigations=off, le noyau ignore toutes les mesures d’atténuation qu’il connaît – y compris celles que Ditana ne propose pas parce qu’elles sont actives par défaut. Le plafond de performances s’élève ; le plancher de sécurité chute, et brutalement.
Utile uniquement pour des tests de performance, des systèmes isolés de tout réseau et sous contrôle physique total, ou des environnements où vous disposez de défenses d’une tout autre nature.
Consultez kernel.org : paramètres du noyau.
Avertissement
Section intitulée « Avertissement »Les recommandations de cette page s’appuient sur la documentation officielle des vulnérabilités des processeurs et sur la référence des paramètres de la ligne de commande du noyau. Les différentes branches du noyau s’écartent parfois subtilement de ces valeurs par défaut ; nos tests couvrent les noyaux pris en charge par Ditana, mais des combinaisons matérielles inhabituelles peuvent produire des cas limites.
Si l’une de vos charges de travail bénéficie d’une autre valeur par défaut, ou si vous trouvez un modèle de processeur pour lequel la détection de Ditana est incomplète ou incorrecte : veuillez ouvrir un ticket GitHub ou écrire à [email protected]. La logique de détection est constituée de données, pas de code – les améliorations se résument donc généralement à quelques lignes KDL.
Cette traduction a été réalisée par une machine. Les lecteurs l’améliorent sur Weblate.