<?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://db.gcve.eu</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>Wed, 30 Sep 2026 21:11:07 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-102281</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-102281</link>
      <description>&lt;p&gt;Nest is a framework for building scalable Node.js server-side applications. Prior to 11.2.4 and 12.0.2, a single message with a deeply nested object in its pattern can terminate a NestJS microservice using the TCP or RabbitMQ transport. ServerTCP#handleMessage and ServerRMQ#handleMessage pass a client-controlled non-string pattern to JSON.stringify to derive the handler lookup key; sufficiently deep nesting throws RangeError: Maximum call stack size exceeded, and the unhandled promise rejection terminates Node.js under its default behavior. An attacker who can reach the TCP port or publish to the consumed RabbitMQ queue or exchange can crash the service on demand; other transports are not affected because their patterns arrive as strings. This issue is fixed in versions 11.2.4 and 12.0.2.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Nest is a framework for building scalable Node.js server-side applications. Prior to 11.2.4 and 12.0.2, a single message with a deeply nested object in its pattern can terminate a NestJS microservice using the TCP or RabbitMQ transport. ServerTCP#handleMessage and ServerRMQ#handleMessage pass a client-controlled non-string pattern to JSON.stringify to derive the handler lookup key; sufficiently deep nesting throws RangeError: Maximum call stack size exceeded, and the unhandled promise rejection terminates Node.js under its default behavior. An attacker who can reach the TCP port or publish to the consumed RabbitMQ queue or exchange can crash the service on demand; other transports are not affected because their patterns arrive as strings. This issue is fixed in versions 11.2.4 and 12.0.2.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-102281</guid>
    </item>
    <item>
      <title>GHSA-m8vh-jmq9-5rjg — Nest: Remote process termination via a deeply nested microservice message pattern</title>
      <link>https://db.gcve.eu/vuln/ghsa-m8vh-jmq9-5rjg</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: @nestjs/microservices&lt;/p&gt;
&lt;p&gt;| Field | Value |
| --- | --- |
| Ecosystem | npm |
| Package | `@nestjs/microservices` |
| Affected versions | `&amp;gt;= 12.0.0, &amp;lt; 12.0.2` and `&amp;lt; 11.2.4` |
| Patched versions | `12.0.2` and `11.2.4` (upgrade to `12.0.3` / `11.2.5`) |&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;A single message whose `pattern` is a deeply nested object terminates a NestJS microservice that uses the TCP or
RabbitMQ transport. The server serialized the client-supplied pattern with `JSON.stringify` to derive the handler
lookup key; on deeply nested input this throws `RangeError: Maximum call stack size exceeded`. The exception escaped
the asynchronous message handler as an unhandled promise rejection, which terminates the Node.js process under the
default `--unhandled-rejections=throw`.&lt;/p&gt;
&lt;p&gt;### Impact&lt;/p&gt;
&lt;p&gt;Denial of service, one message per crash, repeatable. The attacker needs to be able to reach the transport: connect
to the TCP transport&amp;#39;s port, or publish to the queue or exchange the service consumes from. The TCP transport
performs no authentication by default, so on a reachable port this requires nothing else.&lt;/p&gt;
&lt;p&gt;Only the **TCP** and **RabbitMQ** transports are affected. The other transports take the pattern as a string from the
broker topic or channel and never serialize a client-supplied object to build it.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;In `ServerTCP#handleMessage` and `ServerRMQ#handleMessage` the pattern was stringified without a guard:&lt;/p&gt;
&lt;p&gt;```ts
const pattern = isString(packet.pattern)
  ? packet.pattern
  : JSON.stringify(packet.pattern);
```&lt;/p&gt;
&lt;p&gt;`…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: @nestjs/microservices&lt;/p&gt;
&lt;p&gt;| Field | Value |
| --- | --- |
| Ecosystem | npm |
| Package | `@nestjs/microservices` |
| Affected versions | `&amp;gt;= 12.0.0, &amp;lt; 12.0.2` and `&amp;lt; 11.2.4` |
| Patched versions | `12.0.2` and `11.2.4` (upgrade to `12.0.3` / `11.2.5`) |&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;A single message whose `pattern` is a deeply nested object terminates a NestJS microservice that uses the TCP or
RabbitMQ transport. The server serialized the client-supplied pattern with `JSON.stringify` to derive the handler
lookup key; on deeply nested input this throws `RangeError: Maximum call stack size exceeded`. The exception escaped
the asynchronous message handler as an unhandled promise rejection, which terminates the Node.js process under the
default `--unhandled-rejections=throw`.&lt;/p&gt;
&lt;p&gt;### Impact&lt;/p&gt;
&lt;p&gt;Denial of service, one message per crash, repeatable. The attacker needs to be able to reach the transport: connect
to the TCP transport&amp;#39;s port, or publish to the queue or exchange the service consumes from. The TCP transport
performs no authentication by default, so on a reachable port this requires nothing else.&lt;/p&gt;
&lt;p&gt;Only the **TCP** and **RabbitMQ** transports are affected. The other transports take the pattern as a string from the
broker topic or channel and never serialize a client-supplied object to build it.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;In `ServerTCP#handleMessage` and `ServerRMQ#handleMessage` the pattern was stringified without a guard:&lt;/p&gt;
&lt;p&gt;```ts
const pattern = isString(packet.pattern)
  ? packet.pattern
  : JSON.stringify(packet.pattern);
```&lt;/p&gt;
&lt;p&gt;`…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-m8vh-jmq9-5rjg</guid>
    </item>
  </channel>
</rss>
