{"id":"GHSA-gfw4-49f9-cp25","summary":"KubeEdge: Unbounded allocation in viaduct packer enables authenticated remote DoS against CloudHub","details":"## 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.","aliases":["CVE-2026-62370","GO-2026-6569"],"modified":"2026-10-01T20:56:04.793505217Z","published":"2026-09-22T20:37:01Z","database_specific":{"github_reviewed_at":"2026-09-22T20:37:01Z","nvd_published_at":"2026-09-21T17:17:36Z","cwe_ids":["CWE-789"],"severity":"MODERATE","github_reviewed":true},"references":[{"type":"WEB","url":"https://github.com/kubeedge/kubeedge/security/advisories/GHSA-gfw4-49f9-cp25"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-62370"},{"type":"WEB","url":"https://github.com/kubeedge/kubeedge/pull/7028"},{"type":"WEB","url":"https://github.com/kubeedge/kubeedge/pull/7029"},{"type":"WEB","url":"https://github.com/kubeedge/kubeedge/pull/7030"},{"type":"WEB","url":"https://github.com/kubeedge/kubeedge/commit/0fe1ea18e5d7fde29633286ddf1c7e71cb39606f"},{"type":"WEB","url":"https://github.com/kubeedge/kubeedge/commit/725a73ca35a65d91aa6338e52b8faaab6058f528"},{"type":"WEB","url":"https://github.com/kubeedge/kubeedge/commit/cc79621943fff9d3f62638d9403ef0cfeda3d0e7"},{"type":"PACKAGE","url":"https://github.com/kubeedge/kubeedge"},{"type":"WEB","url":"https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.21.md"},{"type":"WEB","url":"https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.22.md"},{"type":"WEB","url":"https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.23.md"},{"type":"WEB","url":"https://github.com/kubeedge/kubeedge/releases/tag/v1.21.2"},{"type":"WEB","url":"https://github.com/kubeedge/kubeedge/releases/tag/v1.22.2"},{"type":"WEB","url":"https://github.com/kubeedge/kubeedge/releases/tag/v1.23.1"}],"affected":[{"package":{"name":"github.com/kubeedge/kubeedge","ecosystem":"Go","purl":"pkg:golang/github.com/kubeedge/kubeedge"},"ranges":[{"type":"SEMVER","events":[{"introduced":"1.0.0"},{"fixed":"1.21.2"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-gfw4-49f9-cp25/GHSA-gfw4-49f9-cp25.json"}},{"package":{"name":"github.com/kubeedge/kubeedge","ecosystem":"Go","purl":"pkg:golang/github.com/kubeedge/kubeedge"},"ranges":[{"type":"SEMVER","events":[{"introduced":"1.22.0"},{"fixed":"1.22.2"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-gfw4-49f9-cp25/GHSA-gfw4-49f9-cp25.json"}},{"package":{"name":"github.com/kubeedge/kubeedge","ecosystem":"Go","purl":"pkg:golang/github.com/kubeedge/kubeedge"},"ranges":[{"type":"SEMVER","events":[{"introduced":"1.23.0"},{"fixed":"1.23.1"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-gfw4-49f9-cp25/GHSA-gfw4-49f9-cp25.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H"}]}