Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Quickie sur Spectre et Meltdown

Quickie sur Spectre et Meltdown

Quickie présenté à SGCIB le 29 janvier 2018
Explication de Spectre & Meltdown et zoom sur les micro architectures modernes

Cyrille DUPUYDAUBY

January 29, 2018
Tweet

More Decks by Cyrille DUPUYDAUBY

Other Decks in Programming

Transcript

  1. CONTEXTE • Le 3 janvier 2018, l’annonce est faite •

    4 équipes différentes avaient identifié les failles • Perçue comme une catastrophe majeure • Certains OSs étaient déjà patchés ou des patchs disponibles 3 https://meltdownattack.com/
  2. IMPACT • MELTDOWN: • Sur proc Intel • Bypass des

    règles de protection • Accès libre à la mémoire kernel • Découverte de secrets • Sortie de VM • Performance limitée 4
  3. IMPACT • SPECTRE • Accès à l’intégralité de la mémoire

    d’un process • Sous condition de faille exploitable 5
  4. 7

  5. CPU = MACHINE VIRTUELLE • Compilateur JIT • Génération de

    microcode • Optimisation via réordonancement et retrait • Parallélisation • Exécution spéculative 10
  6. SPECULATIVE EXECUTION • Capacité de continuer à exécuter le problème

    le temps que la donnée arrive depuis la mémoire (15ns ~ 50 - 100 instructions) • Si instructions conditionnelles (sauts, boucles) • Branch prediction: hypothèse basée sur des statistiques • Si OK => continue (gain de performance) • Si KO => on jette et on recommence (gain non réalisé) 12
  7. MMU • La mémoire est aussi virtualisée • 1 Process

    ~ 1 VM • Accès à toute la mémoire virtuelle (~adressable) • Pagination/caching: • mémoire virtuelle utilisée est lue depuis swap vers mémoire physique • Sauvegardée sur disque pour faire de la place • Système de droits pour gérer l’accès 14
  8. DÉTAILS • Chaque accès mémoire fait l’objet • Translation d’adresse

    (virtuelle => physique) • Parcours d’un arbre=> cache (TLB) • Vérification des droits (TLB) • Mise en cache si absent • Accès au cache 16
  9. MECHANISME Faille Intel l’exécution spéculative ignore les droits d’accès Oui

    mais Si confirmée => exception Si infirmée => résultat abandonné 18
  10. MECHANISME • Oui mais un effet de bord persiste: •

    Le chargement du cache mémoire • Canal secondaire possible => état du cache 19
  11. 1. Lire l’octet à l’adresse souhaitée 2. *4096 (pour les

    prefetchs) 3. Déterminer quelle partie de la mémoire a été mise en cache (non visible ici) 20
  12. DEMARCHE GÉNÉRALE 1. Identifier un programme à cibler (celui qu’on

    souhaite espionner) 2. Trouver une portion de code (e.g API) contenant un algorithme adapté 3. Exploiter 22
  13. MECHANISME 1 • On entraîne la prédiction de branche à

    la réussite (x < array1_size) • On fixe l’état du cache • On injecte le x désiré • On analyse l’état du cache • ˰ permet de contourner la sandbox Javascript (ou la JVM par exemple) 23
  14. MECHANISME 2 • On identifie une portion de code avec

    un saut indirect • On injecte l’adresse de la portion de programme désirée • On exploite les résultats de la pré exécution via analyse du cache • ˰ Généralisation de la stratégie. Plus compliqué, mais possible 24