En sécurité informatique , une attaque de démarrage à froid (ou dans une moindre mesure, une attaque de réinitialisation de plate-forme ) est un type d' attaque par canal auxiliaire dans lequel un attaquant ayant un accès physique à un ordinateur effectue un vidage de mémoire de la mémoire vive (RAM) d'un ordinateur en effectuant une réinitialisation matérielle de la machine cible. En règle générale, les attaques de démarrage à froid sont utilisées pour récupérer des clés de chiffrement à partir d'un système d'exploitation en cours d'exécution à des fins malveillantes ou d'enquête criminelle. L'attaque s'appuie sur la propriété de rémanence des données de la DRAM et de la SRAM pour récupérer le contenu de la mémoire qui reste lisible dans les secondes à minutes suivant une mise hors tension.
Un attaquant ayant un accès physique à un ordinateur en cours d'exécution exécute généralement une attaque de démarrage à froid en démarrant à froid la machine et en démarrant un système d'exploitation léger à partir d'un disque amovible pour vider le contenu de la mémoire physique de pré-démarrage dans un fichier. Un attaquant est alors libre d'analyser les données vidées de la mémoire pour trouver des données sensibles, telles que les clés , en utilisant diverses formes d' attaques de recherche de clés . Étant donné que les attaques de démarrage à froid ciblent la mémoire à accès aléatoire , les schémas de chiffrement complet du disque , même avec un module de plate-forme de confiance installé, sont inefficaces contre ce type d'attaque. Cela est dû au fait que le problème est fondamentalement un problème matériel (mémoire non sécurisée) et non logiciel . Cependant, l'accès malveillant peut être évité en limitant l'accès physique et en utilisant des techniques modernes pour éviter de stocker des données sensibles dans la mémoire à accès aléatoire .
Détails techniques
Les modules de mémoire DIMM perdent progressivement des données au fil du temps lorsqu'ils perdent de l'énergie, mais ne perdent pas immédiatement toutes les données en cas de coupure de courant. Avec certains modules de mémoire, la fenêtre temporelle d'une attaque peut être étendue à des heures ou même à une semaine en les refroidissant avec un spray réfrigérant et de l'azote liquide. De plus, à mesure que les bits disparaissent dans la mémoire au fil du temps, ils peuvent être reconstruits, car ils s'estompent de manière prévisible. Par conséquent, un attaquant peut effectuer un vidage de mémoire de son contenu en exécutant une attaque de démarrage à froid. La capacité à exécuter avec succès l'attaque de démarrage à froid varie considérablement selon les différents systèmes, types de mémoire, fabricants de mémoire et propriétés de la carte mère, et peut être plus difficile à mettre en œuvre que les méthodes logicielles ou une attaque DMA . Bien que l'accent soit actuellement mis sur le chiffrement des disques, toutes les données sensibles conservées en mémoire sont vulnérables à l'attaque.
Les attaquants exécutent des attaques de démarrage à froid en redémarrant de manière forcée et abrupte une machine cible, puis en démarrant un système d'exploitation préinstallé à partir d'une clé USB , d'un CD-ROM ou sur le réseau . Dans les cas où il n'est pas pratique de réinitialiser la machine cible, un attaquant peut également retirer physiquement les modules de mémoire du système d'origine et les placer rapidement dans une machine compatible sous le contrôle de l'attaquant, qui est ensuite démarrée pour accéder à la mémoire. Une analyse plus approfondie peut ensuite être effectuée sur les données extraites de la RAM .
Un type d'attaque similaire peut également être utilisé pour extraire des données de la mémoire, comme une attaque DMA qui permet d'accéder à la mémoire physique via un port d'extension à haut débit tel que FireWire . Une attaque de démarrage à froid peut être préférée dans certains cas, par exemple lorsqu'il existe un risque élevé de dommages matériels. L'utilisation du port d'extension à haut débit peut provoquer un court-circuit ou endommager physiquement le matériel dans certains cas.
Utilisations
Les attaques de démarrage à froid sont généralement utilisées pour les enquêtes médico-légales numériques , à des fins malveillantes telles que le vol et la récupération de données.
Forensique numérique
Dans certains cas, une attaque de démarrage à froid est utilisée dans la discipline de la criminalistique numérique pour préserver de manière médico-légale les données contenues dans la mémoire en tant que preuves criminelles. Par exemple, lorsqu'il n'est pas pratique de conserver les données en mémoire par d'autres moyens, une attaque de démarrage à froid peut être utilisée pour effectuer un vidage des données contenues dans la mémoire à accès aléatoire . Par exemple, une attaque de démarrage à froid est utilisée dans les situations où un système est sécurisé et qu'il n'est pas possible d'accéder à l'ordinateur. Une attaque de démarrage à froid peut également être nécessaire lorsqu'un disque dur est chiffré avec un chiffrement de disque complet et que le disque contient potentiellement des preuves d'activité criminelle. Une attaque de démarrage à froid permet d'accéder à la mémoire, ce qui peut fournir des informations sur l'état du système à ce moment-là, comme les programmes en cours d'exécution.
Intention malveillante
Une attaque de démarrage à froid peut être utilisée par des attaquants pour accéder à des informations cryptées telles que des informations financières ou des secrets commerciaux à des fins malveillantes.
Contourner le chiffrement complet du disque
L'un des objectifs courants des attaques de démarrage à froid est de contourner le chiffrement logiciel du disque. Les attaques de démarrage à froid utilisées en conjonction avec des attaques de recherche de clés se sont avérées être un moyen efficace de contourner les schémas de chiffrement complet du disque de divers fournisseurs et systèmes d'exploitation , même lorsqu'un cryptoprocesseur sécurisé TPM ( Trusted Platform Module ) est utilisé.
Dans le cas d'applications de chiffrement de disque qui peuvent être configurées pour permettre au système d'exploitation de démarrer sans qu'un code PIN de pré- démarrage ne soit saisi ou qu'une clé matérielle soit présente (par exemple BitLocker dans une configuration simple qui utilise un TPM sans code PIN d'authentification à deux facteurs ou clé USB), le délai de l'attaque n'est pas du tout limitatif.
BitLocker
BitLocker dans sa configuration par défaut utilise un module de plateforme de confiance qui ne nécessite ni code PIN , ni clé externe pour déchiffrer le disque. Lorsque le système d'exploitation démarre, BitLocker récupère la clé du TPM, sans aucune interaction de l'utilisateur. Par conséquent, un attaquant peut simplement mettre sous tension la machine, attendre que le système d'exploitation démarre , puis exécuter une attaque de démarrage à froid contre la machine pour récupérer la clé. Pour cette raison, l'authentification à deux facteurs , telle qu'un code PIN de pré-démarrage ou un périphérique USB amovible contenant une clé de démarrage avec un TPM, doit être utilisée pour contourner cette vulnérabilité dans l'implémentation BitLocker par défaut. Cependant, cette solution de contournement n'empêche pas un attaquant de récupérer des données sensibles de la mémoire, ni de récupérer des clés de chiffrement mises en cache dans la mémoire.
Atténuation
Comme un vidage de mémoire peut être facilement effectué en exécutant une attaque de démarrage à froid, le stockage de données sensibles dans la RAM, comme les clés de chiffrement pour le chiffrement complet du disque, n'est pas sûr. Plusieurs solutions ont été proposées pour stocker les clés de chiffrement dans des zones autres que la mémoire à accès aléatoire . Bien que ces solutions puissent réduire le risque de casser le chiffrement complet du disque, elles n'offrent aucune protection aux autres données sensibles stockées en mémoire.
Stockage de clés basé sur un registre
Une solution pour garder les clés de chiffrement hors de la mémoire est le stockage de clés basé sur des registres. Les implémentations de cette solution sont TRESOR et Loop-Amnesia. Ces deux implémentations modifient le noyau d'un système d'exploitation de sorte que les registres CPU (dans le cas de TRESOR, les registres de débogage x86 et dans le cas de Loop-Amnesia, les registres de profilage AMD64 ou EMT64) puissent être utilisés pour stocker les clés de chiffrement, plutôt que dans la RAM. Les clés stockées à ce niveau ne peuvent pas être facilement lues depuis l'espace utilisateur et sont perdues lorsque l'ordinateur redémarre pour une raison quelconque. TRESOR et Loop-Amnesia doivent tous deux utiliser la génération de clés à la volée en raison de l'espace limité disponible pour stocker les jetons cryptographiques de cette manière. Pour des raisons de sécurité, les deux désactivent les interruptions pour empêcher les informations clés de fuir vers la mémoire à partir des registres CPU pendant le chiffrement ou le déchiffrement, et les deux bloquent l'accès aux registres de débogage ou de profil.
Il existe deux zones potentielles dans les processeurs x86 modernes pour stocker les clés : les registres SSE qui pourraient en effet être rendus privilégiés en désactivant toutes les instructions SSE (et nécessairement, tous les programmes qui s'appuient sur elles), et les registres de débogage qui étaient beaucoup plus petits mais ne présentaient pas de tels problèmes.
Une distribution de preuve de concept appelée « paranoix » basée sur la méthode de registre SSE a été développée. Les développeurs affirment que « l'exécution de TRESOR sur un processeur 64 bits qui prend en charge AES-NI , il n'y a pas de pénalité de performance par rapport à une implémentation générique d' AES », et s'exécute légèrement plus rapidement que le chiffrement standard malgré la nécessité de recalculer la clé. Le principal avantage de Loop-Amnesia par rapport à TRESOR est qu'il prend en charge l'utilisation de plusieurs lecteurs chiffrés ; les principaux inconvénients sont un manque de prise en charge du x86 32 bits et des performances moins bonnes sur les processeurs ne prenant pas en charge AES-NI.
Stockage de clés basé sur le cache
Le « cache gelé » (parfois appelé « cache en RAM »), peut être utilisé pour stocker de manière sécurisée les clés de chiffrement. Il fonctionne en désactivant le cache L1 d'un processeur et l'utilise pour le stockage des clés. Cependant, cela peut dégrader considérablement les performances globales du système au point d'être trop lent pour la plupart des applications.
Une solution similaire basée sur le cache a été proposée par Guan et al. (2015) en utilisant le mode de cache WB (Write-Back) pour conserver les données dans les caches, réduisant ainsi les temps de calcul des algorithmes à clé publique.
Mimosa a présenté dans IEEE S&P 2015 une solution plus pratique pour les calculs cryptographiques à clé publique contre les attaques de démarrage à froid et les attaques DMA. Elle utilise la mémoire transactionnelle matérielle (HTM) qui a été initialement proposée comme mécanisme d'accès mémoire spéculatif pour améliorer les performances des applications multithread. La forte garantie d'atomicité fournie par HTM est utilisée pour contrer les accès concurrents illégaux à l'espace mémoire qui contient des données sensibles. La clé privée RSA est chiffrée en mémoire par une clé AES protégée par TRESOR. Sur demande, un calcul de clé privée RSA est effectué dans le cadre d'une transaction HTM : la clé privée est d'abord déchiffrée en mémoire, puis le déchiffrement ou la signature RSA est effectué. Étant donné qu'une clé privée RSA en texte clair n'apparaît que sous forme de données modifiées dans une transaction HTM, toute opération de lecture de ces données annulera la transaction - la transaction reviendra à son état initial. Notez que la clé privée RSA est chiffrée dans son état initial et qu'elle est le résultat d'opérations d'écriture (ou de déchiffrement AES). Actuellement, HTM est implémenté dans des caches ou des mémoires tampons, tous deux situés dans les processeurs, et non dans des puces RAM externes. Les attaques par démarrage à froid sont donc évitées. Mimosa résiste aux attaques qui tentent de lire des données sensibles à partir de la mémoire (y compris les attaques par démarrage à froid, les attaques DMA et d'autres attaques logicielles), et n'induit qu'une faible surcharge de performances.
Démontage des disques cryptés
Les bonnes pratiques recommandent de démonter tous les disques chiffrés non système lorsqu'ils ne sont pas utilisés, car la plupart des logiciels de chiffrement de disque sont conçus pour effacer de manière sécurisée les clés mises en cache dans la mémoire après utilisation. Cela réduit le risque qu'un attaquant puisse récupérer les clés de chiffrement de la mémoire en exécutant une attaque de démarrage à froid. Pour minimiser l'accès aux informations chiffrées sur le disque dur du système d'exploitation, la machine doit être complètement arrêtée lorsqu'elle n'est pas utilisée afin de réduire la probabilité d'une attaque de démarrage à froid réussie. Cependant, les données peuvent rester lisibles pendant des dizaines de secondes à plusieurs minutes en fonction du périphérique RAM physique de la machine, ce qui peut permettre à un attaquant de récupérer certaines données de la mémoire. Configurer un système d'exploitation pour qu'il s'arrête ou se mette en veille lorsqu'il n'est pas utilisé, au lieu d'utiliser le mode veille, peut aider à atténuer le risque d'une attaque de démarrage à froid réussie.
Contre-mesures efficaces
Empêcher l'accès physique
En règle générale, une attaque de démarrage à froid peut être évitée en limitant l'accès physique d'un attaquant à l'ordinateur ou en rendant de plus en plus difficile la réalisation de l'attaque. Une méthode consiste à souder ou à coller les modules de mémoire sur la carte mère , de sorte qu'ils ne puissent pas être facilement retirés de leurs supports et insérés dans une autre machine sous le contrôle d'un attaquant. Cependant, cela n'empêche pas un attaquant de démarrer la machine de la victime et d'effectuer un vidage de mémoire à l'aide d'une clé USB amovible . Une atténuation telle que le démarrage sécurisé UEFI ou des approches de vérification de démarrage similaires peuvent être efficaces pour empêcher un attaquant de démarrer un environnement logiciel personnalisé pour vider le contenu de la mémoire principale soudée.
Cryptage complet de la mémoire
Le chiffrement de la mémoire vive (RAM) atténue la possibilité pour un attaquant d'obtenir des clés de chiffrement ou d'autres éléments de la mémoire via une attaque de démarrage à froid. Cette approche peut nécessiter des modifications du système d'exploitation, des applications ou du matériel. Un exemple de chiffrement de mémoire basé sur le matériel a été implémenté dans la Xbox de Microsoft . Des implémentations sur du matériel x86-64 plus récent sont disponibles auprès d'AMD et sur les processeurs Intel Willow Cove et plus récents.
Le chiffrement logiciel de la mémoire complète est similaire au stockage de clés basé sur le processeur, car le matériel de clé n'est jamais exposé à la mémoire, mais il est plus complet puisque tout le contenu de la mémoire est chiffré. En général, seules les pages immédiates sont déchiffrées et lues à la volée par le système d'exploitation. Les implémentations de solutions de chiffrement de mémoire basées sur un logiciel comprennent : un produit commercial de PrivateCore . et RamCrypt, un correctif de noyau pour le noyau Linux qui crypte les données en mémoire et stocke la clé de chiffrement dans les registres du processeur d'une manière similaire à TRESOR .
Depuis la version 1.24, VeraCrypt prend en charge le cryptage RAM pour les clés et les mots de passe.
Plus récemment, plusieurs articles ont été publiés soulignant la disponibilité de processeurs x86 et ARM à sécurité renforcée. Dans ce travail, un processeur ARM Cortex A8 est utilisé comme substrat sur lequel une solution de chiffrement de mémoire complète est construite. Les segments de processus (par exemple, la pile, le code ou le tas) peuvent être chiffrés individuellement ou en composition. Ce travail marque la première implémentation de chiffrement de mémoire complète sur un processeur à usage général. Le système offre à la fois des protections de confidentialité et d'intégrité du code et des données qui sont chiffrés partout en dehors des limites du processeur.
Effacement sécurisé de la mémoire
Les attaques par démarrage à froid ciblant la mémoire vive non chiffrée , une solution consiste à effacer les données sensibles de la mémoire lorsqu'elle n'est plus utilisée. La « TCG Platform Reset Attack Mitigation Specification », une réponse de l'industrie à cette attaque spécifique, force le BIOS à écraser la mémoire pendant le POST si le système d'exploitation n'a pas été arrêté correctement. Cependant, cette mesure peut toujours être contournée en retirant le module de mémoire du système et en le relisant sur un autre système sous le contrôle de l'attaquant qui ne prend pas en charge ces mesures.
Une fonction d'effacement sécurisé efficace consisterait à effacer la RAM en moins de 300 ms avant la coupure de courant, en conjonction avec un BIOS sécurisé et un contrôleur de disque dur/SSD qui crypte les données sur les ports M-2 et SATAx. Si la RAM elle-même ne contenait aucune présence série ou autre donnée et que les timings étaient stockés dans le BIOS avec une forme de sécurité intégrée nécessitant une clé matérielle pour les modifier, il serait presque impossible de récupérer des données et serait également immunisé contre les attaques TEMPEST , les attaques de type man-in-the-RAM et d'autres méthodes d'infiltration possibles.
Certains systèmes d'exploitation tels que Tails fournissent une fonctionnalité qui écrit de manière sécurisée des données aléatoires dans la mémoire système lorsque le système d'exploitation est arrêté afin d'atténuer une attaque de démarrage à froid. Cependant, l'effacement de la mémoire vidéo n'est toujours pas possible et, en 2022, il s'agit toujours d'un ticket ouvert sur le forum Tails. Les attaques potentielles qui pourraient exploiter cette faille sont :
- La génération d'une paire de clés GnuPG et la visualisation de la clé privée dans un éditeur de texte pourraient conduire à la récupération de la clé.
- Une graine de crypto-monnaie pourrait être vue, contournant ainsi le portefeuille (même s'il est crypté) permettant ainsi l'accès aux fonds.
- La saisie d'un mot de passe avec la visibilité activée peut afficher des parties de celui-ci, voire la clé entière. Si un fichier de clés est utilisé, il peut être démontré qu'il réduit le temps nécessaire à une attaque par mot de passe.
- Des traces de volumes chiffrés montés ou ouverts avec une dénégation plausible peuvent être affichées, conduisant à leur découverte.
- Si vous êtes connecté à un service .onion , l' URL peut être affichée et conduire à sa découverte, alors que dans le cas contraire, cela serait extrêmement difficile.
- L'utilisation d'un programme particulier peut révéler les habitudes de l'utilisateur. Par exemple, si un programme de stéganographie est utilisé et ouvert, on peut supposer que l'utilisateur a caché des données. De même, si un logiciel de messagerie instantanée est utilisé, une liste de contacts ou de messages peut être affichée.
Stockage de clés externe
Une attaque de démarrage à froid peut être évitée en garantissant qu'aucune clé n'est stockée par le matériel attaqué.
- L'utilisateur saisit manuellement la clé de cryptage du disque
- Utilisation d'un disque dur entièrement crypté et fermé où les clés de cryptage sont conservées dans un matériel séparé du disque dur .
Des contre-mesures inefficaces
Le brouillage de mémoire peut être utilisé pour minimiser les effets parasites indésirables des semi-conducteurs en tant que caractéristique des processeurs Intel Core modernes. Cependant, étant donné que le brouillage n'est utilisé que pour décorréler tous les motifs dans le contenu de la mémoire, la mémoire peut être débrouillée via une attaque de débrouillage. Par conséquent, le brouillage de mémoire n'est pas une atténuation viable contre les attaques de démarrage à froid.
Le mode veille n'offre aucune protection supplémentaire contre une attaque de démarrage à froid, car les données résident généralement toujours en mémoire dans cet état. Par conséquent, les produits de chiffrement de disque complet sont toujours vulnérables aux attaques, car les clés résident en mémoire et n'ont pas besoin d'être saisies à nouveau une fois que la machine sort d'un état de faible consommation.
Bien que la limitation des options du périphérique de démarrage dans le BIOS puisse rendre légèrement plus difficile le démarrage d'un autre système d'exploitation, le micrologiciel des chipsets modernes tend à permettre à l'utilisateur de remplacer le périphérique de démarrage pendant le POST en appuyant sur une touche de raccourci spécifiée. La limitation des options du périphérique de démarrage n'empêchera pas non plus le module de mémoire d'être retiré du système et relu sur un autre système. De plus, la plupart des chipsets fournissent un mécanisme de récupération qui permet de réinitialiser les paramètres du BIOS aux valeurs par défaut même s'ils sont protégés par un mot de passe. Les paramètres du BIOS peuvent également être modifiés pendant que le système est en cours d'exécution pour contourner les protections appliquées par celui-ci, telles que l'effacement de la mémoire ou le verrouillage du périphérique de démarrage.
Smartphones
L'attaque par démarrage à froid peut être adaptée et exécutée de manière similaire sur les smartphones Android . Étant donné que les smartphones ne disposent pas d'un bouton de réinitialisation, un démarrage à froid peut être effectué en débranchant la batterie du téléphone pour forcer une réinitialisation matérielle. Le smartphone est ensuite flashé avec une image du système d'exploitation qui peut effectuer un vidage de mémoire . En règle générale, le smartphone est connecté à la machine d'un attaquant à l'aide d'un port USB .
En règle générale, les smartphones Android effacent en toute sécurité les clés de chiffrement de la mémoire vive lorsque le téléphone est verrouillé. Cela réduit le risque qu'un attaquant puisse récupérer les clés de la mémoire, même s'il réussit à exécuter une attaque de démarrage à froid contre le téléphone.