{
  "schema_version": "1.4.0",
  "id": "GHSA-fc83-9jwq-gc2m",
  "modified": "2025-03-24T19:39:27Z",
  "published": "2025-03-24T19:39:27Z",
  "aliases": [],
  "summary": "Web Push Denial of Service via malicious Web Push endpoint",
  "details": "Prior to version 0.10.3, the built-in clients of the `web-push` crate eagerly allocated memory based on the `Content-Length` header returned by the Web Push endpoint. Malicious Web Push endpoints could return a large `Content-Length` without ever having to send as much data, leading to denial of service by memory exhaustion.\n\nServices providing Web Push notifications typically allow the user to register an arbitrary endpoint, so the endpoint should not be trusted.\n\nThe fixed version 0.10.3 now limits the amount of memory it will allocate for each response, limits the amount of data it will read from the endpoint, and returns an error if the endpoint sends too much data.\n\nAs before, it is recommended that services add a timeout for each request to Web Push endpoints.",
  "severity": [
    {
      "type": "CVSS_V4",
      "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N"
    }
  ],
  "affected": [
    {
      "package": {
        "ecosystem": "crates.io",
        "name": "web-push"
      },
      "ranges": [
        {
          "type": "ECOSYSTEM",
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "0.10.4"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/pimeys/rust-web-push/pull/68"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/pimeys/rust-web-push"
    },
    {
      "type": "WEB",
      "url": "https://rustsec.org/advisories/RUSTSEC-2025-0015.html"
    }
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-770"
    ],
    "severity": "MODERATE",
    "github_reviewed": true,
    "github_reviewed_at": "2025-03-24T19:39:27Z",
    "nvd_published_at": null
  }
}