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.

··Feed·Contatto·Privacy·© 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
8214 ore faNon ancora revisionato

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. Il documento copre il bug, i percorsi confermati finora nelle applicazioni e le correzioni attualmente disponibili.

Dettagli

Un SVG può includerne un altro 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 a partire 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 nel momento in cui l'immagine viene renderizzata.

La route 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.

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, incluso il caso Next.js descritto sopra. Il modo in cui quell'input raggiunge librsvg varia da prodotto a prodotto. Ecco perché un bug in un parser di immagini upstream 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 usa librsvg sia sfruttabile da remoto.

Cosa aggiornare

  • librsvg: la 2.63.2 contiene la correzione, con un backport nella 2.62.4. Se usi una build di un vendor più vecchia, verifica se include la correzione. Vedi l'advisory di librsvg.
  • Next.js: le versioni dalla 16.2.0 alla 16.3.5 sono interessate quando un'applicazione inserisce valori controllati dall'attaccante in contenuti, attributi o stili SVG sul percorso Node.js di ImageResponse. Aggiorna alla 16.3.6.
  • Satori: se lo usi direttamente, la 0.33.5 corregge il bug di escaping separato usato nella route Next.js.

Se usi i binari precompilati di Sharp, controlla il pacchetto @img/sharp-libvips-* che la tua app ha installato. Esso include libvips e le sue dipendenze, tra cui librsvg. Aggiornare la copia di sistema di librsvg potrebbe lasciare la tua app con quella vecchia.

PoC e cosa viene dopo

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

Finora non ho trovato un exploit pubblico che porti questa catena dall'SVG costruito fino all'esecuzione di comandi. Tuttavia, il bug e le patch sono già pubblici e con gli attuali strumenti di AI è abbastanza facile risalire da essi alla catena completa. Considerato ciò, tratta l'exploit come se fosse già pubblico e aggiorna le dipendenze interessate o mitiga il percorso di input il prima possibile.

[!WARNING] Non esiste una PoC RCE universale per questa catena; il payload deve essere adattato per ciascun target. La maggior parte delle "PoC" pubbliche che ho visto finora non riproducono la catena RCE effettiva. Alcune si basano su SVG <foreignObject> per l'esecuzione dichiarata, che non è il percorso di exploit descritto qui.

Per una validazione iniziale, la PoC UAF è più pratica. Ho in programma di pubblicare una PoC RCE per il caso Next.js (CVE-2026-94545) in un repository separato. Pubblicherò anche il write-up tecnico nelle prossime settimane, con i passaggi dall'UAF all'esecuzione di comandi e un post-mortem che copre quest'ultimo mese di ricerca sulla catena.

Riferimenti

  • issue e fix di librsvg
  • advisory RustSec di librsvg
  • aggiornamento di sicurezza di Next.js e advisory di Next.js
  • advisory di Satori
  • post di riproduzione per Next.js
Scarica lo strumento