0Pricing
Cyber Security Academy · Leçon

Exploitation du tas : Use-After-Free et Heap Spraying

Comprenez les mécanismes internes de malloc dans glibc, les situations Use-After-Free et les techniques de Heap Spraying.

Exploitation du tas : Use-After-Free et Heap Spraying est une leçon Cyber Security Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cyber Security Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cyber Security Academy comprend 4 leçons au total.

Le tas

Le tas est une mémoire dynamique allouée à l’exécution via malloc()/free()/new/delete. Contrairement à la pile, l’organisation du tas est déterminée par les schémas d’allocation et de libération, et non par la pile d’appels. Les vulnérabilités du tas sont fréquentes dans les navigateurs, les analyseurs et les démons réseau.

Utilisation après libération (UAF)

Une vulnérabilité d’utilisation après libération se produit lorsqu’un programme continue d’utiliser une zone mémoire après l’avoir libérée. Si la zone libérée est réallouée avec des données contrôlées par l’attaquant, le programme manipule alors les données de l’attaquant à l’aide de l’ancien pointeur.

Exemple d’UAF

Motif UAF :

// Vulnerable C code:
struct Object *obj = malloc(sizeof(*obj));
free(obj);
// Later, attacker causes a new malloc to fill the freed region
// with their data...
obj->method();  // now calls attacker's function pointer!

Agencement du tas

L’agencement du tas (ou préparation du tas) est une technique qui consiste à manipuler le gestionnaire d’allocation du tas pour placer des objets à des positions précises, ce qui permet de réutiliser de manière contrôlée la mémoire libérée. L’attaquant façonne le tas en déclenchant des allocations et des libérations dans un ordre précis.

Pulvérisation du tas

La pulvérisation du tas alloue de grandes quantités de données contrôlées par l’attaquant (code shell et traîneaux de NOP) dans tout le tas. Comme une grande partie du tas est remplie, un pointeur invalide a de fortes chances d’aboutir dans les données de l’attaquant. Cette technique est souvent utilisée avec des vulnérabilités UAF ou de confusion de type.

// JavaScript heap spray:
var spray = [];
for(var i = 0; i < 100000; i++) {
  spray[i] = unescape("%90%90...shellcode...");
}

Double libération

Une double libération se produit lorsque la mémoire est libérée deux fois. La seconde libération corrompt les métadonnées du gestionnaire du tas (pointeurs de liste libre), ce qui peut permettre à un attaquant de contrôler l’emplacement de la prochaine allocation et d’écrire à une adresse arbitraire.

Débordement de tampon du tas

Comme les débordements de pile, un débordement de tampon du tas écrit au-delà de la fin d’une allocation du tas. Contrairement aux débordements de pile, la cible est généralement constituée des métadonnées du tas (taille, pointeurs avant/arrière) ou d’allocations adjacentes contenant des pointeurs de fonction ou des pointeurs de vtable.

Confusion de type

Une confusion de type se produit lorsqu’une zone mémoire allouée comme un type est utilisée comme un autre type. Ce problème est fréquent dans les moteurs JavaScript et le code C++. Si un attaquant peut contrôler l’ordre des allocations, il peut faire traiter ses données par le moteur comme un objet de confiance.

Fonctionnement interne de ptmalloc et tcmalloc

Comprendre le gestionnaire d’allocation du tas facilite le développement d’exploits. Le ptmalloc de glibc utilise des compartiments (non triés, petits et grands) ainsi que des compartiments rapides. tcache (cache par fil d’exécution) est la première source d’allocation. Les exploits ciblent souvent la corruption des compartiments afin de contrôler les futures adresses d’allocation.

Mesures d’atténuation

Mesures d’atténuation contre l’exploitation du tas :

  • Randomisation du tas (incluse dans ASLR) — randomise la base du tas
  • Désenchaînement sécurisé — vérifie les pointeurs avant et arrière avant le désenchaînement
  • Détection de l’empoisonnement de tcache — ajoutée dans glibc 2.32
  • Brouillage des pointeurs — chiffre les pointeurs stockés dans tcache
  • Langages à sécurité mémoire — Rust élimine UAF à la compilation

Exploits du tas des navigateurs

La plupart des vulnérabilités zero-day des navigateurs concernent des vulnérabilités du tas dans les moteurs JavaScript (V8, SpiderMonkey). Les navigateurs modernes superposent des chaînes d’évasion du bac à sable : vulnérabilité du tas dans le processus de rendu → évasion vers le processus du navigateur → élévation des privilèges de l’OS. Chaque étape nécessite sa propre technique.

Vérification rapide : exploitation du tas

Quelle vulnérabilité permet à un attaquant de contrôler l’exécution du programme en utilisant un pointeur périmé vers une mémoire qui a déjà été libérée, puis réallouée avec des données contrôlées par l’attaquant ?

Récapitulatif de la leçon

Les vulnérabilités du tas — UAF, double libération, débordement du tas et confusion de type — exploitent une mauvaise gestion de la mémoire dynamique. L’utilisation après libération est la catégorie d’exploitation moderne la plus répandue. La pulvérisation du tas maximise les chances d’atterrir sur les données de l’attaquant. Mesures d’atténuation : ASLR, désenchaînement sécurisé et brouillage des pointeurs. Les langages à sécurité mémoire comme Rust éliminent entièrement ces catégories de vulnérabilités.

Questions Fréquemment Posées

La leçon « Exploitation du tas : Use-After-Free et Heap Spraying » est-elle gratuite ?

Oui — le texte complet de « Exploitation du tas : Use-After-Free et Heap Spraying » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cyber Security Academy, passe à CoddyKit PRO. Le cours Cyber Security Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Exploitation du tas : Use-After-Free et Heap Spraying » ?

Comprenez les mécanismes internes de malloc dans glibc, les situations Use-After-Free et les techniques de Heap Spraying. Tu pratiques Cyber Security Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Cyber Security Academy ?

Aucune expérience préalable n'est requise. Cyber Security Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Exploitation du tas : Use-After-Free et Heap Spraying » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Cyber Security Academy ?

Oui. Chaque leçon Cyber Security Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Dépassements de tampon de pile
  2. Programmation orientée retour (ROP)
  3. Vulnérabilités de chaînes de format
  4. Exploitation du tas : Use-After-Free et Heap Spraying
← Retour à Cyber Security Academy