<?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>Sun, 04 Oct 2026 06:11:38 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-92940 — vm2 3.11.3 through 3.11.6 HTTPS Credential Exposure via globalAgent</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-92940</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; patriksimek vm2&lt;/p&gt;
&lt;p&gt;vm2 versions 3.11.3 through 3.11.6 expose the host process&amp;#39;s real https.globalAgent to sandboxed code when a NodeVM is explicitly configured to allow require(&amp;#39;https&amp;#39;). The builtin loader wraps host modules in a read-only proxy, but method calls such as Agent.prototype.on() are forwarded to the underlying host object, so sandbox code can register a listener for the agent&amp;#39;s &amp;#39;free&amp;#39; event. When an unrelated host HTTPS request releases a pooled connection, the listener receives the live host request options and the host TLSSocket, allowing sandboxed code to read the host&amp;#39;s Authorization header and private destination host/port, attach a data listener to the released socket and read subsequent host response bodies in plaintext, and issue attacker-chosen authenticated requests using the stolen credentials. The issue is fixed in 3.11.7.&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 versions 3.11.3 through 3.11.6 expose the host process&amp;#39;s real https.globalAgent to sandboxed code when a NodeVM is explicitly configured to allow require(&amp;#39;https&amp;#39;). The builtin loader wraps host modules in a read-only proxy, but method calls such as Agent.prototype.on() are forwarded to the underlying host object, so sandbox code can register a listener for the agent&amp;#39;s &amp;#39;free&amp;#39; event. When an unrelated host HTTPS request releases a pooled connection, the listener receives the live host request options and the host TLSSocket, allowing sandboxed code to read the host&amp;#39;s Authorization header and private destination host/port, attach a data listener to the released socket and read subsequent host response bodies in plaintext, and issue attacker-chosen authenticated requests using the stolen credentials. The issue is fixed in 3.11.7.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-92940</guid>
    </item>
    <item>
      <title>GHSA-h85j-hv3c-qfgq — vm2 exposes host HTTPS credentials and TLS traffic through globalAgent</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-h85j-hv3c-qfgq</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;vm2 3.11.6 exposes the host process&amp;#39;s real `https.globalAgent` when a `NodeVM` is explicitly allowed to require `https`. The module is wrapped as read-only, but calls to methods on the shared agent still mutate the host object. Sandbox code can register a `free` listener and receive host request options and the host TLS socket whenever an unrelated host HTTPS request releases a pooled connection.&lt;/p&gt;
&lt;p&gt;In a contained test, sandbox code allowed only the `https` builtin:&lt;/p&gt;
&lt;p&gt;- read the host request&amp;#39;s bearer token from the agent event;
- attached a data listener to the released host TLS socket and read the next host response body in plaintext;
- learned the private service host and port;
- sent an attacker-chosen authenticated POST using the stolen host token; and
- received confirmation that the service accepted the action.&lt;/p&gt;
&lt;p&gt;The host application never passed its credentials, request, response, socket, or destination into the sandbox. They crossed the boundary solely because vm2 exposes the process-global HTTPS agent instead of a sandbox-local network module instance.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The vulnerable boundary is the default builtin loader in `lib/builtin.js`:&lt;/p&gt;
&lt;p&gt;```js
builtins.set(key, special ? special : vm =&amp;gt; vm.readonly(hostRequire(key)));
```&lt;/p&gt;
&lt;p&gt;The wrapper recursively exposes properties of the actual host module. For ordinary constants, a read-only proxy can be sufficient. It is not sufficient for process-global EventEmitter objects whose methods mutate internal state.&lt;/p&gt;
&lt;p&gt;`https.gl…&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;vm2 3.11.6 exposes the host process&amp;#39;s real `https.globalAgent` when a `NodeVM` is explicitly allowed to require `https`. The module is wrapped as read-only, but calls to methods on the shared agent still mutate the host object. Sandbox code can register a `free` listener and receive host request options and the host TLS socket whenever an unrelated host HTTPS request releases a pooled connection.&lt;/p&gt;
&lt;p&gt;In a contained test, sandbox code allowed only the `https` builtin:&lt;/p&gt;
&lt;p&gt;- read the host request&amp;#39;s bearer token from the agent event;
- attached a data listener to the released host TLS socket and read the next host response body in plaintext;
- learned the private service host and port;
- sent an attacker-chosen authenticated POST using the stolen host token; and
- received confirmation that the service accepted the action.&lt;/p&gt;
&lt;p&gt;The host application never passed its credentials, request, response, socket, or destination into the sandbox. They crossed the boundary solely because vm2 exposes the process-global HTTPS agent instead of a sandbox-local network module instance.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The vulnerable boundary is the default builtin loader in `lib/builtin.js`:&lt;/p&gt;
&lt;p&gt;```js
builtins.set(key, special ? special : vm =&amp;gt; vm.readonly(hostRequire(key)));
```&lt;/p&gt;
&lt;p&gt;The wrapper recursively exposes properties of the actual host module. For ordinary constants, a read-only proxy can be sufficient. It is not sufficient for process-global EventEmitter objects whose methods mutate internal state.&lt;/p&gt;
&lt;p&gt;`https.gl…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-h85j-hv3c-qfgq</guid>
    </item>
  </channel>
</rss>
