GitHub Advisoryadvisory · npm
GHSA-7v5v-9h63-cj86 @grpc/grpc-js can allocate memory for incoming messages well above configured limits
MEDIUM
Official page ↗
- Aliases
- CVE-2024-37168
- Ecosystem
- npm
- Packages
- @grpc/grpc-js
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
- Weaknesses
- CWE-789
- Reviewed
- 2024-06-10
Affected packages
• npm @grpc/grpc-js: >= 1.10.0, < 1.10.9 → fixed in 1.10.9
• npm @grpc/grpc-js: >= 1.9.0, < 1.9.15 → fixed in 1.9.15
• npm @grpc/grpc-js: < 1.8.22 → fixed in 1.8.22
Description
Impact
There are two separate code paths in which memory can be allocated per message in excess of the `grpc.max_receive_message_length` channel option:
1. If an incoming message has a size on the wire greater than the configured limit, the entire message is buffered before it is discarded.
2. If an incoming message has a size within the limit on the wire but decompresses to a size greater than the limit, the entire message is decompressed into memory, and on the server is not discarded.
Patches
This has been patched in versions 1.10.9, 1.9.15, and 1.8.22
Related
Alias · CVE (1)
- CVE-2024-37168 @grpc/grps-js implements the core functionality of gRPC purely in JavaScript, without a C++ addon. vulnerability
Weakness · CWE (1)
- CWE-789 Memory Allocation with Excessive Size Value weakness
References
- https://github.com/grpc/grpc-node/security/advisories/GHSA-7v5v-9h63-cj86 web
- https://nvd.nist.gov/vuln/detail/CVE-2024-37168 advisory
- https://github.com/grpc/grpc-node/commit/08b0422dae56467ecae1007e899efe66a8c4a650 web
- https://github.com/grpc/grpc-node/commit/674f4e351a619fd4532f84ae6dff96b8ee4e1ed3 web
- https://github.com/grpc/grpc-node/commit/a8a020339c7eab1347a343a512ad17a4aea4bfdb web
- https://github.com/grpc/grpc-node package