GHSA-5jpj-293f-rhvj: OS Command Injection
Impact
The KubeEdge NodeUpgradeJob handler constructed the keadm upgrade edge command by concatenating the user-controlled spec.version and spec.image fields into a shell command.
An authenticated user with permission to create or update NodeUpgradeJob resources through the v1alpha2 API could include shell metacharacters in either field. When the upgrade job was processed, the injected command could be executed on the targeted edge node with the privileges available to the upgrade process.
Successful exploitation could result in arbitrary command execution and compromise the confidentiality, integrity, and availability of the affected edge node.
Patches
The fix removes shell-based command construction and invokes keadm using a structured argument list through exec.Command.
The version and image values are passed as separate literal arguments and are no longer interpreted by a command shell.
The fixed versions:
KubeEdge v1.23.1 KubeEdge v1.22.2 KubeEdge v1.21.2
Workarounds
Until a patched version is available:
restrict permission to create or update NodeUpgradeJob resources to trusted administrators; do not allow untrusted users or tenants to control the spec.version or spec.image fields; avoid using NodeUpgradeJob-based edge upgrades in environments where these fields may be influenced by untrusted users.
Credits
KubeEdge thanks Sang-Hoon Choi (KoreaSecurity, Sejong University) for responsibly reporting this issue and for coordinating with the KubeEdge maintainers through the security disclosure process.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
go/github.com/kubeedge/kubeedgeto a version that resolves this vulnerability.Fixed in 1.23.1 - Upgrade
Upgrade
go/github.com/kubeedge/kubeedgeto a version that resolves this vulnerability.Fixed in 1.22.2 - Upgrade
Upgrade
go/github.com/kubeedge/kubeedgeto a version that resolves this vulnerability.Fixed in 1.21.2 - Upgrade
Upgrade
KubeEdgeto a version that resolves this vulnerability.Fixed in v1.21.2 - Upgrade
Upgrade
KubeEdgeto a version that resolves this vulnerability.Fixed in v1.22.2 - Upgrade
Upgrade
KubeEdgeto a version that resolves this vulnerability.Fixed in v1.23.1 - Compensating control
Avoid using NodeUpgradeJob-based edge upgrades where the spec.version or spec.image fields may be influenced by untrusted users; do not allow untrusted users or tenants to control those fields.
- Compensating control
Restrict permission to create or update NodeUpgradeJob resources through the v1alpha2 API to trusted administrators.
Event History
Frequently Asked Questions
Which deployments are exposed to exploitation?
Deployments using the v1alpha2 NodeUpgradeJob API are exposed if an authenticated principal can create or update NodeUpgradeJob resources and can influence the spec.version or spec.image fields. The injected command executes when the upgrade job is processed for a targeted edge node.
What access does an attacker need?
An attacker needs authenticated permission to create or update NodeUpgradeJob resources through the v1alpha2 API. No user interaction is required after the malicious upgrade job is processed.
Which versions contain the fix?
The issue is fixed in KubeEdge v1.23.1, v1.22.2, and v1.21.2. The fix uses structured keadm arguments rather than constructing a shell command from version and image values.
What can be done before patching?
Restrict create and update permissions for NodeUpgradeJob resources to trusted administrators. Do not permit untrusted users or tenants to control the version or image fields in those resources.