Une méthode d'attaque a été proposée pour déterminer à distance les fragments de mémoire sur le serveur

Un groupe de chercheurs de l'Université technique de Graz (Autriche), précédemment connu pour avoir développé les attaques MDS, NetSpectre, Throwhammer et ZombieLoad, a publié une nouvelle méthode d'attaque par canal secondaire (CVE-2021-3714) contre le mécanisme de déduplication de mémoire. , qui permet de déterminer la présence en mémoire de certaines données, d'organiser une fuite octet par octet du contenu de la mémoire ou de déterminer la disposition de la mémoire pour contourner la protection par randomisation basée sur l'adresse (ASLR). La nouvelle méthode se distingue des variantes d'attaques précédemment démontrées sur le mécanisme de déduplication en effectuant une attaque depuis un hôte externe en utilisant comme critère la modification du temps de réponse aux requêtes envoyées à l'attaquant via les protocoles HTTP/1 et HTTP/2. La capacité à mener l'attaque a été démontrée pour les serveurs basés sur Linux et Windows.

Les attaques contre le mécanisme de déduplication de la mémoire utilisent la différence de temps de traitement d'une opération d'écriture comme canal pour divulguer des informations dans des situations où une modification des données conduit au clonage d'une page de mémoire dédupliquée à l'aide du mécanisme de copie sur écriture (COW). . Pendant le fonctionnement, le noyau détecte les pages mémoire identiques de différents processus et les fusionne, mappant les pages mémoire identiques dans une seule zone de mémoire physique pour stocker une seule copie. Lorsqu'un des processus tente de modifier les données associées aux pages dédupliquées, une exception (erreur de page) se produit et, à l'aide du mécanisme Copy-On-Write, une copie distincte de la page mémoire est automatiquement créée, qui est attribuée au processus. Un temps supplémentaire est consacré à la réalisation de la copie, ce qui peut être le signe de modifications de données interférant avec un autre processus.

Les chercheurs ont montré que les retards résultant du mécanisme COW peuvent être capturés non seulement localement, mais également en analysant les changements dans les délais de réponse sur le réseau. Plusieurs méthodes ont été proposées pour déterminer le contenu de la mémoire d'un hôte distant en analysant le temps d'exécution des requêtes sur les protocoles HTTP/1 et HTTP/2. Pour enregistrer les modèles sélectionnés, des applications Web standard sont utilisées qui stockent en mémoire les informations reçues dans les requêtes.

Le principe général de l'attaque se résume à remplir une page mémoire du serveur avec des données qui répètent potentiellement le contenu d'une page mémoire déjà existante sur le serveur. L'attaquant attend ensuite le temps nécessaire au noyau pour dédupliquer et fusionner la page mémoire, puis modifie les données en double contrôlées et évalue le temps de réponse pour déterminer si l'accès a réussi.

Une méthode d'attaque a été proposée pour déterminer à distance les fragments de mémoire sur le serveur

Au cours des expériences, le taux de fuite d'informations maximum était de 34.41 octets par heure lors d'une attaque via un réseau mondial et de 302.16 octets par heure lors d'une attaque via un réseau local, ce qui est plus rapide que d'autres méthodes d'extraction de données via des canaux tiers (par exemple, dans une attaque NetSpectre, le taux de transfert de données est de 7.5 octets à une heure).

Trois options d'attaque fonctionnelles ont été proposées. La première option vous permet de déterminer les données dans la mémoire du serveur Web qui utilise Memcached. L'attaque se résume à charger certains ensembles de données dans le stockage Memcached, à effacer le bloc dédupliqué, à réécrire le même élément et à créer une condition pour que la copie COW se produise en modifiant le contenu du bloc. Lors de l'expérience avec Memcached, il a été possible de déterminer en 166.51 secondes la version de la libc installée sur un système exécuté sur une machine virtuelle.

La deuxième option permettait de connaître le contenu des enregistrements dans le SGBD MariaDB, lors de l'utilisation du stockage InnoDB, en recréant le contenu octet par octet. L'attaque est menée en envoyant des requêtes spécialement modifiées, ce qui entraîne des discordances d'un seul octet dans les pages de mémoire et en analysant le temps de réponse pour déterminer que la supposition sur le contenu de l'octet était correcte. Le taux d'une telle fuite est faible et s'élève à 1.5 octets par heure lors d'une attaque depuis un réseau local. L’avantage de la méthode est qu’elle peut être utilisée pour récupérer des contenus de mémoire inconnus.

La troisième option a permis de contourner complètement le mécanisme de protection KASLR en 4 minutes et d'obtenir des informations sur le décalage mémoire de l'image du noyau de la machine virtuelle, dans une situation où l'adresse de décalage se trouve dans une page mémoire dans laquelle les autres données ne changent pas. L'attaque a été menée à partir d'un hôte situé à 14 sauts du système attaqué. Des exemples de code pour mettre en œuvre les attaques présentées devraient être publiés sur GitHub.

Source: opennet.ru

Ajouter un commentaire