<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Thu, 08 Oct 2026 22:34:30 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-92946 — vm2 before 3.11.7 Remote Code Execution via require.external</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-92946</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; patriksimek vm2&lt;/p&gt;
&lt;p&gt;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&amp;#39;s own package, instantiate an unrestricted NodeVM instance, and execute arbitrary host OS commands via child_process.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; patriksimek vm2&lt;/p&gt;
&lt;p&gt;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&amp;#39;s own package, instantiate an unrestricted NodeVM instance, and execute arbitrary host OS commands via child_process.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-92946</guid>
    </item>
    <item>
      <title>GHSA-j3hm-6rg5-mchv — vm2: NodeVM `require.external` without an explicit `require.root` grants unrestricted host filesystem access and full R…</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-j3hm-6rg5-mchv</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: vm2&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`NodeVM`&amp;#39;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:&lt;/p&gt;
&lt;p&gt;- `require.root` defaults to **unrestricted** — &amp;#34;if omitted every path is allowed.&amp;#34;
- `require.context` defaults to **`&amp;#34;host&amp;#34;`** — files loaded this way run through the **real Node.js `require()`**, not inside any vm2 sandbox.&lt;/p&gt;
&lt;p&gt;Sandboxed code can therefore `require()` a relative or absolute path to vm2&amp;#39;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`.&lt;/p&gt;
&lt;p&gt;This is exploitable using **vm2&amp;#39;s own documented &amp;#34;Quick Examples&amp;#34; configuration** in `README.md`:&lt;/p&gt;
&lt;p&gt;```js
const vm = new NodeVM({
  require: {
    external: true,
    root: &amp;#39;./&amp;#39;,
  },
});
```&lt;/p&gt;
&lt;p&gt;`root: &amp;#39;./&amp;#39;` 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&amp;#39;s quick-start guide is affected by default.&lt;/p&gt;
&lt;p&gt;## Affected Versions&lt;/p&gt;
&lt;p&gt;All vm2 versions where `lib/resolver-compat.js`&amp;#39;s `makeResolverFromLegacyOptions` predates this report — confirmed present as of the current `main` (post-3.11.5, including all fixes through GHSA…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: vm2&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`NodeVM`&amp;#39;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:&lt;/p&gt;
&lt;p&gt;- `require.root` defaults to **unrestricted** — &amp;#34;if omitted every path is allowed.&amp;#34;
- `require.context` defaults to **`&amp;#34;host&amp;#34;`** — files loaded this way run through the **real Node.js `require()`**, not inside any vm2 sandbox.&lt;/p&gt;
&lt;p&gt;Sandboxed code can therefore `require()` a relative or absolute path to vm2&amp;#39;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`.&lt;/p&gt;
&lt;p&gt;This is exploitable using **vm2&amp;#39;s own documented &amp;#34;Quick Examples&amp;#34; configuration** in `README.md`:&lt;/p&gt;
&lt;p&gt;```js
const vm = new NodeVM({
  require: {
    external: true,
    root: &amp;#39;./&amp;#39;,
  },
});
```&lt;/p&gt;
&lt;p&gt;`root: &amp;#39;./&amp;#39;` 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&amp;#39;s quick-start guide is affected by default.&lt;/p&gt;
&lt;p&gt;## Affected Versions&lt;/p&gt;
&lt;p&gt;All vm2 versions where `lib/resolver-compat.js`&amp;#39;s `makeResolverFromLegacyOptions` predates this report — confirmed present as of the current `main` (post-3.11.5, including all fixes through GHSA…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-j3hm-6rg5-mchv</guid>
    </item>
  </channel>
</rss>
