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
vm2 — Isolierte JavaScript-Sandbox für Node.js, die nicht vertrauenswürdigen Code mit eingeschränktem Zugriff auf eingebaute Module und Host-Ressourcen über Proxy-basierte Abfangmechanismen ausführt. | Kitploit
Tools/GitHubGitHub/patriksimek/vm2
Dynamische Analyse (Sandboxing)Code-AnalyseSicherheitsvirtualisierungDienstprogramme & Frameworks
GitHubpatriksimek/vm2

vm2

Isolierte JavaScript-Sandbox für Node.js, die nicht vertrauenswürdigen Code mit eingeschränktem Zugriff auf eingebaute Module und Host-Ressourcen über Proxy-basierte Abfangmechanismen ausführt.

Repository anzeigen
4.1k32650vor 23 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

vm2 [![NPM Version][npm-image]][npm-url] [![NPM Downloads][downloads-image]][downloads-url] [![License][license-image]][license-url] Node.js CI [![Known Vulnerabilities][snyk-image]][snyk-url]

vm2 ist eine Sandbox, die nicht vertrauenswürdigen Code mit auf die Whitelist gesetzten eingebauten Node-Modulen ausführen kann.

Installation```sh

npm install vm2

## Schnellbeispiele```js
import { VM } from 'vm2';

const vm = new VM();
vm.run(`process.exit()`); // TypeError: process.exit is not a function
## Installation

To install `nuclei`, you need [Go](https://golang.org/dl/) installed on your system. Then you can install it with the following command:

```bash
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest

Alternatively, you can download the pre-built binaries from the Releases page.

Docker

You can also run nuclei using Docker:

docker pull projectdiscovery/nuclei:latest
docker run -it projectdiscovery/nuclei:latest

Homebrew

If you are on macOS or Linux, you can install nuclei via Homebrew:

brew install nuclei

Usage

nuclei -h

This will display help for the tool. Here are all the switches it supports.

Usage:
  nuclei [flags]

Flags:
INPUT:
   -u, -target string[]          target URLs/hosts to scan
   -l, -list string              path to file containing a list of target URLs/hosts to scan (one per line)
   -resume string                resume scan using resume.cfg (clustering will be disabled)
   -sa, -scan-all-ips            scan all the IP's associated with DNS record
   -health-check                 run diagnostic check up
``````js
import { NodeVM } from 'vm2';

const vm = new NodeVM({
	require: {
		external: true,
		root: './',
	},
});

vm.run(
	`
    var request = require('request');
    request('http://www.google.com', function (error, response, body) {
        console.error(error);
        if (!error && response.statusCode == 200) {
            console.log(body); // Show the HTML for the Google homepage.
        }
    });
`,
	'vm.js',
);

Wichtiger Sicherheitshinweis

Bevor Sie vm2 verwenden, sollten Sie verstehen, wie es funktioniert und welche Einschränkungen es hat.

vm2 versucht, nicht vertrauenswürdigen JavaScript-Code im selben Node.js-Prozess wie Ihre Anwendung zu sandboxen. Dies geschieht über ein komplexes Netzwerk von Proxies, die jede Interaktion zwischen der Sandbox und der Host-Umgebung abfangen und vermitteln.

Die grundlegende Herausforderung

JavaScript ist eine außergewöhnlich dynamische Sprache. Objekte können über Prototyp-Ketten erreicht werden, Konstruktoren können über Fehlerobjekte erreicht werden, Symbole bieten Protokoll-Hooks, und asynchrone Ausführung erzeugt Timing-Fenster. Die schiere Anzahl an Möglichkeiten, in JavaScript von einem Objekt zu einem anderen zu gelangen, macht es äußerst schwierig, eine luftdichte In-Process-Sandbox zu bauen.

Wir sind ehrlich bezüglich dieser Realität: Trotz unserer besten Bemühungen entdecken Forscher und Sicherheitsexperten kontinuierlich neue Wege, die vm2-Sandbox zu umgehen. Wir patchen diese Schwachstellen aktiv, sobald sie gemeldet werden, aber die Natur des Katz-und-Maus-Spiels bei In-Process-Sandboxing bedeutet:

  1. Neue Umgehungen werden wahrscheinlich in Zukunft entdeckt. Prüfen Sie unsere Sicherheitshinweise auf bekannte Schwachstellen.
  2. Sie müssen vm2 aktualisiert halten, um von den neuesten Sicherheitsfixes zu profitieren. Abonnieren Sie Sicherheitshinweise und aktualisieren Sie umgehend.
  3. vm2 sollte nicht Ihre einzige Verteidigungslinie sein. Defense in Depth ist unerlässlich, wenn Sie nicht vertrauenswürdigen Code ausführen.

Robustere Alternativen

Wenn Sie stärkere Isolationsgarantien benötigen, ziehen Sie diese Alternativen in Betracht, die echte Prozess- oder Hardware-Level-Isolation bieten:

LösungAnsatzLeistungKompromisse
isolated-vmSeparate V8-Isolate (verschiedene V8-Heaps)SchnellIm Wartungsmodus; erfordert manuelle V8-Updates
Separater Prozess / Workerchild_process oder Worker-Threads mit eingeschränkten BerechtigungenMittelHöherer IPC-Overhead; Daten müssen serialisiert werden
Container / VMsDocker, gVisor, FirecrackerLangsamStart-Overhead; ressourcenintensiv
Verwaltete DiensteCloud-basierte Code-Ausführung (z. B. AWS Lambda, Cloudflare Workers)VariabelNetzwerklatenz; externe Abhängigkeit

Wann vm2 möglicherweise weiterhin geeignet ist

vm2 kann geeignet sein, wenn:

  • Sie eine enge Integration mit Host-Objekten und schnelle synchrone Kommunikation benötigen
  • Der nicht vertrauenswürdige Code aus einer relativ vertrauenswürdigen Quelle stammt (z. B. interne Tools, Plugin-Systeme mit geprüften Autoren)
  • Sie vm2 mit anderen Sicherheitsebenen kombinieren (Netzwerk-Isolation, Dateisystem-Einschränkungen, Ressourcenlimits)
  • Sie das Risiko akzeptieren und aktiv auf Sicherheitsupdates achten

Wenn Sie Code aus vollständig nicht vertrauenswürdigen Quellen ausführen (z. B. beliebige Benutzereinsendungen), empfehlen wir dringend eine Lösung mit stärkeren Isolationsgarantien.

Laufzeitumgebungen

LaufzeitumgebungStatus
Node.jsUnterstützt. Die Sandbox ist eine Sicherheitsgrenze.
BunExperimentell. Teilweise funktionale Kompatibilität — keine Sicherheitsgrenze.

Für Bun gelten zwei getrennte Einschränkungen, und keine impliziert die andere.

Es ist keine Sicherheitsgrenze. Das Bedrohungsmodell von vm2, der Angriffskatalog in docs/ATTACKS.md und jeder Regressionstest in test/ghsa/ leiten sich aus V8-Interna ab. JavaScriptCore, das Bun verwendet, hat seine eigenen Äquivalente, und keines wurde gegen die vm2-Brücke geprüft. Das Bestehen der Testsuite unter Bun zeigt Kompatibilität, nicht dass die Sandbox dort hält. Verwenden Sie vm2 unter Bun nicht, um nicht vertrauenswürdigen Code zu isolieren.

Die Kompatibilität ist teilweise, nicht gleichwertig. Ein grüner Bun-Lauf deckt nur die Tests ab, die dort tatsächlich ausgeführt werden. test/bun-skips.js listet auf, was ausgeschlossen ist und warum, und die bekannten Verhaltenslücken umfassen:

  • Buffer.from(arrayLike) gibt einen Puffer mit der Länge null zurück
  • VMScript-Metadaten für filename / lineOffset / columnOffset sind nicht beobachtbar, da JSC-CallSite-Objekte keine Methoden tragen
  • Object.freeze auf einem eingefrorenen Host-Objekt mit einem nicht konfigurierbaren Accessor wirft einen Proxy-Invariant-TypeError, wo V8 dies nicht tut
  • einige Buffer-Operationen über die Sandbox-Grenze hinweg sind drastisch langsamer — eine 64-MB-allocUnsafe dauert über 400 Sekunden gegenüber 1,7 unter Node, langsam genug, um wie ein Hänger zu wirken

Behandeln Sie die Bun-Unterstützung als Best-Effort-Kompatibilität für vertrauenswürdigen Code und prüfen Sie die Skip-Liste, bevor Sie sich auf ein bestimmtes Verhalten verlassen.

Funktionen

Tool herunterladen