2 Service Accounts
2 Workloads
55 Bindings
9 Critical
14 High
2 Medium
30 Low
Description
KubeStash, Kubernetes native backup operator by AppsCode
Overview
| Identity | Namespace | Automount | Secrets | Permissions | Workloads | Risk |
|---|---|---|---|---|---|---|
kubestash-operator | default | ❌ | — | 49 | 3 | Critical |
kubestash-operator-cleaner | default | ❌ | — | 6 | 1 | High |
Numbers in the last two columns indicate how many bindings or workloads involve each ServiceAccount.
Identities
🤖 kubestash-operator
Namespace: default | Automount: ❌
🔑 Permissions (49)
| Role | Resource | Verbs | Risk | Tags |
|---|---|---|---|---|
ClusterRole kubestash-operator | rbac.authorization.k8s.io/clusterrolebindings | create · delete · get · list · patch · update · watch | Critical | BindingToPrivilegedRole ClusterAdminAccess InformationDisclosure PrivilegeEscalation RBACManipulation (+2 more) |
ClusterRole kubestash-operator | rbac.authorization.k8s.io/clusterroles | create · delete · get · list · patch · update · watch | Critical | ClusterAdminAccess InformationDisclosure PrivilegeEscalation RBACManipulation RBACQuery (+1 more) |
ClusterRole kubestash-operator | batch/cronjobs | create · delete · get · list · patch · update · watch | Critical | Persistence PotentialPrivilegeEscalation PrivilegeEscalation Tampering WorkloadLifecycle |
ClusterRole kubestash-operator | batch/jobs | create · delete · get · list · patch · update · watch | Critical | PotentialPrivilegeEscalation PrivilegeEscalation Tampering WorkloadLifecycle |
Role kubestash-operator-leader-election | coordination.k8s.io/leases | create · delete · get · list · patch · update · watch | Critical | ControlPlaneDisruption CriticalNamespace DenialOfService Tampering |
ClusterRole kubestash-operator | admissionregistration.k8s.io/mutatingwebhookconfigurations | * | Critical | ClusterWideAccess DenialOfService InformationDisclosure PrivilegeEscalation Reconnaissance (+4 more) |
ClusterRole kubestash-operator | core/pods/exec | create | Critical | ClusterWidePodExec CodeExecution ElevationOfPrivilege LateralMovement PodExec (+1 more) |
ClusterRole kubestash-operator | core/secrets | create · delete · get · list · patch · watch | Critical | ClusterWideSecretAccess CredentialAccess DataExposure InformationDisclosure SecretAccess |
ClusterRole kubestash-operator | admissionregistration.k8s.io/validatingwebhookconfigurations | * | Critical | ClusterWideAccess DenialOfService InformationDisclosure Reconnaissance Tampering (+3 more) |
ClusterRole kubestash-operator | addons.kubestash.com/* | * | High | ClusterWideAccess |
ClusterRole kubestash-operator | appcatalog.appscode.com/* | get · list · watch | High | ClusterWideAccess |
ClusterRole kubestash-operator | config.kubestash.com/* | * | High | ClusterWideAccess |
ClusterRole kubestash-operator | core.kubestash.com/* | * | High | ClusterWideAccess |
ClusterRole kubestash-operator | kubedb.com/* | * | High | ClusterWideAccess |
ClusterRole kubestash-operator | snapshot.storage.k8s.io/* | * | High | ClusterWideAccess |
ClusterRole kubestash-operator | storage.kubestash.com/* | * | High | ClusterWideAccess |
Role kubestash-operator-leader-election | core/configmaps | create · delete · get · list · patch · update · watch | High | ConfigMapAccess DataExposure InformationDisclosure PotentialPrivilegeEscalation Tampering |
ClusterRole kubestash-operator | rbac.authorization.k8s.io/rolebindings | create · delete · get · list · patch · update · watch | High | BindingToPrivilegedRole InformationDisclosure PrivilegeEscalation RBACManipulation RBACQuery (+1 more) |
ClusterRole kubestash-operator | rbac.authorization.k8s.io/roles | create · delete · get · list · patch · update · watch | High | InformationDisclosure PrivilegeEscalation RBACManipulation RBACQuery Reconnaissance |
ClusterRole kubestash-operator | core/serviceaccounts | create · delete · get · list · patch · update · watch | High | IdentityManagement PotentialPrivilegeEscalation Tampering |
ClusterRole kubestash-operator-auth-proxy | authorization.k8s.io/subjectaccessreviews | create | Medium | InformationDisclosure RBACQuery |
ClusterRole kubestash-operator-auth-proxy | authentication.k8s.io/tokenreviews | create | Medium | CredentialAccess InformationDisclosure RBACQuery |
ClusterRole appscode:license-reader | apiregistration.k8s.io/apiservices | get | Low | |
ClusterRole kubestash-operator | appcatalog.appscode.com/appbindings | get · list · watch | Low | |
ClusterRole kubestash-operator | apiextensions.k8s.io/customresourcedefinitions | create · get · patch · update | Low | |
ClusterRole kubestash-operator | apps/daemonsets | get · list · watch | Low | |
ClusterRole appscode:license-checker | apps/deployments | get | Low | |
ClusterRole kubestash-operator | apps/deployments | create · get · list · patch · update · watch | Low | |
ClusterRole kubestash-operator | elasticsearch.kubedb.com/elasticsearchdashboards | list | Low | |
ClusterRole kubestash-operator | catalog.kubedb.com/elasticsearchs | get · list · watch | Low | |
ClusterRole kubestash-operator | core/endpoints | get · list · watch | Low | |
ClusterRole appscode:license-checker | core/events | create · get · list · patch | Low | |
ClusterRole kubestash-operator | core/events | create | Low | |
Role kubestash-operator-leader-election | core/events | create · patch | Low | |
ClusterRole appscode:license-checker | proxyserver.licenses.appscode.com/licenserequests | create | Low | |
ClusterRole appscode:license-checker | core/namespaces | get · list · watch | Low | ClusterStructure InformationDisclosure Reconnaissance |
ClusterRole kubestash-operator | core/namespaces | get · list · watch | Low | ClusterStructure InformationDisclosure Reconnaissance |
ClusterRole appscode:license-checker | core/nodes | get · list · watch | Low | |
ClusterRole kubestash-operator | core/nodes | get · list · watch | Low | |
ClusterRole kubestash-operator | core/persistentvolumeclaims | create · delete · get · list · patch · update · watch | Low | |
ClusterRole kubestash-operator | core/persistentvolumes | create · delete · get · list · patch · update · watch | Low | |
ClusterRole appscode:license-checker | core/pods | get | Low | |
ClusterRole kubestash-operator | core/pods | get · list · watch | Low | |
ClusterRole appscode:license-checker | apps/replicasets | get | Low | |
ClusterRole kubestash-operator | apps/replicasets | get · list · watch | Low | |
ClusterRole kubestash-operator | core/services | get · list · watch | Low | |
ClusterRole kubestash-operator | apps/statefulsets | get · list · watch | Low | |
ClusterRole kubestash-operator | storage.k8s.io/storageclasses | get · list · watch | Low | |
ClusterRole kubestash-operator | snapshot.storage.k8s.io/volumesnapshots | delete · get | Low |
⚠️ Potential Abuse (27)
The following security risks were found based on the above permissions:
- Cluster-wide pod exec
- Namespaced pod exec
- Read secrets cluster-wide
- Read secrets in a namespace
- Read ConfigMaps in a namespace
- Modify ConfigMaps in a namespace
- Manage ClusterRoles (create, update, patch, delete)
- Manage ClusterRoleBindings (create, update, patch, delete)
- Manage Roles in a namespace (create, update, patch, delete)
- Manage RoleBindings in a namespace (create, update, patch, delete)
- Manage CronJobs cluster-wide (scheduled privileged execution, persistence)
- Manage CronJobs in a namespace (scheduled privileged execution, persistence)
- Manage Jobs cluster-wide (one-off privileged execution)
- Manage Jobs in a namespace (one-off privileged execution)
- Manage MutatingWebhookConfigurations
- Manage ValidatingWebhookConfigurations
- Create TokenReviews (validate arbitrary tokens)
- Create SubjectAccessReviews (check arbitrary permissions)
- Manage ServiceAccounts cluster-wide
- Manage ServiceAccounts in a namespace
- Read RBAC configuration cluster-wide
- Manage Leases in kube-system or kube-node-lease namespace
- List Namespaces (Cluster Reconnaissance)
- List ValidatingWebhookConfigurations (Reconnaissance)
- List MutatingWebhookConfigurations (Reconnaissance)
📦 Workloads (3)
| Kind | Name | Container | Image |
|---|---|---|---|
| Deployment | kubestash-operator-operator | operator | ghcr.io/kubestash/kubestash:v0.8.1 |
| Deployment | kubestash-operator-webhook-server | kube-rbac-proxy | ghcr.io/appscode/kube-rbac-proxy:v0.11.0 |
| Deployment | kubestash-operator-webhook-server | webhook-server | ghcr.io/kubestash/kubestash:v0.8.1 |
🤖 kubestash-operator-cleaner
Namespace: default | Automount: ❌
🔑 Permissions (6)
| Role | Resource | Verbs | Risk | Tags |
|---|---|---|---|---|
ClusterRole kubestash-operator-cleaner | addons.kubestash.com/* | delete | High | ClusterWideAccess |
ClusterRole kubestash-operator-cleaner | core.kubestash.com/* | delete | High | ClusterWideAccess |
ClusterRole kubestash-operator-cleaner | storage.kubestash.com/* | delete | High | ClusterWideAccess |
ClusterRole kubestash-operator-cleaner | batch/jobs | delete | Low | |
ClusterRole kubestash-operator-cleaner | admissionregistration.k8s.io/mutatingwebhookconfigurations | delete | Low | |
ClusterRole kubestash-operator-cleaner | admissionregistration.k8s.io/validatingwebhookconfigurations | delete | Low |
⚠️ Potential Abuse (2)
The following security risks were found based on the above permissions:
📦 Workloads (1)
| Kind | Name | Container | Image |
|---|---|---|---|
| Job | kubestash-operator-cleaner | busybox | ghcr.io/appscode/kubectl:v1.24 |