CVE-2024-37168: @grpc/grpc-js can allocate memory for incoming messages well above configured limits
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:
- If an incoming message has a size on the wire greater than the configured limit, the entire message is buffered before it is discarded.
- 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.
References
- github.com/advisories/GHSA-7v5v-9h63-cj86
- github.com/grpc/grpc-node
- github.com/grpc/grpc-node/commit/08b0422dae56467ecae1007e899efe66a8c4a650
- github.com/grpc/grpc-node/commit/674f4e351a619fd4532f84ae6dff96b8ee4e1ed3
- github.com/grpc/grpc-node/commit/a8a020339c7eab1347a343a512ad17a4aea4bfdb
- github.com/grpc/grpc-node/security/advisories/GHSA-7v5v-9h63-cj86
- nvd.nist.gov/vuln/detail/CVE-2024-37168
Code Behaviors & Features
Detect and mitigate CVE-2024-37168 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →