CVE-2023-30617
Official description Straight from the sourceThe vendor's or NVD's own wording, published unedited. Authoritative, but often terse — it says what broke, rarely what to do.
NVD · uneditedKruise provides automated management of large-scale applications on Kubernetes. Starting in version 0.8.0 and prior to versions 1.3.1, 1.4.1, and 1.5.2, an attacker who has gained root privilege of the node that kruise-daemon run can leverage the kruise-daemon pod to list all secrets in the entire cluster. After that, the attacker can leverage the "captured" secrets (e.g. the kruise-manager service account token) to gain extra privileges such as pod modification. Versions 1.3.1, 1.4.1, and 1.5.2 fix this issue. A workaround is available. For users that do not require imagepulljob functions, they can modify kruise-daemon-role to drop the cluster level secret get/list privilege.
Technical summary Written by usOur analysis, written from the advisory, the CVSS vector and the affected-version data. It adds context the advisory leaves out, and never invents facts that are not in the source.
dbcve analysis · high confidenceThis is a privilege escalation vulnerability in Kruise's kruise-daemon component. The kruise-daemon pod (which runs on each node) is granted excessive RBAC permissions allowing it to list all secrets cluster-wide. An attacker who has already gained root access to a node can exploit these permissions to retrieve secrets (including service account tokens like kruise-manager's), then use those credentials to perform unauthorized actions like pod modification.
Verify against the referenced sources before acting — the references below are authoritative for this CVE, this summary is not.
Affected products & versions What the vendor confirmedThe version ranges the vendor confirmed as vulnerable. If your version sits inside a range here, treat yourself as exposed until you have upgraded.
NVD · CPE data>= 0.8.0, < 1.3.1>= 1.4.0, < 1.4.1>= 1.5.0, < 1.5.2CVSS breakdown How the score is builtThe industry scoring standard. It rates how the flaw is reached, what it takes to exploit, and what an attacker gains — the score is derived from those, not the other way round.
From the vector- Attack vector
- Network
- Complexity
- Low
- Privileges
- High
- User interaction
- None
- Scope
- Unchanged
- Confidentiality
- High
- Integrity
- High
- Availability
- None
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N
Am I affected? How to checkSteps we derive from the advisory and the affected-version data, so you can decide whether this CVE reaches your setup. They are a guide, not a scan — your own configuration is the authority.
dbcve checksWork through these to decide whether this CVE applies to you.
-
Identify Kruise installation and versionRun 'kubectl get deployment -n kruise-system' and check the version label, or run 'kubectl get pods -n kruise-system -o jsonpath="{.items[*].spec.containers[*].image}"' to see the kruise-manager image versionAffected if The installed version falls within >= 0.8.0 and < 1.3.1, >= 1.4.0 and < 1.4.1, or >= 1.5.0 and < 1.5.2
-
Verify kruise-daemon is deployedRun 'kubectl get daemonset -n kruise-system' or 'kubectl get pods -n kruise-system -l app=kruise-daemon' to confirm kruise-daemon is running on nodesAffected if kruise-daemon pods exist in the kruise-system namespace, indicating the vulnerable component is present
-
Examine kruise-daemon ClusterRole permissionsRun 'kubectl get clusterrole kruise-daemon -o yaml' and inspect the rules section, specifically looking for 'resources: [secrets]' with 'verbs: [get, list]' at cluster scopeAffected if The ClusterRole grants cluster-wide (non-namespaced) 'get' or 'list' permissions on secrets
-
Check if imagepulljob feature is enabledInspect the kruise-manager deployment: 'kubectl get deployment kruise-manager -n kruise-system -o yaml' and look for feature gates or the imagepulljob-related configuration. Alternatively, check if any ImagePullJob resources exist: 'kubectl get imagepulljobs -A'Affected if ImagePullJob feature is enabled or ImagePullJob resources exist, which requires the secret permissions that could be exploited
-
Confirm cluster-wide secret access scopeReview the ClusterRole rules for kruise-daemon: 'kubectl auth can-i list secrets --clusterrole=kruise-daemon --namespace=kruise-system' and test from a non-kruise namespace to confirm cluster-wide accessAffected if The kruise-daemon service account can list secrets across all namespaces (cluster-scoped), not just within kruise-system
If kruise-daemon is running with a version in the affected ranges and its ClusterRole grants cluster-wide secret get/list permissions, the environment is vulnerable to privilege escalation through secret theft.
Generated from the published advisory. Verify against your own configuration.
Remediation Closing itWhat it takes to close this. Where a vendor fix exists we point at it; where none exists we say so plainly, and can build one. Effort estimates are scoped from the advisory, not from your codebase.
dbcve · scoped1.3.11.4.11.5.2
Upgrade to versions 1.3.1, 1.4.1, or 1.5.2 which contain the fix. Alternatively, if the imagepulljob feature is not required, modify the kruise-daemon-role to remove the cluster-level secret get and list privileges.
1.5.2 (or 1.4.1 if staying on 1.4.x, or 1.3.1 if staying on 1.3.x)
- 1. Identify the current Kruise installation version using `kubectl get deployment -n kruise-system` or checking your infrastructure-as-code configuration
- 2. Determine the appropriate target version based on your current major.minor version: if on 1.5.x upgrade to >=1.5.2, if on 1.4.x upgrade to >=1.4.1, if on 1.3.x upgrade to >=1.3.1, otherwise upgrade to 1.5.2
- 3. Backup your current Kruise configuration: `kubectl get all -n kruise-system -o yaml > kruise-backup.yaml`
- 4. Upgrade Kruise to the fixed version using your installation method (Helm, kubectl, or OLM)
- 5. Verify the upgrade succeeded: `kubectl get pods -n kruise-system` and ensure all pods are Running
- 6. Confirm the vulnerability is fixed by verifying the kruise-daemon-role no longer has unnecessary cluster-scoped secret permissions: `kubectl get clusterrole kruise-daemon -o yaml` and check that secret get/list is removed or scoped appropriately
- 7. Test that core Kruise functionality (like SidecarSet, BroadcastJob, etc.) still works correctly
Generated from the published advisory — verify against the referenced sources before acting.
- Consultation2.0 h
- Implementation1.0 h
- Testing2.0 h
- Review / QA1.0 h
An estimate, not a bill — we confirm scope with you before any work starts. Need it this week? Rush from $1,696.
Scan for this in your stack
Free · runs locallyCheck whether your project pulls in CVE-2023-30617 — or any other known-vulnerable package — straight from your lock files. Free and open source; it runs locally and uploads nothing.
References Go to the primary sourcePrimary sources — vendor advisories, patches and trackers. Where our summary and a reference disagree, the reference wins.
Primary sourcesPractitioner notes
ContributedPeer-ranked notes from engineers who’ve handled CVE-2023-30617 in production — separate from our analysis above.
The advisory tells you what broke. It rarely tells you what actually worked. If you’ve dealt with this one, that detail is what the next engineer is searching for.
- The version that genuinely resolved it — not the one the vendor claimed
- A config change or rule that shut the vector down
- A gotcha in the upgrade path that cost you an afternoon
No notes yet
Be the first to add a field note for this CVE — a mitigation you’ve verified, a version caveat, or a link to a working fix. Sign in above to contribute.
A place for practitioners to share what actually worked: a mitigation you’ve tested, a configuration change, a version- or environment-specific caveat, or a link to a verified patch. The most useful notes rise to the top as peers upvote them, so the signal stays high.
- Verified mitigations, workarounds, and config changes
- Version or environment caveats, and links to real fixes
- No weaponised exploit code, or anything meant to cause harm
- No spam, self-promotion, credentials, or personal data