Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
VectorFreed — Documenta la catena RCE use-after-free di VectorFreed su librsvg (CVE-2026-96889) con un PoC di generazione SVG e indicazioni di remediation per librsvg, Next.js e Satori. | Kitploit
Strumenti/GitHubGitHub/rafabd1/vectorfreed
Memory ForensicsAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebRaccolta InformazioniPaper e RicercaBinary Exploitation
GitHubrafabd1/vectorfreed

VectorFreed

Documenta la catena RCE use-after-free di VectorFreed su librsvg (CVE-2026-96889) con un PoC di generazione SVG e indicazioni di remediation per librsvg, Next.js e Satori.

Vedi Repository
2111194 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

VectorFreed

Abstract

Questo documento introduce "VectorFreed", una catena di vulnerabilità che inizia con un use-after-free che io (@rafabd1) ho trovato in librsvg (CVE-2026-96889). In una build Node.js/Sharp/libvips, questo bug ha portato all'esecuzione di comandi. Copre il bug, i percorsi finora confermati nelle applicazioni e le correzioni attualmente disponibili.

Dettagli

Un SVG può includere un altro SVG tramite XInclude. Nel percorso vulnerabile, librsvg inizia ad analizzare un documento incluso mentre libxml2 sta ancora espandendo un'entità in quello esterno. Se l'SVG incluso dichiara un'entità con lo stesso nome, librsvg sostituisce e libera la prima entità. libxml2 ne conserva ancora un puntatore.

Quando l'analisi del documento incluso termina, libxml2 prosegue con quel vecchio puntatore. A quel punto la memoria potrebbe già appartenere a qualcos'altro, quindi scritture successive possono corromperla. Un crash è uno dei risultati. In altri casi, questo ha portato anche all'esecuzione di comandi.

Dove si manifesta

L'attaccante ha bisogno di markup SVG appositamente costruito per raggiungere librsvg. Ciò può accadere quando un'applicazione accetta un file SVG, ma può anche accadere quando l'applicazione costruisce un SVG dall'input dell'utente. Il semplice utilizzo di librsvg da qualche parte nell'albero delle dipendenze non stabilisce un percorso sfruttabile; l'input deve raggiungere una build interessata quando l'immagine viene renderizzata.

Next.js

ImageResponse

La route di Next.js che abbiamo testato accettava testo invece di un upload SVG. Inseriva quel testo all'interno di un SVG inline per la versione Node.js di ImageResponse. Un bug di escaping separato in Satori permetteva al testo di modificare il markup SVG generato. Sharp/libvips passava poi quell'SVG a librsvg. Vercel ha tracciato il percorso Next.js come CVE-2026-94545. La versione Edge di ImageResponse non è interessata da questo percorso. Ecco una breve riproduzione per Next.js.

Image Optimization

Una seconda route di Next.js raggiungeva lo stesso bug di librsvg attraverso l'API Image Optimization. Quando una sorgente immagine controllata dall'attaccante veniva accettata dall'API, un'immagine appositamente costruita poteva superare il rifiuto degli SVG del framework e successivamente essere gestita come SVG da Sharp/libvips. Questo esponeva la corruzione di memoria upstream a richieste non autenticate su Linux basato su glibc senza utilizzare Satori o ImageResponse.

Vercel ha pubblicato questo percorso come GHSA-2464-fhr4-w9xw, sotto il CVE upstream CVE-2026-96889. L'advisory lo classifica come Critical con un punteggio CVSS di 9.5.

Ghost

Ghost ha un percorso diverso. Un utente dello staff, incluso un Contributor, poteva creare una bookmark card per un sito che controllava. L'elaborazione dell'immagine della card poteva quindi eseguire comandi sul server Ghost. Ghost ha pubblicato questo come CVE-2026-105642.

Ambito

Durante questa ricerca, ho identificato percorsi di input interessati in molteplici prodotti downstream e ho confermato l'esecuzione di comandi in diversi di essi, incluse entrambe le route di Next.js e il caso Ghost sopra. Il modo in cui quell'input raggiunge librsvg varia da prodotto a prodotto. Ecco perché un bug upstream in un parser di immagini può saltare fuori in luoghi che a prima vista non sembrano correlati; il recente caso libheif è un altro esempio. Non significa che ogni prodotto che utilizza librsvg sia sfruttabile da remoto.

Cosa aggiornare

  • librsvg: la versione 2.63.2 contiene la correzione, con backport nelle versioni 2.62.4, 2.61.5, 2.60.3, 2.57.5 e 2.56.6. Se utilizzi una build precedente di un fornitore, verifica se include la correzione. Consulta l'avviso di librsvg.
  • Next.js (ImageResponse): le versioni dalla 16.2.0 alla 16.3.5 sono interessate quando un'applicazione inserisce valori controllati dall'attaccante nel contenuto, negli attributi o negli stili SVG. Aggiorna alla 16.3.6.
  • Next.js (Image Optimization): l'avviso elenca come interessate le versioni >= 10.0.0 <= 15.5.27 e > 16.0.0 <= 16.4.0. Aggiorna alla 15.5.28 o alla 16.4.1. Sharp 0.35.5 o successivo contiene la correzione upstream.
  • Ghost: Ghost elenca come interessate le versioni >= 6.56.0 e < 6.67.0. Aggiorna alla 6.67.0.
  • Satori: se lo utilizzi direttamente, la versione 0.33.5 corregge il bug di escaping separato utilizzato nella route di Next.js.

Se utilizzi i binari precompilati di Sharp, controlla il pacchetto @img/sharp-libvips-* installato dalla tua applicazione. Esso include libvips e le sue dipendenze, tra cui librsvg. L'aggiornamento della copia di sistema di librsvg potrebbe lasciare l'applicazione con la versione precedente.

PoC e prospettive future

Il PoC UAF include un generatore SVG per diversi percorsi di input e può essere utilizzato per verificare l'use-after-free all'inizio della catena.

Il PoC RCE di EQSTLab per Next.js ImageResponse è un esempio funzionante di tale catena per la sua build Node.js/Sharp fissata. Genera e invia automaticamente il payload. Un exploit funzionante è ora pubblico, quindi aggiorna al più presto le dipendenze interessate o mitiga il percorso di input.

[!WARNING] Non esiste un PoC RCE universale per questa catena. L'esempio di EQSTLab è mirato alla sua build fissata; altri target potrebbero richiedere payload diversi. I PoC che si basano su SVG <foreignObject> per l'esecuzione di comandi non dimostrano la catena qui descritta.

Per una validazione iniziale su altri target, il PoC UAF è più pratico.

Riferimenti

Avvisi e fonti primarie

  • librsvg issue and fix
  • librsvg RustSec advisory
  • Next.js ImageResponse security update e avviso
  • Next.js Image Optimization advisory
  • Ghost advisory
  • Satori advisory
  • Next.js reproduction post

Copertura e analisi

Scarica lo strumento