Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2022-36067 PoC — vm2 vulnerable to Sandbox Escape before v3.9.11

Source
Associated Vulnerability
Title:vm2 vulnerable to Sandbox Escape before v3.9.11 (CVE-2022-36067)
Description:vm2 is a sandbox that can run untrusted code with whitelisted Node's built-in modules. In versions prior to version 3.9.11, a threat actor can bypass the sandbox protections to gain remote code execution rights on the host running the sandbox. This vulnerability was patched in the release of version 3.9.11 of vm2. There are no known workarounds.
Readme
# CVE-2022-36067-vm2-POC-webapp
# Steps to reproduce

## 1. maybe install vm2 globally first (npm -install vm2@3.9.3 -g)
## 2. run: node index.js
## 3. visit http://localhost:5000/poc
## 4. Upload poc file (such as poc2.js) or code and observe RCE
File Snapshot

[4.0K] /data/pocs/cb7310b73cfa38494c7e7ec46d0d52b2dae4a7c0 ├── [3.8K] index.js ├── [4.0K] node_modules │   ├── [4.0K] asap │   │   ├── [1.9K] asap.js │   │   ├── [2.1K] browser-asap.js │   │   ├── [9.4K] browser-raw.js │   │   ├── [2.8K] CHANGES.md │   │   ├── [1.1K] LICENSE.md │   │   ├── [1.9K] package.json │   │   ├── [4.0K] raw.js │   │   └── [9.9K] README.md │   ├── [4.0K] dezalgo │   │   ├── [ 368] dezalgo.js │   │   ├── [ 765] LICENSE │   │   ├── [2.4K] package.json │   │   ├── [ 651] README.md │   │   └── [4.0K] test │   │   └── [ 566] basic.js │   ├── [4.0K] formidable │   │   ├── [1.1K] LICENSE │   │   ├── [2.4K] package.json │   │   ├── [ 35K] README.md │   │   └── [4.0K] src │   │   ├── [1.0K] FormidableError.js │   │   ├── [ 16K] Formidable.js │   │   ├── [ 888] index.js │   │   ├── [4.0K] parsers │   │   │   ├── [ 424] Dummy.js │   │   │   ├── [ 445] index.js │   │   │   ├── [ 760] JSON.js │   │   │   ├── [9.3K] Multipart.js │   │   │   ├── [ 232] OctetStream.js │   │   │   ├── [ 981] Querystring.js │   │   │   └── [3.2K] StreamingQuerystring.js │   │   ├── [1.9K] PersistentFile.js │   │   ├── [4.0K] plugins │   │   │   ├── [ 262] index.js │   │   │   ├── [1.1K] json.js │   │   │   ├── [5.8K] multipart.js │   │   │   ├── [2.1K] octetstream.js │   │   │   └── [1.1K] querystring.js │   │   └── [1.7K] VolatileFile.js │   ├── [4.0K] hexoid │   │   ├── [4.0K] dist │   │   │   ├── [ 368] index.js │   │   │   ├── [ 399] index.min.js │   │   │   └── [ 366] index.mjs │   │   ├── [ 54] hexoid.d.ts │   │   ├── [1.1K] license │   │   ├── [ 834] package.json │   │   └── [4.5K] readme.md │   ├── [4.0K] once │   │   ├── [ 765] LICENSE │   │   ├── [ 935] once.js │   │   ├── [ 574] package.json │   │   └── [1.7K] README.md │   ├── [4.0K] qs │   │   ├── [ 19K] CHANGELOG.md │   │   ├── [4.0K] dist │   │   │   └── [ 25K] qs.js │   │   ├── [4.0K] lib │   │   │   ├── [ 521] formats.js │   │   │   ├── [ 211] index.js │   │   │   ├── [9.2K] parse.js │   │   │   ├── [8.1K] stringify.js │   │   │   └── [6.2K] utils.js │   │   ├── [1.6K] LICENSE.md │   │   ├── [1.9K] package.json │   │   ├── [ 19K] README.md │   │   └── [4.0K] test │   │   ├── [ 81] index.js │   │   ├── [ 32K] parse.js │   │   ├── [ 26K] stringify.js │   │   └── [5.0K] utils.js │   ├── [4.0K] @types │   │   └── [4.0K] node │   │   ├── [4.0K] assert │   │   │   └── [ 201] strict.d.ts │   │   ├── [ 38K] assert.d.ts │   │   ├── [ 20K] async_hooks.d.ts │   │   ├── [101K] buffer.d.ts │   │   ├── [ 65K] child_process.d.ts │   │   ├── [ 20K] cluster.d.ts │   │   ├── [ 18K] console.d.ts │   │   ├── [ 613] constants.d.ts │   │   ├── [178K] crypto.d.ts │   │   ├── [ 26K] dgram.d.ts │   │   ├── [5.9K] diagnostics_channel.d.ts │   │   ├── [4.0K] dns │   │   │   └── [ 15K] promises.d.ts │   │   ├── [ 29K] dns.d.ts │   │   ├── [7.6K] domain.d.ts │   │   ├── [5.4K] dom-events.d.ts │   │   ├── [ 31K] events.d.ts │   │   ├── [4.0K] fs │   │   │   └── [ 50K] promises.d.ts │   │   ├── [172K] fs.d.ts │   │   ├── [9.2K] globals.d.ts │   │   ├── [ 39] globals.global.d.ts │   │   ├── [110K] http2.d.ts │   │   ├── [ 69K] http.d.ts │   │   ├── [ 24K] https.d.ts │   │   ├── [6.4K] index.d.ts │   │   ├── [122K] inspector.d.ts │   │   ├── [1.1K] LICENSE │   │   ├── [4.0K] module.d.ts │   │   ├── [ 39K] net.d.ts │   │   ├── [ 17K] os.d.ts │   │   ├── [6.7K] package.json │   │   ├── [7.6K] path.d.ts │   │   ├── [ 23K] perf_hooks.d.ts │   │   ├── [ 71K] process.d.ts │   │   ├── [5.4K] punycode.d.ts │   │   ├── [6.3K] querystring.d.ts │   │   ├── [4.0K] readline │   │   │   └── [6.1K] promises.d.ts │   │   ├── [ 26K] readline.d.ts │   │   ├── [2.4K] README.md │   │   ├── [ 19K] repl.d.ts │   │   ├── [4.0K] stream │   │   │   ├── [ 727] consumers.d.ts │   │   │   ├── [2.3K] promises.d.ts │   │   │   └── [ 13K] web.d.ts │   │   ├── [ 66K] stream.d.ts │   │   ├── [2.8K] string_decoder.d.ts │   │   ├── [ 12K] test.d.ts │   │   ├── [4.0K] timers │   │   │   └── [1.9K] promises.d.ts │   │   ├── [4.5K] timers.d.ts │   │   ├── [ 50K] tls.d.ts │   │   ├── [7.0K] trace_events.d.ts │   │   ├── [4.0K] ts4.8 │   │   │   ├── [4.0K] assert │   │   │   │   └── [ 201] strict.d.ts │   │   │   ├── [ 38K] assert.d.ts │   │   │   ├── [ 20K] async_hooks.d.ts │   │   │   ├── [101K] buffer.d.ts │   │   │   ├── [ 65K] child_process.d.ts │   │   │   ├── [ 20K] cluster.d.ts │   │   │   ├── [ 18K] console.d.ts │   │   │   ├── [ 613] constants.d.ts │   │   │   ├── [178K] crypto.d.ts │   │   │   ├── [ 26K] dgram.d.ts │   │   │   ├── [5.9K] diagnostics_channel.d.ts │   │   │   ├── [4.0K] dns │   │   │   │   └── [ 15K] promises.d.ts │   │   │   ├── [ 29K] dns.d.ts │   │   │   ├── [7.6K] domain.d.ts │   │   │   ├── [5.4K] dom-events.d.ts │   │   │   ├── [ 31K] events.d.ts │   │   │   ├── [4.0K] fs │   │   │   │   └── [ 50K] promises.d.ts │   │   │   ├── [172K] fs.d.ts │   │   │   ├── [9.1K] globals.d.ts │   │   │   ├── [ 39] globals.global.d.ts │   │   │   ├── [110K] http2.d.ts │   │   │   ├── [ 69K] http.d.ts │   │   │   ├── [ 24K] https.d.ts │   │   │   ├── [3.7K] index.d.ts │   │   │   ├── [122K] inspector.d.ts │   │   │   ├── [4.0K] module.d.ts │   │   │   ├── [ 39K] net.d.ts │   │   │   ├── [ 17K] os.d.ts │   │   │   ├── [7.6K] path.d.ts │   │   │   ├── [ 23K] perf_hooks.d.ts │   │   │   ├── [ 71K] process.d.ts │   │   │   ├── [5.4K] punycode.d.ts │   │   │   ├── [6.3K] querystring.d.ts │   │   │   ├── [4.0K] readline │   │   │   │   └── [6.1K] promises.d.ts │   │   │   ├── [ 26K] readline.d.ts │   │   │   ├── [ 19K] repl.d.ts │   │   │   ├── [4.0K] stream │   │   │   │   ├── [ 727] consumers.d.ts │   │   │   │   ├── [2.3K] promises.d.ts │   │   │   │   └── [ 13K] web.d.ts │   │   │   ├── [ 66K] stream.d.ts │   │   │   ├── [2.8K] string_decoder.d.ts │   │   │   ├── [ 12K] test.d.ts │   │   │   ├── [4.0K] timers │   │   │   │   └── [1.9K] promises.d.ts │   │   │   ├── [4.5K] timers.d.ts │   │   │   ├── [ 50K] tls.d.ts │   │   │   ├── [7.0K] trace_events.d.ts │   │   │   ├── [9.6K] tty.d.ts │   │   │   ├── [ 39K] url.d.ts │   │   │   ├── [ 72K] util.d.ts │   │   │   ├── [ 16K] v8.d.ts │   │   │   ├── [ 20K] vm.d.ts │   │   │   ├── [6.9K] wasi.d.ts │   │   │   ├── [ 33K] worker_threads.d.ts │   │   │   └── [ 19K] zlib.d.ts │   │   ├── [9.6K] tty.d.ts │   │   ├── [ 39K] url.d.ts │   │   ├── [ 72K] util.d.ts │   │   ├── [ 16K] v8.d.ts │   │   ├── [ 20K] vm.d.ts │   │   ├── [6.9K] wasi.d.ts │   │   ├── [ 33K] worker_threads.d.ts │   │   └── [ 19K] zlib.d.ts │   ├── [4.0K] vm2 │   │   ├── [4.0K] bin │   │   │   └── [ 59] vm2 │   │   ├── [3.6K] CHANGELOG.md │   │   ├── [7.3K] index.d.ts │   │   ├── [ 157] index.js │   │   ├── [4.0K] lib │   │   │   ├── [ 718] cli.js │   │   │   ├── [ 34K] contextify.js │   │   │   ├── [2.7K] fixasync.js │   │   │   ├── [ 445] helpers.js │   │   │   ├── [ 37K] main.js │   │   │   └── [ 17K] sandbox.js │   │   ├── [1.1K] LICENSE.md │   │   ├── [ 746] package.json │   │   └── [ 14K] README.md │   └── [4.0K] wrappy │   ├── [ 765] LICENSE │   ├── [ 606] package.json │   ├── [ 685] README.md │   └── [ 905] wrappy.js ├── [ 329] package.json ├── [5.6K] package-lock.json ├── [ 704] poc2.js ├── [ 730] poc.js ├── [ 248] README.md └── [ 370] rshell.js 34 directories, 193 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →