Applications, sites et API
Particuliers et entreprisesUtilisation de mémoire après libération
Use-after-free / UAF
Un programme réutilise une zone mémoire qu’il a déjà libérée.
Je pense être concerné : que faire ?
Comprendre et agir
Découvrez le piège à partir d’un exemple, puis les gestes que vous pouvez faire. Vous pouvez suivre cette lecture sans connaissances en informatique.
Une situation concrète
Un outil ferme un aperçu de document, mais une tâche retardée conserve une référence vers cet aperçu. Quand elle reprend, la mémoire a déjà été libérée. Le programme peut planter ou manipuler le contenu d’un autre objet qui occupe maintenant cette place.
Comment cela fonctionne
Un programme réserve de la mémoire pour ses objets, puis la libère lorsqu’ils ne servent plus. Un défaut apparaît si une autre partie du programme continue à utiliser une ancienne référence. L’emplacement peut être réattribué entre-temps. Une personne qui contrôle certaines entrées peut parfois influencer ce nouveau contenu et détourner le traitement. Les effets dépendent du programme et de ses protections.
- Un objet est fermé
Sa mémoire devient disponible.
- Une ancienne référence reste active
Une tâche retardée conserve son adresse.
- La tâche utilise la mauvaise mémoire
Le programme peut planter ou agir autrement.
Ce que vous pouvez faire
Vos premiers réflexes
Mettez le logiciel à jour et signalez un plantage lié à une fermeture ou une annulation. Notez l’heure et conservez le document sans le rouvrir pour reproduire la panne.
Si vous êtes responsable du service ou de l’organisation
Faites rechercher les références conservées par les tâches retardées. Corrigez leur gestion, puis testez les annulations et les fermetures avec la version réellement utilisée.
Une zone libérée peut conserver son ancien contenu pendant un moment. Une lecture qui semble réussir ne rend pas cette référence valide.
À vous de décider
L’aperçu est fermé, mais une tâche peut encore lire son ancienne mémoire sans planter. Cette lecture est-elle correcte ?
Prenez un moment pour répondre et expliquer votre choix, puis ouvrez la correction.
Voir la réponse expliquée
Non. La durée de vie de l’objet est terminée. Le contenu peut encore sembler intact, ou déjà appartenir à un autre objet. Le fournisseur doit corriger la référence conservée.
Analyser un cas technique
Ce cas s’adresse aux personnes qui développent, administrent ou analysent ces systèmes. Si vous découvrez le sujet, commencez par « Comprendre et agir ».
Étude de cas fictive
Un rappel utilise l’aperçu après sa destruction
Dans ce cas fictif, l’aperçu preview-A est libéré après sa fermeture. Un rappel différé tente ensuite de le consulter. Le diagnostic heap-use-after-free relie l’accès à une allocation dont la durée de vie est terminée. Il faut lire les piles d’allocation, de libération et d’accès du rapport original pour retrouver les chemins concernés.
La reconstitution montre une lecture invalide dans le laboratoire. Aucun élément n’établit ici une exécution hostile en production. Le contenu présent à cette adresse peut différer d’un essai à l’autre, et le résultat dépend des conditions d’exécution.
La version corrigée annule le rappel avant la destruction de l’objet et garantit qu’aucun rappel en cours ne le consulte encore. Cette synchronisation doit aussi couvrir les fermetures simultanées et les erreurs de traitement. Le cas Internet Explorer cité dans les sources illustre le même type de défaut dans un autre composant.
Le déroulement en schéma
Faites défiler le diagramme pour suivre les échanges ; les noms des acteurs restent en haut. Sur petit écran, faites aussi défiler de gauche à droite.
- Action
Ouverture de l’aperçu
Utilisateur vers Service d’aperçu
Trace preview-31
- Action
Création de l’objet
Service d’aperçu vers Objet d’aperçu
Trace preview-A
- Action
Planification du rappel
Service d’aperçu vers Rappel différé
Trace référence conservée
- Action
Fermeture et libération
Service d’aperçu vers Objet d’aperçu
Trace event=freed
- Action
Consultation tardive
Rappel différé vers Objet d’aperçu
Trace heap-use-after-free
- Réponse
Erreur de mémoire en test
Objet d’aperçu vers Service d’aperçu
Trace prise de contrôle non établie
- Refus / blocage
Annulation et synchronisation après correction
Service d’aperçu vers Rappel différé
Trace avant la libération
Comment repérer cette attaque
Indices à rechercher
- Des plantages surviennent après une fermeture, une annulation ou un traitement retardé.
- Un diagnostic mémoire relie l’accès à un objet déjà libéré.
- Le processus réalise ensuite une opération étrangère au traitement attendu.
Rapprocher les fermetures et annulations des plantages du processus de traitement. Sur une copie instrumentée, examiner les trois piles qui décrivent l’allocation, la libération et l’accès ultérieur. Rechercher à part les actions inattendues du processus réel.
Quelles informations comparer
Suivre preview-A dans la reproduction, depuis sa création jusqu’au rappel. Vérifier l’ordre des événements dans le processus concerné, puis comparer sa version à celle déployée sans confondre les deux environnements.
Ce que ces indices ne permettent pas de conclure
Un diagnostic d’utilisation après libération établit un accès invalide dans le test. Il ne prouve ni le contrôle du nouveau contenu ni une exécution de code hostile dans le service de production.
Comment réagir
Suspendre le traitement vulnérable des documents non fiables et préserver les versions utiles. Appliquer la correction de durée de vie puis vérifier les processus chargés. Étendre l’enquête si des actions hostiles sont établies avec leurs droits.
Vérifier la correction
L’équipe responsable du système peut utiliser ces contrôles dans un environnement de test autorisé. Vous pouvez lire et comprendre le cas sans effectuer ces manipulations.
- Un rappel ne peut plus accéder à l’objet après sa destruction, même s’il était déjà en cours.
- Les essais instrumentés couvrent fermeture, annulation et traitement normal.
- Le composant corrigé est effectivement chargé par les services exposés.
À vous de raisonner
Le rapport situe l’accès dans un rappel après la libération. Mettre la référence principale à zéro suffit-il si le rappel conserve sa propre copie ?
Quelle décision prendriez-vous, et sur quel indice vous appuieriez-vous ? Répondez avant d’ouvrir la correction.
Comparer avec le raisonnement expliqué
Non. Il faut aussi traiter la référence détenue par le rappel et synchroniser les tâches déjà en cours. Le test doit montrer que l’objet reste vivant pendant tout accès autorisé, ou que cet accès ne peut plus se produire.
Consulter les détails techniques
Les extraits permettent de s’exercer à lire les traces du cas. Si vous disposez des outils et des accès nécessaires, le guide de collecte vous aide aussi à rechercher ces informations.
Lire les extraits commentés (reconstitution fictive)
Ces extraits contiennent des valeurs fictives. Certains champs correspondent à ceux des outils documentés ; d’autres réunissent plusieurs sources pour faciliter l’explication. Vos propres exports pourront donc avoir une autre forme. Lisez d’abord les explications des champs, puis repérez-les dans les extraits.
diagnostic- Résumé pédagogique du constat mémoire ; le rapport natif contient les piles qu’il faut examiner séparément.
code_execution- Conclusion limitée aux preuves du cas : not_established signifie que l’exécution hostile n’est pas démontrée.
Reconstitution pédagogique du cas en laboratoire
JSONLValeurs et événements fictifs réunis pour expliquer le cas. Ce format est une reconstitution, pas un export natif du logiciel ou du système cité.
{"case":"preview-31","environment":"isolated_test","object":"preview-A","event":"allocated"}
{"case":"preview-31","object":"preview-A","event":"freed"}
{"case":"preview-31","event":"deferred_callback","diagnostic":"heap-use-after-free","code_execution":"not_established"}
{"case":"preview-32","build":"fixed","event":"callback_cancelled_before_release"}Préparer une collecte dans votre environnement
Utilisez les sources disponibles dans vos outils et auxquelles vous êtes autorisé à accéder. Vous pouvez comprendre la fiche sans posséder ces outils. Vérifiez que les journaux étaient activés pendant la période étudiée. Gardez l’export original avec son fuseau horaire et sa provenance dans un espace à accès restreint. Pour l’analyse, travaillez sur une copie dont vous avez retiré les secrets.
LLVM — rapport AddressSanitizer en environnement de test
- Où les trouver
- Dans la sortie d’erreur de la compilation instrumentée exécutée au laboratoire, ou son artefact conservé par la chaîne de tests. Lire le type d’accès, la pile d’appels et l’allocation décrite.
- Quoi relever
- Conserver le diagnostic heap-use-after-free et les piles d’allocation, de libération et d’accès. Relier ces éléments à la compilation instrumentée et aux symboles correspondants.
- Accès et prérequis
- Reproduction autorisée sur des données factices, binaire instrumenté et symboles correspondant à sa version. Ces rapports ne sont pas présents par défaut en production et ne reconstituent pas une attaque passée ; protéger les données éventuellement contenues dans les diagnostics.
Service concerné — audit et historique à vérifier
- Où les trouver
- Dans l’outil d’administration ou les journaux du service concerné. Demander à son mainteneur où sont enregistrées les décisions d’autorisation et les opérations métier.
- Quoi relever
- Retrouver la fermeture de l’aperçu, l’annulation et les rappels associés. Ces étapes nécessitent une instrumentation adaptée ; un journal d’accès HTTP ne décrit pas la durée de vie des objets.
- Accès et prérequis
- Il n’existe ni fichier ni vocabulaire universels. Les champs proposés ici doivent être instrumentés s’ils manquent ; ne pas enregistrer mots de passe, jetons ou contenu privé intégral.
Si vous pensez être concerné
Si vous utilisez le service
Mettez le logiciel à jour et signalez un plantage lié à une fermeture ou une annulation. Notez l’heure et conservez le document sans le rouvrir pour reproduire la panne.
Pour l’équipe qui exploite le service
- Conservez l’heure, le fichier concerné et la version du logiciel sans relancer le document.
- Faites isoler le traitement exposé et appliquer le correctif du fournisseur.
- Examinez les effets observés avec les droits du processus pendant la période vulnérable.
Pour comprendre votre situation et trouver de l’aide : obtenir une assistance sur 17Cyber. Dans une organisation, prévenez aussi le responsable ou prestataire chargé de la sécurité.
Sources et repères pour approfondir
- CWE-416 : utilisation après libération — cwe.mitre.org
- LLVM : AddressSanitizer — clang.llvm.org
- Rapid7 : Internet Explorer, CVE-2013-3163 — rapid7.com


