Skip to content
Heist/ feed
Back to feed
Medium

@grpc/grpc-js can allocate memory for incoming messages well above configured limits

Type: advisorySources: OSV

@grpc/grps-js implements the core functionality of gRPC purely in JavaScript, without a C++ addon. Prior to versions 1.10.9, 1.9.15, and 1.8.22, 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; and/or 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. This has been patched in versions 1.10.9, 1.9.15, and 1.8.22.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2024-37168
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 17:59 UTC · Revision 1

Source evidence

@grpc/grpc-js can allocate memory for incoming messages well above configured limits

core-osv · Original source

Published 10 Jun 2024, 21:32 UTC

@grpc/grps-js implements the core functionality of gRPC purely in JavaScript, without a C++ addon. Prior to versions 1.10.9, 1.9.15, and 1.8.22, 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; and/or 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. This has been patched in versions 1.10.9, 1.9.15, and 1.8.22.

osv:CVE-2024-37168
Complete source record
{
  "id": "5a1ad754263b256a6b18dbc5df7ba6545a93e58a9cf72235528bb70f5e995c03",
  "url": "https://osv.dev/vulnerability/CVE-2024-37168",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "@grpc/grpc-js can allocate memory for incoming messages well above configured limits",
    "summary": "@grpc/grps-js implements the core functionality of gRPC purely in JavaScript, without a C++ addon. Prior to versions 1.10.9, 1.9.15, and 1.8.22, 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; and/or 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. This has been patched in versions 1.10.9, 1.9.15, and 1.8.22.",
    "evidence": "osv:CVE-2024-37168",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2024-37168",
      "aliases": [
        "CVE-2024-37168",
        "GHSA-7v5v-9h63-cj86"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/grpc/grpc-node",
              "type": "GIT",
              "events": [
                {
                  "introduced": "190a72ecd09de91013137b67d8e9e1d6da2eb7c8"
                },
                {
                  "fixed": "674f4e351a619fd4532f84ae6dff96b8ee4e1ed3"
                },
                {
                  "introduced": "f4d3139242d4b4f72cf944e64d0595e2b85d2364"
                },
                {
                  "fixed": "08b0422dae56467ecae1007e899efe66a8c4a650"
                },
                {
                  "introduced": "0"
                },
                {
                  "fixed": "a8a020339c7eab1347a343a512ad17a4aea4bfdb"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "1.10.0"
                      },
                      {
                        "fixed": "1.10.9"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "1.9.0"
                      },
                      {
                        "fixed": "1.9.15"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.8.22"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "08b0422dae56467ecae1007e899efe66a8c4a650"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "674f4e351a619fd4532f84ae6dff96b8ee4e1ed3"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "a8a020339c7eab1347a343a512ad17a4aea4bfdb"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "@grpc/grpc-js@1.10.8",
            "@grpc/grpc-js@1.10.7",
            "@grpc/grpc-js-xds@1.10.1",
            "@grpc/grpc-js@1.9.14",
            "@grpc/grpc-js@1.10.6",
            "@grpc/grpc-js@1.10.5",
            "@grpc/grpc-js@1.10.3",
            "@grpc/grpc-js@1.10.2",
            "@grpc/grpc-js@1.10.1",
            "@grpc/grpc-js@1.10.0",
            "@grpc/grpc-js-xds@1.10.0",
            "@grpc/grpc-js@1.9.0",
            "@grpc/grpc-js-xds@1.9.0",
            "@grpc/grpc-js@1.9.13",
            "@grpc/reflection@1.0.1",
            "@grpc/reflection@1.0.0",
            "@grpc/grpc-js@1.9.12",
            "@grpc/grpc-js@1.9.11",
            "@grpc/grpc-js@1.9.10",
            "@grpc/grpc-js@1.9.9",
            "@grpc/grpc-js@1.9.8",
            "@grpc/grpc-js@1.9.7",
            "@grpc/grpc-js@1.9.6",
            "@grpc/grpc-js@1.9.5",
            "@grpc/grpc-js@1.9.4",
            "grpc-health-check@2.0.0",
            "@grpc/grpc-js-xds@1.9.2",
            "@grpc/grpc-js-xds@1.9.1",
            "@grpc/proto-loader@0.7.10",
            "@grpc/grpc-js@1.9.3",
            "@grpc/grpc-js@1.9.2",
            "@grpc/proto-loader@0.7.9",
            "@grpc/grpc-js@1.9.1",
            "@grpc/grpc-js@1.8.21",
            "@grpc/grpc-js@1.8.20",
            "@grpc/grpc-js@1.8.19",
            "@grpc/grpc-js@1.8.18",
            "@grpc/grpc-js@1.8.17",
            "@grpc/grpc-js@1.8.16",
            "@grpc/proto-loader@0.7.7",
            "@grpc/grpc-js@1.8.15",
            "@grpc/grpc-js-xds@1.8.2",
            "@grpc/grpc-js@1.8.14",
            "@grpc/grpc-js@1.8.13",
            "@grpc/grpc-js-xds@1.8.1",
            "@grpc/proto-loader@0.7.6",
            "@grpc/grpc-js@1.8.12",
            "@grpc/grpc-js@1.8.11",
            "@grpc/grpc-js@1.8.10",
            "@grpc/grpc-js@1.8.9",
            "@grpc/proto-loader@0.7.5",
            "@grpc/grpc-js@1.8.8",
            "@grpc/grpc-js@1.8.7",
            "grpc-tools@1.12.4",
            "@grpc/grpc-js@1.8.6",
            "@grpc/grpc-js@1.8.5",
            "@grpc/grpc-js@1.8.4",
            "@grpc/grpc-js@1.8.3",
            "@grpc/grpc-js@1.8.2",
            "grpc-tools@1.12.0",
            "grpc-tools@1.12.3",
            "@grpc/grpc-js@1.8.0",
            "@grpc/grpc-js-xds@1.8.0",
            "@grpc/proto-loader@0.7.4",
            "grpc-tools@1.12.2",
            "grpc-tools@1.12.1",
            "grpc-tools@1.11.3",
            "@grpc/proto-loader@0.7.3",
            "@grpc/proto-loader@0.7.2",
            "@grpc/proto-loader@0.7.1",
            "@grpc/proto-loader@0.6.13",
            "@grpc/proto-loader@0.6.12",
            "@grpc/proto-loader@0.6.11",
            "@grpc/proto-loader@0.6.10",
            "@grpc/proto-loader@0.6.9",
            "@grpc/proto-loader@0.6.8",
            "@grpc/proto-loader@0.6.6",
            "@grpc/proto-loader@0.6.5",
            "@grpc/proto-loader@0.6.4",
            "@grpc/proto-loader@0.6.3",
            "@grpc/grpc-js@1.3.4",
            "grpc-tools@1.11.2",
            "@grpc/proto-loader@0.6.2",
            "@grpc/proto-loader@0.6.1",
            "@grpc/proto-loader@0.6.0",
            "grpc-tools@1.11.0",
            "@grpc/grpc-js-xds@1.2.4",
            "@grpc/proto-loader@0.5.6",
            "@grpc/grpc-js@1.2.0",
            "@grpc/grpc-js@1.1.6",
            "@grpc/grpc-js@1.1.4",
            "@grpc/grpc-js@1.1.3",
            "grpc-tools@1.9.1",
            "@grpc/grpc-js@1.1.2",
            "@grpc/grpc-js@1.1.0",
            "grpc@1.24.3",
            "@grpc/grpc-js@1.0.5",
            "@grpc/grpc-js@1.0.2",
            "grpc-tools@1.9.0",
            "@grpc/grpc-js@1.0.4",
            "@grpc/grpc-js@1.0.3",
            "@grpc/grpc-js@1.0.0",
            "@grpc/grpc-js@0.7.9",
            "@grpc/grpc-js@0.8.1",
            "@grpc/grpc-js@0.8.0",
            "@grpc/grpc-js@0.7.6",
            "@grpc/grpc-js@0.7.5",
            "@grpc/proto-loader@0.5.4",
            "@grpc/grpc-js@0.7.2",
            "@grpc/grpc-js@0.7.1",
            "@grpc/grpc-js@0.7.0",
            "@grpc/grpc-js@0.6.18",
            "@grpc/grpc-js@0.6.12",
            "@grpc/grpc-js@0.6.5",
            "grpc@1.23.4",
            "@grpc/grpc-js@0.6.4",
            "@grpc/grpc-js@0.6.3",
            "@grpc/grpc-js@0.6.2",
            "@grpc/grpc-js@0.6.1",
            "@grpc/grpc-js@0.6.0",
            "@grpc/grpc-js@0.5.3",
            "@grpc/proto-loader@0.5.2",
            "@grpc/grpc-js@0.5.0",
            "@grpc/grpc-js@0.5.2",
            "@grpc/grpc-js@0.5.1",
            "grpc-tools@1.8.0",
            "@grpc/grpc-js@0.4.3",
            "@grpc/grpc-js@0.4.2",
            "@grpc/proto-loader@0.5.1",
            "@grpc/grpc-js@0.4.0",
            "@grpc/proto-loader@0.5.0",
            "grpc-tools@1.7.2",
            "@grpc/grpc-js@0.3.6",
            "grpc-tools@1.7.0",
            "@grpc/proto-loader@0.4.0",
            "@grpc/grpc-js@0.3.4",
            "@grpc/grpc-js@0.3.3",
            "@grpc/grpc-js@0.3.1",
            "@grpc/grpc-js@0.3.0",
            "@grpc/proto-loader@0.3.0",
            "@grpc/grpc-js@0.2.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-37168.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:31.270773869Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/37xxx/CVE-2024-37168.json",
        "https://github.com/grpc/grpc-node/security/advisories/GHSA-7v5v-9h63-cj86",
        "https://nvd.nist.gov/vuln/detail/CVE-2024-37168",
        "https://github.com/grpc/grpc-node/commit/08b0422dae56467ecae1007e899efe66a8c4a650",
        "https://github.com/grpc/grpc-node/commit/674f4e351a619fd4532f84ae6dff96b8ee4e1ed3",
        "https://github.com/grpc/grpc-node/commit/a8a020339c7eab1347a343a512ad17a4aea4bfdb"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-789"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/37xxx/CVE-2024-37168.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2024-37168",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 498039,
  "published_at": "2024-06-10T21:32:06.403+00:00"
}