Sécurité matérielle : évolutions récentes

À propos des fonctions matérielles qui soutiennent l'intégrité du flot de contrôle, quelle association est correcte entre ce qui protège les retours de fonction et ce qui protège les appels et sauts indirects, comme ceux qui passent par des pointeurs de fonction ?

  1. ALes retours sont protégés par les piles fantômes ou l'authentification de pointeurs ; les appels et sauts indirects par des mécanismes qui exigent une instruction marqueur désignée au début de la cible
  2. BLes retours sont protégés par des mécanismes qui exigent une instruction marqueur désignée au début de la cible ; les appels et sauts indirects par les piles fantômes
  3. CLes retours sont protégés par KPTI (kernel page-table isolation) ; les appels et sauts indirects par la traduction d'adresses de l'IOMMU
Afficher la réponse et l'explication

Réponse : A. Les retours sont protégés par les piles fantômes ou l'authentification de pointeurs ; les appels et sauts indirects par des mécanismes qui exigent une instruction marqueur désignée au début de la cible

Une pile fantôme compare l'adresse de retour à sa copie, et l'authentification de pointeurs vérifie le code d'authentification ajouté à l'adresse de retour ; toutes deux protègent donc les retours de fonction. Pour les appels et sauts indirects, Intel IBT et Branch Target Identification d'Arm exigent une instruction marqueur au début de la cible (ENDBR64 sur x86) et transforment en exception les branchements vers le milieu d'une fonction, par exemple. Un emplacement portant un marqueur reste toutefois accessible depuis n'importe quel branchement indirect ; on les combine donc parfois avec des contrôles plus fins du compilateur, qui limitent les cibles aux fonctions d'un type compatible. KPTI est une contre-mesure à Meltdown et l'IOMMU restreint le DMA des périphériques ; aucun des deux ne protège le flot de contrôle.

S'entraîner sur ce thème Retour au thème

Autres questions sur Sécurité matérielle : évolutions récentes

  1. Pourquoi dit-on que le Rowhammer devient plus probable à mesure que la DRAM est miniaturisée ?
  2. Pourquoi la protection contre le Rowhammer par le TRR (target row refresh) intégré aux DRAM a-t-elle pu être contournée dans des travaux de recherche ?
  3. Quel est le problème de l'idée selon laquelle « avec une mémoire ECC, il n'y a pas à s'inquiéter du Rowhammer » ?
  4. Quelle affirmation décrit correctement le principe du PRAC (per-row activation counting), ajouté à la norme DDR5 mise à jour en 2024 (JESD79-5C) ?
  5. Pour simplifier, on prend tRC = 50 ns comme intervalle minimal entre deux activations de rangées dans un même banc. Avec une période de rafraîchissement de 64 ms, le nombre maximal de fois qu'une rangée voisine peut être activée entre deux rafraîchissements successifs d'une rangée donnée est de 64 ms ÷ 50 ns. Quel est ce nombre maximal si la fréquence de rafraîchissement est doublée ?