Sécurité matérielle des systèmes
Vulnérabilités des processeurs et techniques d'exploitation
Olivier Savry
Thomas Hiscock
Mustapha El Majihi
Dunod
IntroductionVII
1 Vulnérabilités des mémoires1
1.1 Préliminaires1
1.1.1 Hiérarchie mémoire1
1.1.2 Mémoire cache2
1.1.3 Mémoire virtuelle6
1.2 Vulnérabilités des SRAMs12
1.2.1 Principe de lecture/écriture13
1.2.2 Les fautes dans les SRAMs14
1.2.3 La gestion des fautes des SRAMs15
1.2.4 La rétention et l'usure des SRAMs16
1.3 Attaques sur les mémoires caches17
1.3.1 Attaques par timing de cache17
1.3.2 Attaque Flush+Reload18
1.3.3 Attaque Prime+Probe22
1.3.4 Attaque Flush+Flush25
1.3.5 Attaque CacheBleed26
1.3.6 Attaque Evict+Time28
1.3.7 Techniques d'évincement d'une ligne de cache29
1.4 Attaque sur la memory management unit (MMU)33
1.4.1 Traduction des adresses virtuelles en adresses physiques34
1.4.2 Dérandomisation ASLR35
1.4.3 Attaque ASLR+Cache36
1.5 Attaques sur les mémoires DRAMs37
1.5.1 Décodage d'une adresse physique vers RAM39
1.5.2 Attaques basées sur le bug rowhammer41
1.5.3 DRAMA47
1.5.4 Attaques par démarrage à froid (coldboot)50
1.5.5 Compléments54
1.6 Vulnérabilités des mémoires flash55
1.6.1 Principe de la mémoire flash55
1.6.2 Vulnérabilités des mémoires flash NAND58
1.6.3 Exploitation des vulnérabilités59
2 Vulnérabilités liées à la microarchitecture des processeurs63
2.1 Microarchitecture des processeurs63
2.2 Vulnérabilités liées à la conception67
2.3 Meltdown et Spectre69
2.3.1 Attaque Meltdown70
2.3.2 Attaque Spectre75
3 Vulnérabilités des programmes79
3.1 Les dépassements mémoire (buffer overlow)79
3.1.1 Allocation mémoire en C81
3.1.2 Dépassements de tampons85
3.2 Autres vulnérabilités89
3.2.1 Utilisation de pointeurs invalides89
3.2.2 Utilisation de données non initialisées92
3.2.3 Race condition92
3.2.4 Dépassements d'entiers (integer overflow)94
3.3 Quelques techniques d'exploitation communes97
3.3.1 Détournement du flot de contrôle97
3.3.2 Exploitation d'un dépassement sur le tas111
3.4 Références additionnelles117
4 Secure boot119
4.1 Secure boot des microcontrôleurs119
4.2 Secure boot des smartphones121
4.2.1 La chaîne de confiance121
4.2.2 Les vulnérabilités du boot des smartphones122
4.2.3 Attaques TOCTOU (time of check to time of use)123
4.2.4 Utilisation d'une version antérieure123
4.3 BIOS des PC124
4.3.1 Le processus de boot124
4.3.2 Vulnérabilités du BIOS125
4.3.3 Conclusion129
5 Attaques sur les bus et périphériques131
5.1 Bus des processeurs131
5.1.1 Bus des processeurs ARM131
5.1.2 Bus des PC et serveurs Intel132
5.1.3 Les vulnérabilités des bus134
5.2 Interface de debug139
5.2.1 Interface JTAG139
5.2.2 Vulnérabilités du JTAG141
5.3 Management Engine des processeurs Intel143
5.4 Attaques par les périphériques146
5.4.1 Accès direct à la mémoire146
5.4.2 Corruption de DMA148
5.4.3 Corruption d'autres périphériques149
5.4.4 Attaques par déclenchement d'interruptions150
5.4.5 Une MMU pour les périphériques151
5.4.6 Références complémentaires152
5.5 Unités de gestion d'énergie (CLKScrew)152
5.5.1 DVFS153
5.5.2 Contraintes temporelles dans les circuits153
5.5.3 L'attaque CLKscrew156
6 Attaques par canaux cachés159
6.1 Techniques de mesure des canaux cachés159
6.2 Modèles de fuites161
6.3 Simple power analysis (SPA)162
6.4 Timing attack163
6.5 Retrouver un algorithme de cryptographie inconnu (attaque SCARE)163
6.5.1 Réseaux de permutations-substitutions164
6.5.2 Modèle d'attaquant165
6.5.3 Représentations équivalentes165
6.5.4 Étape 1 : retrouver k1166
6.5.5 Étape 2 : retrouver les fonctions (...) et la sous-clé k2166
6.5.6 Étape 3 : retrouver les sous-clés k3, k4, ..., kr167
6.6 Differential power analysis (DPA)167
6.6.1 Advanced encryption standard (AES)167
6.6.2 L'algorithme DPA169
6.7 Correlation power analysis (CPA)171
6.8 DPA d'ordre supérieur172
6.9 Attaque template173
6.10 Attaque DEMA (differential electromagnetic attack)175
6.11 Differential computation analysis (DCA) contre la cryptographie white box175
6.11.1 Cryptographie white box175
6.11.2 Principe de l'attaque DCA176
7 Attaques par injection de fautes179
7.1 Techniques d'injection180
7.1.1 Glitchs d'horloge et d'alimentation180
7.1.2 Glitch de tension sur le substrat (FBBI)181
7.1.3 Impulsion électromagnétique183
7.1.4 Effet photoélectrique184
7.1.5 Récapitulatif187
7.2 Modèles de fautes188
7.2.1 Modélisation physique188
7.2.2 Modélisation logique (RTL)188
7.2.3 Modélisation au niveau assembleur188
7.2.4 Modélisation au niveau du programme, algorithme ou protocole189
7.3 Exploitation de fautes189
7.3.1 Analyse différentielle de fautes (DFA)189
Conclusion194
Références198
Index209