<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-08T22:34:27.888284+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-92946</id>
    <title>CVE-2026-92946 — vm2 before 3.11.7 Remote Code Execution via require.external</title>
    <updated>2026-10-08T22:34:27.905295+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> patriksimek vm2</p>
<p>vm2 before 3.11.7 contains a remote code execution vulnerability when require.external is enabled without an explicit require.root that excludes node_modules. Sandboxed code can require vm2's own package, instantiate an unrestricted NodeVM instance, and execute arbitrary host OS commands via child_process.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-92946"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-j3hm-6rg5-mchv</id>
    <title>GHSA-j3hm-6rg5-mchv — vm2: NodeVM `require.external` without an explicit `require.root` grants unrestricted host filesystem access and full R…</title>
    <updated>2026-10-08T22:34:27.905377+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> npm: vm2</p>
<p>## Summary</p>
<p>`NodeVM`'s `require.external` option lets sandboxed code `require()` local files and npm packages. When `require.external` is enabled and `require.root` is **not explicitly set to a path that excludes `node_modules`**, two defaults combine to fully defeat the sandbox:</p>
<p>- `require.root` defaults to **unrestricted** — "if omitted every path is allowed."
- `require.context` defaults to **`"host"`** — files loaded this way run through the **real Node.js `require()`**, not inside any vm2 sandbox.</p>
<p>Sandboxed code can therefore `require()` a relative or absolute path to vm2's own installed package (`node_modules/vm2`), obtain the real, unwrapped `NodeVM`/`VM` classes, construct a brand-new **unrestricted** nested `NodeVM` instance, and execute arbitrary host OS commands via `child_process`.</p>
<p>This is exploitable using **vm2's own documented "Quick Examples" configuration** in `README.md`:</p>
<p>```js
const vm = new NodeVM({
  require: {
    external: true,
    root: './',
  },
});
```</p>
<p>`root: './'` reads as a safety restriction but, in any ordinary npm project layout, `./node_modules/vm2` sits inside that same directory tree — so the restriction does not exclude vm2 itself. An application built by following the README's quick-start guide is affected by default.</p>
<p>## Affected Versions</p>
<p>All vm2 versions where `lib/resolver-compat.js`'s `makeResolverFromLegacyOptions` predates this report — confirmed present as of the current `main` (post-3.11.5, including all fixes through GHSA…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-j3hm-6rg5-mchv"/>
  </entry>
</feed>
