Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Revenant — CVE-2026-74943 · Utilisation après libération dans Firefox RasterImage (sec-high) | Kitploit
Outils/GitHubGitHub/defineid/revenant
Analyse des VulnérabilitésAnalyse de CodeExploitationSécurité WebAnalyse de BinairesExploitation de Binaires
GitHubdefineid/revenant

Revenant

CVE-2026-74943 · Utilisation après libération dans Firefox RasterImage (sec-high)

Voir le dépôt
il y a 2 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Revenant

CVE-2026-74943 · Utilisation après libération dans Firefox RasterImage

Sévérité de sécurité : haute. CWE 416. Corrigé dans Firefox 154 et ESR 140.14. Bugzilla 2057308. Atteignable depuis une page web ordinaire sans interaction de l'utilisateur.

Résumé

Firefox conserve les surfaces d'images décodées dans un SurfaceCache. Le cache détient un pointeur brut non propriétaire vers l'image propriétaire. Lorsqu'une surface est évincée, le cache notifie cette image sur un thread de décodage. La notification lit le drapeau atomique mIsBeingDestroyed et ne prend RefPtr<RasterImage> image = this qu'ensuite. La lecture du drapeau et la prise de la référence sont deux opérations séparées. Le thread principal peut supprimer la dernière référence entre les deux. Un objet mourant est ressuscité puis lu après avoir été libéré.

L'entrelacement

root@kitploit:~
Decoder thread (holds the SurfaceCache lock)      Main thread
OnSurfaceDiscarded reads mIsBeingDestroyed = false
                                                  Release drops the refcount to zero and commits delete
                                                  ~RasterImage sets the flag then blocks on the cache lock
RefPtr image = this  (AddRef from zero to one)
queues the runnable and releases the lock
                                                  the destructor finishes and frees the 248 byte object
the runnable runs and reads freed mProgressTracker  ==> use after free

Le drapeau issu d'un correctif antérieur réduit la fenêtre. Il ne peut pas la fermer. Observer le drapeau à faux ne prouve pas que le compteur de références est encore supérieur à zéro, car le drapeau est défini dans le destructeur strictement après que le compteur a déjà atteint zéro.

Dans le binaire

Les deux instructions qui portent le bug apparaissent clairement dans la fonction compilée. La vérification du drapeau et l'incrément du compteur de références sur this sont séparés.

Disassembly of RasterImage::OnSurfaceDiscarded

Reproduction

Utilisez une build ASAN d'une version affectée. Appliquez les préférences dans prefs.js pour que le cache de surfaces reste minuscule et que le thread de décodage évince constamment des surfaces. Chargez uaf-reduced.html et laissez-le boucler. Il s'agit d'une course de temporisation entre threads, la reproduction est donc intermittente.

root@kitploit:~
AddressSanitizer: heap-use-after-free
READ of size 8, 8 bytes into a freed 248-byte RasterImage
  use   : RasterImage::OnSurfaceDiscardedInternal  (main thread)
  freed : RasterImage::Release()  via imgRequest teardown
  alloc : ImageFactory::CreateRasterImage()  on the ImageIO thread

Impact

Une utilisation après libération sur le tas dans le processus de contenu. Elle est atteignable depuis une page web et ne nécessite ni clic ni permission. Aucune exécution contrôlée n'a été démontrée sur les builds testées. L'objet est ressuscité puis libéré une seconde fois.

Correctif

OnSurfaceDiscarded ne référence plus l'image. Elle capture une référence forte vers le ProgressTracker, doté de son propre compteur de références, et récupère l'image sur le thread principal via la référence arrière faible du tracker. La récupération utilise un ajout atomique si l'objet est vivant. Le drapeau obsolète est supprimé.

Crédit

Abdulaziz Alasaiqah · https://azoz.my/writeups.html

Télécharger l’outil