{"id":"CVE-2026-62370","aliases":["EUVD-2026-84004","GHSA-gfw4-49f9-cp25","GO-2026-6569"],"status":"published","title":"KubeEdge: Unbounded allocation in viaduct packer enables authenticated remote DoS against CloudHub","description":"KubeEdge is an open source system for extending native containerized application orchestration capabilities to hosts at Edge. From 1.0.0 until 1.21.2, 1.22.2, and 1.23.1, Reader.Read in pkg/viaduct/pkg/packer trusts the 32-bit PackageHeader.PayloadLen received through the CloudHub viaduct message-processing path and allocates that amount of memory before validating an upper bound. An authenticated malicious or compromised edge peer can repeatedly send crafted headers with excessive declared lengths, causing memory exhaustion, CloudHub process termination or restart loops, and temporary disruption of cloud-edge communication. This issue does not provide unauthenticated access or direct code execution. This issue is fixed in versions 1.21.2, 1.22.2, and 1.23.1.","severity":{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.00504,"percentile":0.43378,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-789"],"published":"2026-09-21T17:07:31Z","modified":"2026-10-28T02:30:31Z","fixes":[{"ecosystem":"Go","package":"github.com/kubeedge/kubeedge","fixed_in":["1.21.2","1.22.2","1.23.1"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"Go","package":"github.com/kubeedge/kubeedge","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.0.0"},{"fixed":"1.21.2"}]}]},{"source":"ghsa","ecosystem":"Go","package":"github.com/kubeedge/kubeedge","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.22.0"},{"fixed":"1.22.2"}]}]},{"source":"ghsa","ecosystem":"Go","package":"github.com/kubeedge/kubeedge","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.23.0"},{"fixed":"1.23.1"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/kubeedge/kubeedge","ranges":[{"type":"SEMVER","events":[{"introduced":"1.0.0"},{"fixed":"1.21.2"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/kubeedge/kubeedge","ranges":[{"type":"SEMVER","events":[{"introduced":"1.22.0"},{"fixed":"1.22.2"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/kubeedge/kubeedge","ranges":[{"type":"SEMVER","events":[{"introduced":"1.23.0"},{"fixed":"1.23.1"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/kubeedge/kubeedge","ranges":[{"type":"SEMVER","events":[{"introduced":"1.0.0"},{"fixed":"1.21.2"},{"introduced":"1.22.0"},{"fixed":"1.22.2"},{"introduced":"1.23.0"},{"fixed":"1.23.1"}]}]}],"products":[{"vendor":"kubeedge","product":"kubeedge"}],"references":[{"url":"https://github.com/kubeedge/kubeedge/security/advisories/GHSA-gfw4-49f9-cp25","tags":["x_refsource_CONFIRM","advisory","web"]},{"url":"https://github.com/kubeedge/kubeedge/pull/7028","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/kubeedge/kubeedge/pull/7029","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/kubeedge/kubeedge/pull/7030","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/kubeedge/kubeedge/commit/0fe1ea18e5d7fde29633286ddf1c7e71cb39606f","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/kubeedge/kubeedge/commit/725a73ca35a65d91aa6338e52b8faaab6058f528","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/kubeedge/kubeedge/commit/cc79621943fff9d3f62638d9403ef0cfeda3d0e7","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.21.md","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.22.md","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.23.md","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/kubeedge/kubeedge/releases/tag/v1.21.2","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/kubeedge/kubeedge/releases/tag/v1.22.2","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/kubeedge/kubeedge/releases/tag/v1.23.1","tags":["x_refsource_MISC","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-62370","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-gfw4-49f9-cp25"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/62xxx/CVE-2026-62370.json","tags":["advisory"]},{"url":"https://github.com/kubeedge/kubeedge","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-62370","title":"KubeEdge: Unbounded allocation in viaduct packer enables authenticated remote DoS against CloudHub","description":"KubeEdge is an open source system for extending native containerized application orchestration capabilities to hosts at Edge. From 1.0.0 until 1.21.2, 1.22.2, and 1.23.1, Reader.Read in pkg/viaduct/pkg/packer trusts the 32-bit PackageHeader.PayloadLen received through the CloudHub viaduct message-processing path and allocates that amount of memory before validating an upper bound. An authenticated malicious or compromised edge peer can repeatedly send crafted headers with excessive declared lengths, causing memory exhaustion, CloudHub process termination or restart loops, and temporary disruption of cloud-edge communication. This issue does not provide unauthenticated access or direct code execution. This issue is fixed in versions 1.21.2, 1.22.2, and 1.23.1.","status":"published","published":"2026-09-21T17:07:31.398Z","modified":"2026-09-29T15:04:07.804Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","level":"medium","assessor":"cna"}],"cwes":["CWE-789"],"updated_at":"2026-11-02T14:20:14.665567Z"}],"euvd":[{"id":"EUVD-2026-84004","description":"KubeEdge is an open source system for extending native containerized application orchestration capabilities to hosts at Edge. From 1.0.0 until 1.21.2, 1.22.2, and 1.23.1, Reader.Read in pkg/viaduct/pkg/packer trusts the 32-bit PackageHeader.PayloadLen received through the CloudHub viaduct message-processing path and allocates that amount of memory before validating an upper bound. An authenticated malicious or compromised edge peer can repeatedly send crafted headers with excessive declared lengths, causing memory exhaustion, CloudHub process termination or restart loops, and temporary disruption of cloud-edge communication. This issue does not provide unauthenticated access or direct code execution. This issue is fixed in versions 1.21.2, 1.22.2, and 1.23.1.","status":"published","published":"2026-09-21T17:07:31Z","modified":"2026-09-29T15:04:07Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"updated_at":"2026-11-02T17:27:51.995341Z"}],"ghsa":[{"id":"GHSA-gfw4-49f9-cp25","title":"KubeEdge: Unbounded allocation in viaduct packer enables authenticated remote DoS against CloudHub","description":"## Summary\n\nKubeEdge CloudHub uses the viaduct packer to decode messages received from connected peers. The packer reads a 32-bit payload length from the message header and previously allocated a buffer of that size without enforcing an upper bound.\n\nAn authenticated peer that can establish a viaduct connection to CloudHub can send a crafted message header containing an excessively large payload length. This may cause CloudHub to allocate a large amount of memory and can result in memory exhaustion, process termination, or denial of service.\n\n## Impact\n\nA successfully authenticated malicious or compromised edge node may repeatedly send crafted viaduct message headers to increase CloudHub memory consumption.\n\nDepending on available memory and deployment limits, exploitation may cause:\n\n* Increased CloudHub memory usage\n* Out-of-memory termination\n* CloudHub restart loops\n* Temporary disruption of cloud-edge communication\n\nAuthentication to the viaduct endpoint is required. This issue does not provide unauthenticated access or direct code execution.\n\n## Root cause\n\nThe viaduct packer trusted the payload length encoded in the message header and allocated the payload buffer before validating whether the declared length was within an acceptable range.\n\n## Fix\n\nThe fix introduces a maximum viaduct payload size of 32 MiB.\n\nThe updated implementation:\n\n* Rejects oversized payload lengths in the reader before memory allocation\n* Enforces the same maximum size in the writer\n* Adds regression tests covering oversized and valid payloads\n\nFixes have been prepared for the following patch releases:\n\n* KubeEdge v1.23.1\n* KubeEdge v1.22.2\n* KubeEdge v1.21.2\n\nThese versions should not be listed as released until the coordinated release process is complete.\n\n## Workarounds\n\nBefore patched versions are available, operators should:\n\n* Restrict access to the CloudHub endpoint to trusted edge nodes and networks\n* Protect and rotate edge-node credentials\n* Revoke credentials belonging to decommissioned or potentially compromised nodes\n* Apply memory limits and restart policies to the CloudHub workload\n* Monitor CloudHub memory consumption and unexpected connection activity\n\n## Affected component\n\n* `pkg/viaduct/pkg/packer`\n* CloudHub viaduct message-processing path\n\n## Credits\n\nKubeEdge thanks Sang-Hoon Choi ([KoreaSecurity](https://github.com/KoreaSecurity), Sejong University)\nfor responsibly reporting this issue and for coordinating with the KubeEdge\nmaintainers through the security disclosure process.","status":"published","published":"2026-09-22T20:37:01Z","modified":"2026-09-22T20:37:02Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"cwes":["CWE-789"],"updated_at":"2026-11-02T14:41:20.575159Z"}],"nvd":[{"id":"CVE-2026-62370","description":"KubeEdge is an open source system for extending native containerized application orchestration capabilities to hosts at Edge. From 1.0.0 until 1.21.2, 1.22.2, and 1.23.1, Reader.Read in pkg/viaduct/pkg/packer trusts the 32-bit PackageHeader.PayloadLen received through the CloudHub viaduct message-processing path and allocates that amount of memory before validating an upper bound. An authenticated malicious or compromised edge peer can repeatedly send crafted headers with excessive declared lengths, causing memory exhaustion, CloudHub process termination or restart loops, and temporary disruption of cloud-edge communication. This issue does not provide unauthenticated access or direct code execution. This issue is fixed in versions 1.21.2, 1.22.2, and 1.23.1.","status":"published","published":"2026-09-21T17:17:36.957Z","modified":"2026-09-29T15:17:26.98Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","level":"medium","assessor":"secondary"}],"cwes":["CWE-789"],"updated_at":"2026-11-02T14:12:50.368368Z"}],"osv":[{"id":"CVE-2026-62370","title":"KubeEdge: Unbounded allocation in viaduct packer enables authenticated remote DoS against CloudHub","description":"KubeEdge is an open source system for extending native containerized application orchestration capabilities to hosts at Edge. From 1.0.0 until 1.21.2, 1.22.2, and 1.23.1, Reader.Read in pkg/viaduct/pkg/packer trusts the 32-bit PackageHeader.PayloadLen received through the CloudHub viaduct message-processing path and allocates that amount of memory before validating an upper bound. An authenticated malicious or compromised edge peer can repeatedly send crafted headers with excessive declared lengths, causing memory exhaustion, CloudHub process termination or restart loops, and temporary disruption of cloud-edge communication. This issue does not provide unauthenticated access or direct code execution. This issue is fixed in versions 1.21.2, 1.22.2, and 1.23.1.","status":"published","published":"2026-09-21T17:07:31.398Z","modified":"2026-10-28T02:30:31.987683046Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"cwes":["CWE-789"],"updated_at":"2026-11-02T15:45:13.306117Z"},{"id":"GHSA-gfw4-49f9-cp25","title":"KubeEdge: Unbounded allocation in viaduct packer enables authenticated remote DoS against CloudHub","description":"## Summary\n\nKubeEdge CloudHub uses the viaduct packer to decode messages received from connected peers. The packer reads a 32-bit payload length from the message header and previously allocated a buffer of that size without enforcing an upper bound.\n\nAn authenticated peer that can establish a viaduct connection to CloudHub can send a crafted message header containing an excessively large payload length. This may cause CloudHub to allocate a large amount of memory and can result in memory exhaustion, process termination, or denial of service.\n\n## Impact\n\nA successfully authenticated malicious or compromised edge node may repeatedly send crafted viaduct message headers to increase CloudHub memory consumption.\n\nDepending on available memory and deployment limits, exploitation may cause:\n\n* Increased CloudHub memory usage\n* Out-of-memory termination\n* CloudHub restart loops\n* Temporary disruption of cloud-edge communication\n\nAuthentication to the viaduct endpoint is required. This issue does not provide unauthenticated access or direct code execution.\n\n## Root cause\n\nThe viaduct packer trusted the payload length encoded in the message header and allocated the payload buffer before validating whether the declared length was within an acceptable range.\n\n## Fix\n\nThe fix introduces a maximum viaduct payload size of 32 MiB.\n\nThe updated implementation:\n\n* Rejects oversized payload lengths in the reader before memory allocation\n* Enforces the same maximum size in the writer\n* Adds regression tests covering oversized and valid payloads\n\nFixes have been prepared for the following patch releases:\n\n* KubeEdge v1.23.1\n* KubeEdge v1.22.2\n* KubeEdge v1.21.2\n\nThese versions should not be listed as released until the coordinated release process is complete.\n\n## Workarounds\n\nBefore patched versions are available, operators should:\n\n* Restrict access to the CloudHub endpoint to trusted edge nodes and networks\n* Protect and rotate edge-node credentials\n* Revoke credentials belonging to decommissioned or potentially compromised nodes\n* Apply memory limits and restart policies to the CloudHub workload\n* Monitor CloudHub memory consumption and unexpected connection activity\n\n## Affected component\n\n* `pkg/viaduct/pkg/packer`\n* CloudHub viaduct message-processing path\n\n## Credits\n\nKubeEdge thanks Sang-Hoon Choi ([KoreaSecurity](https://github.com/KoreaSecurity), Sejong University)\nfor responsibly reporting this issue and for coordinating with the KubeEdge\nmaintainers through the security disclosure process.","status":"published","published":"2026-09-22T20:37:01Z","modified":"2026-10-01T20:56:04.793505217Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"cwes":["CWE-789"],"updated_at":"2026-11-02T15:46:47.822182Z"},{"id":"GO-2026-6569","title":"KubeEdge: Unbounded allocation in viaduct packer enables authenticated remote DoS against CloudHub in github.com/kubeedge/kubeedge","description":"KubeEdge: Unbounded allocation in viaduct packer enables authenticated remote DoS against CloudHub in github.com/kubeedge/kubeedge","status":"published","published":"2026-10-01T20:23:38Z","modified":"2026-10-01T20:45:15.889308691Z","updated_at":"2026-11-02T15:47:03.11707Z"}]}}
