---
id: CVE-2026-97705
title: >-
  Moleculer: Unauthenticated Denial of Service via negative length field in the
  TCP transporter packet parser
summary: >-
  Moleculer is a progressive microservices framework for Node.js. Prior to
  0.14.36 and 0.15.2, Parser._write in src/transporters/tcp/parser.js used
  Buffer.prototype.readInt32BE to read a signed packet length, so a remote
  unauthenticated pe…
severity: high
cvss: 7.5
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'
cvssSource: cna
cwe:
  - CWE-835
vendor: moleculerjs
product: moleculer
affected:
  - 'moleculer >= 0.15.0, < 0.15.2'
  - moleculer < 0.14.36
ssvc:
  exploitation: none
  automatable: 'yes'
  technicalImpact: partial
  timestamp: '2026-11-05T19:18:32.217571Z'
published: '2026-11-04'
updated: '2026-11-05'
sourceUpdated: '2026-11-05T19:18:45.325Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-97705'
references:
  - url: >-
      https://github.com/moleculerjs/moleculer/security/advisories/GHSA-h89v-g948-47vp
    label: >-
      https://github.com/moleculerjs/moleculer/security/advisories/GHSA-h89v-g948-47vp
  - url: >-
      https://github.com/moleculerjs/moleculer/commit/168ecbdc245c9a9d1dc4ef9b8a81dbae38ee3063
    label: >-
      https://github.com/moleculerjs/moleculer/commit/168ecbdc245c9a9d1dc4ef9b8a81dbae38ee3063
  - url: >-
      https://github.com/moleculerjs/moleculer/commit/914074e502ae403a0338ad168b45b16d6bcc3e44
    label: >-
      https://github.com/moleculerjs/moleculer/commit/914074e502ae403a0338ad168b45b16d6bcc3e44
  - url: 'https://github.com/moleculerjs/moleculer/releases/tag/v0.14.36'
    label: 'https://github.com/moleculerjs/moleculer/releases/tag/v0.14.36'
  - url: 'https://github.com/moleculerjs/moleculer/releases/tag/v0.15.2'
    label: 'https://github.com/moleculerjs/moleculer/releases/tag/v0.15.2'
tags:
  - cve.org
epss: 0.0035
epssPercentile: 0.28857
ingestedAt: '2026-11-05T22:38:31.519Z'
---

## Overview

Moleculer is a progressive microservices framework for Node.js. Prior to 0.14.36 and 0.15.2, Parser._write in src/transporters/tcp/parser.js used Buffer.prototype.readInt32BE to read a signed packet length, so a remote unauthenticated peer could supply a negative value that caused packet.slice(length) to return the unchanged buffer while the while (packet.length > 0) loop continued indefinitely. The synchronous loop blocked the Node.js event loop and made every service in the process unresponsive until restart. The TCP transporter must be enabled and reachable, and neither CRC validation nor maxPacketSize prevents the malformed length value. This issue is fixed in versions 0.14.36 and 0.15.2.

## Affected

- `moleculer >= 0.15.0, < 0.15.2`
- `moleculer < 0.14.36`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
