---
id: "GHSA-c8fr-c7pf-58pf"
page: "https://infrastack.ai/live/GHSA-c8fr-c7pf-58pf"
kind: "vulnerability"
aliases: ["GHSA-c8fr-c7pf-58pf"]
title: "Process crash via a multipart request with many fields on the Express and Node adapters"
severity: "high"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: [{"name": "@nestjs/platform-express", "fixed": ["12.5.0"], "affected": ">= 12.0.0, < 12.5.0", "ecosystem": "npm"}, {"name": "@nestjs/platform-express", "fixed": ["11.2.10"], "affected": "< 11.2.10", "ecosystem": "npm"}, {"name": "@nestjs/platform-node", "fixed": ["12.5.0"], "affected": ">= 12.3.0, < 12.5.0", "ecosystem": "npm"}]
ecosystems: ["npm"]
tags: ["cwe-400", "cwe-770", "express", "file-uploads", "nestjs", "node", "package"]
not_affected_if: ["custom-parts-limit", "fastify-adapter", "no-multipart-routes"]
published_at: "2026-11-12T19:03:43+00:00"
first_seen_at: "2026-11-12T19:14:24+00:00"
updated_at: "2026-11-12T19:15:49+00:00"
sources: [{"source": "ghsa-repo", "url": "https://github.com/nestjs/nest/security/advisories/GHSA-c8fr-c7pf-58pf", "first_seen_at": "2026-11-12T19:14:24+00:00"}]
exploit_sources: []
---

# Process crash via a multipart request with many fields on the Express and Node adapters

Link for people: https://infrastack.ai/live/GHSA-c8fr-c7pf-58pf (this .md is for agents)

The Express and Node adapters of NestJS set no default limit on the number of parts in a multipart upload. A single request of a few megabytes can make the server allocate memory until the process runs out of heap and terminates, which is a denial of service.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- npm:@nestjs/platform-express affected >= 12.0.0, < 12.5.0 fixed 12.5.0
- npm:@nestjs/platform-express affected < 11.2.10 fixed 11.2.10
- npm:@nestjs/platform-node affected >= 12.3.0, < 12.5.0 fixed 12.5.0

## How to check

- Check the installed version: `npm ls @nestjs/platform-express @nestjs/platform-node`
- Look for routes using `FileInterceptor`, `FilesInterceptor`, `FileFieldsInterceptor`, `AnyFilesInterceptor` or `NoFilesInterceptor` with default limits
- Search the code for `limits.parts` in `MulterModule.register()` or interceptor options

## Fix

- `@nestjs/platform-express`: `11.2.10` for the 11.x line, `12.5.0` for the 12.x line
- `@nestjs/platform-node`: `12.5.0`
- Workaround named by the advisory: set `limits.parts` (or `limits.fields` and `limits.files`) in `MulterModule.register()` or in each upload interceptor's options

## Timeline

- 2026-11-12T19:14:24+00:00 ghsa-repo https://github.com/nestjs/nest/security/advisories/GHSA-c8fr-c7pf-58pf

## Documents

- [advisory] Maintainer's advisory: github.com https://github.com/nestjs/nest/security/advisories/GHSA-c8fr-c7pf-58pf

## From the sources

| Field | Value |
| --- | --- |
| Ecosystem | npm |
| Package | `@nestjs/platform-express`, `@nestjs/platform-node` |
| Affected versions | `@nestjs/platform-express` `< 11.2.10` and `>= 12.0.0, < 12.5.0`; `@nestjs/platform-node` `>= 12.3.0, < 12.5.0` |
| Patched versions | `11.2.10` and `12.5.0` |
| Severity | High |
| CVSS v3.1 | `AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H` (7.5) |
| CWE | CWE-770 (Allocation of Resources Without Limits or Throttling), CWE-400 (Uncontrolled Resource Consumption) |

### Summary

The upload interceptors of the Express and Node adapters set no default limit on the number of parts in a multipart request. A single request of a few megabytes could make the server allocate memory until the process ran out of heap and terminated.

### Impact

Applications using `@nestjs/platform-express` (the default adapter) or `@nestjs/platform-node` are affected when a route uses `FileInterceptor`, `FilesInterceptor`, `FileFieldsInterceptor`, `AnyFilesInterceptor` or `NoFilesInterceptor` with the default limits. No authentication is needed unless a guard protects the route. The Fastify adapter is not affected in the same way, because `@fastify/multipart` limits the number of parts by default.

### Patches

Fixed in **11.2.10** and **12.5.0**. Multipart requests are now limited to 1000 parts by default (`limits.parts`), counting fields and files together. Applications that need more must raise `limits.parts`.

### Workarounds

Set `limits.parts` (or `limits.fields` and `limits.files`) in `MulterModule.register()` or in the options of each upload interceptor.

### Credit

Reported by Anthropic's OSS Scanner.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
