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
Tools/GitHubGitHub/skynet-f-nvidia/cve-2025-31133
Privilege EscalationSchwachstellenanalyseExploitationPenetrationstestsRed TeamingContainer-Ausbruch
GitHubskynet-f-nvidia/cve-2025-31133

CVE-2025-31133

CVE-2025-31133 PoC

Repository anzeigen
21vor 9 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-2025-31133 PoC-Exploit

Dieses Dokument erläutert die Funktionsweise des bereitgestellten Proof-of-Concept-Skripts (PoC) für die runc-Schwachstelle CVE-2025-31133.

Zusammenfassung

  • Schwachstelle: CVE-2025-31133 – Eine Symbolic-Link-Race-Condition in der maskedPaths-Behandlung von runc.
  • Auswirkung: Ein bösartiger Container kann den Schutz von maskedPaths umgehen und so in sensible Dateien auf dem Hostsystem schreiben. Dies stellt einen Container-Escape dar.
  • PoC-Ziel: Die Schwachstelle sicher demonstrieren, indem die Datei /proc/sys/kernel/core_pattern des Hosts aus einem Container heraus modifiziert wird.
  • Sicherheit: Dieser PoC ist nicht destruktiv. Er schreibt lediglich die Zeichenkette "pwned" in die Zieldatei und führt keinen beliebigen Code auf dem Host aus. Außerdem enthält er Anweisungen zum Wiederherstellen des ursprünglichen Werts.

Die Schwachstelle im Detail

Das maskedPaths-Feature in der OCI-Spezifikation eines Containers (config.json) ist ein Sicherheitsmechanismus, der verhindern soll, dass Container auf sensible Systemdateien zugreifen. Es funktioniert, indem /dev/null (eine leere Gerätedatei) über diese sensiblen Pfade im Container bind-gemountet wird, wodurch sie praktisch unlesbar und unbeschreibbar werden.

Die Schwachstelle (CVE-2025-31133) ist eine Time-of-Check to Time-of-Use (TOCTOU) Race-Condition. Der Exploit funktioniert wie folgt:

  1. Der Fehler: Wenn runc den Container einrichtet, bereitet es vor, die Datei dev/null aus dem Rootfs des Containers als Quelle für den Bind-Mount zu verwenden, der den sensiblen Pfad (z. B. /proc/sys/kernel/core_pattern) maskieren soll.
  2. Die Race-Condition: Es gibt ein kleines Zeitfenster zwischen dem Moment, in dem runc den Pfad zu rootfs/dev/null auflöst, und dem Moment, in dem es die Mount-Operation tatsächlich durchführt.
  3. Der Exploit: Ein Angreifer kann ein Skript auf dem Host erstellen, das die Datei rootfs/dev/null kontinuierlich und sehr schnell zwischen einem legitimen Geräteknoten und einem symbolischen Link, der auf die Zieldatei auf dem Host zeigt (/proc/sys/kernel/core_pattern), hin- und herwechselt.
  4. Die Race gewinnen: Wenn das Timing perfekt ist, führt runc seine Mount-Operation genau in dem Moment aus, in dem rootfs/dev/null ein Symlink ist. Dadurch folgt der Kernel dem Symlink, und die beabsichtigte Maskierungsoperation für /proc/sys/kernel/core_pattern schlägt fehl.

Dieser PoC nutzt diese Technik, um in /proc/sys/kernel/core_pattern zu schreiben, ein häufiges Ziel solcher Exploits, da das Ändern dieser Datei bei einem Prozessabsturz zur Ausführung beliebigen Codes auf dem Host führen kann. Dieser PoC schreibt jedoch nur eine harmlose Zeichenkette, um nachzuweisen, dass die Schreib-Primitive existiert.


So funktioniert das PoC-Skript

Das Skript poc.sh automatisiert den gesamten oben beschriebenen Prozess.

  1. Einrichtung & Bereinigung:

    • Es definiert Variablen für die runc-Binärdatei, den Containernamen und den Rootfs-Pfad.
    • Es enthält eine robuste cleanup-Funktion, die sicherstellt, dass alle zuvor vom Skript erstellten Container oder Dateien entfernt werden. Diese Funktion wird automatisch bei Beendigung, Unterbrechung oder Terminierung aufgerufen.
  2. Vorbereitung:

    • Es speichert den ursprünglichen Inhalt von /proc/sys/kernel/core_pattern des Hosts in einer temporären Datei. Diese wird später verwendet, um zu überprüfen, ob der Exploit erfolgreich war, und um dem Benutzer bei der Wiederherstellung des Systems zu helfen.
    • Es erstellt ein minimales Container-Rootfs (./rootfs) und eine config.json-Datei.
    • Die config.json listet /proc/sys/kernel/core_pattern explizit unter maskedPaths auf — genau das Feature, das der Exploit umgehen soll.
  3. Die Race-Funktion (symlink_race)

    • Dies ist der Kern des Exploits. Sie ist dafür ausgelegt, im Hintergrund zu laufen.
    • Sie tritt in eine enge Schleife ein, die 20 Sekunden dauert.

Verwendung

Voraussetzungen:

  • Eine verwundbare Version von runc.
  • busybox-static installiert (für die Shell des Containers).
  • Root-Rechte (sudo), um runc auszuführen und /proc zu modifizieren.

Schritte:

  1. Speichern Sie das Skript als poc.sh.
  2. Machen Sie es ausführbar: chmod +x poc.sh.
  3. Führen Sie es mit sudo aus: sudo ./poc.sh.

Interpretieren der Ausgabe

  • Erfolg: Wenn Sie die Meldung [+] EXPLOIT SUCCEEDED! sehen, bedeutet dies, dass die Race-Condition gewonnen wurde. Die Datei /proc/sys/kernel/core_pattern des Hosts wurde erfolgreich aus dem Container heraus modifiziert, was die Schwachstelle bestätigt.
  • Fehlschlag: Wenn Sie [-] Exploit did not succeed. sehen, wurde die Race bei diesem Versuch nicht gewonnen. Race-Conditions sind probabilistisch und hängen stark vom System-Timing und der Systemlast ab. Versuchen Sie, das Skript noch einige Male auszuführen.

Wiederherstellen Ihres Systems (nach einer erfolgreichen Ausführung)

Der PoC modifiziert eine Systemdatei. Um sie in ihren ursprünglichen Zustand zu versetzen, führen Sie den vom Skript vorgeschlagenen Befehl aus:

root@kitploit:~
# The 'ORIGINAL_PATTERN' will be the actual value from your system
echo 'original_core_pattern_value' | sudo tee /proc/sys/kernel/core_pattern
Tool herunterladen
  • Container-Escape: Da die Maskierung fehlgeschlagen ist, ist der Pfad im Container nicht mehr geschützt. Ein Prozess, der im Container läuft, kann nun in /proc/sys/kernel/core_pattern schreiben, wodurch die Datei des Hosts direkt verändert wird – ein Container-Escape ist erreicht.
  • Innerhalb der Schleife wiederholt sie:
    1. Löscht rootfs/dev/null.
    2. Erstellt einen symbolischen Link von rootfs/dev/null auf die Zieldatei des Hosts (/proc/sys/kernel/core_pattern).
    3. Pausiert für einen winzigen Bruchteil einer Sekunde (500 Mikrosekunden).
    4. Löscht den Symlink.
    5. Erstellt rootfs/dev/null als ordentliches Zeichengerät (mknod) neu.
    6. Pausiert für eine etwas längere Zeit (5000 Mikrosekunden).
  • Dieses schnelle Wechseln erzeugt das Zeitfenster, in dem die Race-Condition auftreten kann.
  • Ausführung:

    • Die Funktion symlink_race wird als Hintergrundprozess gestartet.
    • Unmittelbar danach führt das Skript runc run ... aus, um den Container zu erstellen und zu starten. In diesem Moment versucht runc, die maskedPaths anzuwenden.
    • Sobald der Container läuft, verwendet das Skript runc exec, um einen Befehl im Inneren des Containers auszuführen: echo 'pwned' > /proc/sys/kernel/core_pattern.
  • Verifizierung:

    • Das Skript wartet, bis der Hintergrund-Race-Prozess beendet ist, und räumt den Container auf.
    • Anschließend liest es den aktuellen Inhalt von /proc/sys/kernel/core_pattern des Hosts.
    • Es vergleicht den aktuellen Inhalt mit der erwarteten Zeichenkette "pwned" und dem ursprünglichen Wert.
    • Basierend auf dem Ergebnis gibt es eine klare Meldung [+] EXPLOIT SUCCEEDED! oder [-] Exploit did not succeed. aus.