GHSA-9vm9-pqxx-x83v
KubeEdge: keadm DecompressTarGz path traversal enables arbitrary file write on Windows during edge node join
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| Go | github.com/kubeedge/kubeedge | >= 1.16.0, < 1.21.2 | 1.21.2 |
| Go | github.com/kubeedge/kubeedge | >= 1.22.0, < 1.22.2 | 1.22.2 |
| Go | github.com/kubeedge/kubeedge | >= 1.23.0, < 1.23.1 | 1.23.1 |
Details
As written in the advisory (Markdown source, shown as plain text).
## Description
KubeEdge `keadm` contains a path traversal vulnerability in the `DecompressTarGz` archive extraction function.
Archive entry names were joined directly with the extraction destination without sufficient validation. A crafted tar.gz archive containing parent-directory components, Windows-style backslashes, absolute paths, or drive-prefixed paths could cause files to be written outside the intended extraction directory.
The issue is particularly relevant to Windows edge nodes during the `keadm join` or installation process when `keadm` extracts downloaded component archives.
## Impact
An attacker who can cause an affected `keadm` process to extract a malicious archive may write or overwrite files outside the intended destination directory with the privileges of the user running `keadm`.
On Windows edge nodes, this may allow modification of configuration files, executable files, service-related files, or other writable system locations. Depending on the overwritten file and the privileges of the `keadm` process, successful exploitation could lead to persistent system modification or code execution.
Exploitation requires the attacker to influence the contents of an archive processed by `keadm`, such as through a compromised, replaced, or otherwise untrusted download source.
## Patches
The extraction logic now:
* resolves the destination directory to an absolute path;
* rejects empty archive entry names;
* normalizes Windows-style path separators before validation;
* rejects parent-directory traversal paths;
* rejects absolute and Windows drive-prefixed paths;
* uses `filepath-securejoin` to ensure extracted files remain within the destination directory.
Fixes are planned for the following maintained releases:
* v1.23.1
* v1.22.2
* v1.21.2
## Workarounds
Until a patched release is available:
* only install or join edge nodes using trusted KubeEdge package sources;
* verify the integrity and origin of downloaded archives before extraction;
* do not use custom or untrusted component archives with `keadm`;
* restrict write permissions and administrative privileges for the account running `keadm`;
* avoid performing Windows edge-node installation or join operations when the package source cannot be trusted.
## Credits
KubeEdge thanks Sang-Hoon Choi ([KoreaSecurity](https://github.com/KoreaSecurity), Sejong University)
for responsibly reporting this issue and for coordinating with the KubeEdge
maintainers through the security disclosure process.
References
External links from the advisory. They lead to third-party sites.
- https://github.com/kubeedge/kubeedge/security/advisories/GHSA-9vm9-pqxx-x83v
- https://nvd.nist.gov/vuln/detail/CVE-2026-62369
- https://github.com/kubeedge/kubeedge/pull/7028
- https://github.com/kubeedge/kubeedge/pull/7029
- https://github.com/kubeedge/kubeedge/pull/7030
- https://github.com/kubeedge/kubeedge/commit/47767b7f2649afcfa3a856e87d556f7777e0428d
- https://github.com/kubeedge/kubeedge/commit/a524a66a1ae1691eb8ff16b6ff9a93fb370d4047
- https://github.com/kubeedge/kubeedge/commit/ee02dea9d08114afc4a8f401b1c2f30e84e1de40
- https://github.com/kubeedge/kubeedge
- https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.21.md
- https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.22.md
- https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.23.md
- https://github.com/kubeedge/kubeedge/releases/tag/v1.21.2
- https://github.com/kubeedge/kubeedge/releases/tag/v1.22.2
- https://github.com/kubeedge/kubeedge/releases/tag/v1.23.1