Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
VectorFreed — Documente la chaîne RCE use-after-free de VectorFreed dans librsvg (CVE-2026-96889) avec un PoC de générateur SVG et des conseils de remédiation pour librsvg, Next.js et Satori. | Kitploit
Outils/GitHubGitHub/rafabd1/vectorfreed
Criminalistique MémoireAnalyse des VulnérabilitésExploitationExploitation d'Applications WebCollecte d'InformationsArticles et RechercheExploitation de Binaires
GitHubrafabd1/vectorfreed

VectorFreed

Documente la chaîne RCE use-after-free de VectorFreed dans librsvg (CVE-2026-96889) avec un PoC de générateur SVG et des conseils de remédiation pour librsvg, Next.js et Satori.

Voir le dépôt
19177il y a 19h 43mPas 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

VectorFreed

Résumé

Ce document présente « VectorFreed », une chaîne de vulnérabilités qui commence par un use-after-free que j'ai (@rafabd1) découvert dans librsvg (CVE-2026-96889). Dans une build Node.js/Sharp/libvips, ce bug a conduit à une exécution de commandes. Il couvre le bug, les chemins confirmés dans les applications à ce jour, et les correctifs disponibles dès maintenant.

Détails

Un SVG peut inclure un autre SVG via XInclude. Dans le chemin vulnérable, librsvg commence à analyser un document inclus alors que libxml2 est encore en train de développer une entité dans le document externe. Si le SVG inclus déclare une entité portant le même nom, librsvg remplace et libère la première entité. libxml2 détient toujours un pointeur vers celle-ci.

Lorsque l'analyse du document inclus se termine, libxml2 poursuit avec cet ancien pointeur. La mémoire peut déjà appartenir à autre chose à ce moment-là, de sorte que des écritures ultérieures peuvent la corrompre. Un crash est l'un des résultats possibles. Dans d'autres cas, cela a également conduit à une exécution de commandes.

Où cela se manifeste

L'attaquant a besoin d'un balisage SVG crafté pour atteindre librsvg. Cela peut se produire lorsqu'une application accepte un fichier SVG, mais aussi lorsqu'une application construit un SVG à partir d'une entrée utilisateur. Le simple fait d'utiliser librsvg quelque part dans l'arbre de dépendances n'établit pas un chemin exploitable ; l'entrée doit atteindre une build affectée au moment où l'image est rendue.

Next.js

ImageResponse

La route Next.js que nous avons testée acceptait du texte au lieu d'un upload SVG. Elle plaçait ce texte à l'intérieur d'un SVG inline pour la version Node.js de ImageResponse. Un bug d'échappement distinct dans Satori permettait au texte de modifier le balisage SVG généré. Sharp/libvips transmettait ensuite ce SVG à librsvg. Vercel a suivi le chemin Next.js sous CVE-2026-94545. La version Edge de ImageResponse n'est pas affectée par ce chemin. Voici une courte reproduction Next.js.

Image Optimization

Une seconde route Next.js atteignait le même bug librsvg via l'API Image Optimization. Lorsqu'une source d'image contrôlée par l'attaquant était acceptée par l'API, une image craftée pouvait passer le rejet SVG du framework et être ensuite traitée comme SVG par Sharp/libvips. Cela exposait la corruption mémoire en amont à des requêtes non authentifiées sur Linux basé sur glibc, sans utiliser Satori ni ImageResponse.

Vercel a publié ce chemin sous GHSA-2464-fhr4-w9xw, sous le CVE-2026-96889 en amont. L'avis le classe Critique avec un score CVSS de 9.5.

Ghost

Ghost a un chemin différent. Un utilisateur membre du staff, y compris un Contributor, pouvait créer une carte bookmark pour un site qu'il contrôle. Le traitement de l'image de la carte pouvait alors exécuter des commandes sur le serveur Ghost. Ghost a publié cela sous CVE-2026-105642.

Périmètre

Au cours de cette recherche, j'ai identifié des chemins d'entrée affectés dans plusieurs produits en aval et confirmé l'exécution de commandes dans plusieurs d'entre eux, y compris les deux routes Next.js et le cas Ghost ci-dessus. La manière dont cette entrée atteint librsvg varie d'un produit à l'autre. C'est pourquoi un bug de parseur d'image en amont peut surgir dans des endroits qui ne semblent pas liés au premier abord ; le récent cas libheif en est un autre exemple. Cela ne signifie pas que tout produit utilisant librsvg est exploitable à distance.

Quoi mettre à jour

  • librsvg : 2.63.2 contient le correctif, avec des rétroportages dans 2.62.4, 2.61.5, 2.60.3, 2.57.5 et 2.56.6. Si vous utilisez une version plus ancienne fournie par un éditeur, vérifiez si elle inclut le correctif. Consultez l'avis librsvg.
  • Next.js (ImageResponse) : Les versions 16.2.0 à 16.3.5 sont affectées lorsqu'une application place des valeurs contrôlées par l'attaquant dans du contenu, des attributs ou des styles SVG. Mettez à niveau vers 16.3.6.
  • Next.js (Image Optimization) : L'avis liste >= 10.0.0 <= 15.5.27 et > 16.0.0 <= 16.4.0 comme affectées. Mettez à niveau vers 15.5.28 ou 16.4.1. Sharp 0.35.5 ou une version ultérieure contient le correctif en amont.
  • Ghost : Ghost liste les versions >= 6.56.0 et < 6.67.0 comme affectées. Mettez à niveau vers 6.67.0.
  • Satori : Si vous l'utilisez directement, 0.33.5 corrige le bug d'échappement distinct utilisé dans la route Next.js.

Si vous utilisez les binaires précompilés de Sharp, vérifiez le paquet @img/sharp-libvips-* installé par votre application. Il embarque libvips et ses dépendances, y compris librsvg. La mise à jour de la copie système de librsvg peut laisser votre application utiliser l'ancienne.

PoC et suite

Le PoC UAF inclut un générateur SVG pour plusieurs chemins d'entrée et peut être utilisé pour vérifier le use-after-free au début de la chaîne.

Le PoC RCE Next.js ImageResponse d'EQSTLab est un exemple fonctionnel de cette chaîne pour sa version épinglée de Node.js/Sharp. Il génère et envoie automatiquement la charge utile. Un exploit fonctionnel est désormais public, alors mettez à jour les dépendances affectées ou atténuez le chemin d'entrée dès que possible.

[!WARNING] Il n'existe pas de PoC RCE universel pour cette chaîne. L'exemple d'EQSTLab cible sa version épinglée ; d'autres cibles peuvent nécessiter des charges utiles différentes. Les PoC qui reposent sur le <foreignObject> SVG pour l'exécution de commandes ne démontrent pas la chaîne décrite ici.

Pour une validation initiale sur d'autres cibles, le PoC UAF est plus pratique. Je publierai également l'analyse technique dans les semaines à venir, avec les étapes allant de l'UAF à l'exécution de commandes et un post-mortem couvrant ce mois de recherche sur la chaîne.

Références

  • Problème et correctif librsvg
  • Avis RustSec librsvg
  • Mise à jour de sécurité Next.js ImageResponse et avis
  • Avis Next.js Image Optimization
  • Avis Ghost
  • Avis Satori
  • Post de reproduction Next.js
Télécharger l’outil