istiod
v1.26.1
2 Service Accounts
1 Workloads
77 Bindings
5 Critical
20 High
7 Medium
45 Low
Description
Helm chart for istio control plane
Overview
Identity | Namespace | Automount | Secrets | Permissions | Workloads | Risk |
---|---|---|---|---|---|---|
istiod | istio-system | ❌ | — | 52 | 1 | Critical |
Numbers in the last two columns indicate how many bindings or workloads involve each ServiceAccount.
Identities
🤖 istiod
Namespace: istio-system
| Automount: ❌
🔑 Permissions (52)
Role | Resource | Verbs | Risk | Tags |
---|---|---|---|---|
ClusterRole istiod-gateway-controller-default | apps/deployments | create · delete · get · list · patch · update · watch | Critical | Persistence PotentialPrivilegeEscalation PrivilegeEscalation Tampering WorkloadLifecycle |
ClusterRole istiod-clusterrole-default | core/secrets | get · list · watch | Critical | ClusterWideSecretAccess CredentialAccess DataExposure InformationDisclosure SecretAccess |
Role istiod | core/secrets | create · delete · get · list · update · watch | Critical | CredentialAccess DataExposure InformationDisclosure SecretAccess |
ClusterRole istiod-gateway-controller-default | core/services | create · delete · get · list · patch · update · watch | Critical | DenialOfService NetworkManipulation ServiceExposure Tampering |
ClusterRole istiod-clusterrole-default | authentication.istio.io/* | get · list · watch | High | ClusterWideAccess |
ClusterRole istiod-clusterrole-default | config.istio.io/* | get · list · watch | High | ClusterWideAccess |
ClusterRole istiod-clusterrole-default | extensions.istio.io/* | get · list · watch | High | ClusterWideAccess |
ClusterRole istiod-clusterrole-default | gateway.networking.k8s.io/* | get · list · watch | High | ClusterWideAccess |
ClusterRole istiod-clusterrole-default | gateway.networking.x-k8s.io/* | get · list · watch | High | ClusterWideAccess |
ClusterRole istiod-clusterrole-default | networking.istio.io/* | get · list · watch | High | ClusterWideAccess |
ClusterRole istiod-clusterrole-default | rbac.istio.io/* | get · list · watch | High | ClusterWideAccess |
ClusterRole istiod-clusterrole-default | security.istio.io/* | get · list · watch | High | ClusterWideAccess |
ClusterRole istiod-clusterrole-default | telemetry.istio.io/* | get · list · watch | High | ClusterWideAccess |
ClusterRole istiod-clusterrole-default | core/configmaps | create · get · list · update · watch | High | ConfigMapAccess DataExposure InformationDisclosure |
ClusterRole istiod-clusterrole-default | networking.k8s.io/ingresses/status | * | High | ClusterWideAccess |
ClusterRole istiod-gateway-controller-default | core/serviceaccounts | create · delete · get · list · patch · update · watch | High | IdentityManagement PotentialPrivilegeEscalation Tampering |
ClusterRole istiod-clusterrole-default | admissionregistration.k8s.io/mutatingwebhookconfigurations | get · list · patch · update · watch | Medium | InformationDisclosure Reconnaissance WebhookReconnaissance |
ClusterRole istiod-gateway-controller-default | policy/poddisruptionbudgets | create · delete · get · list · patch · update · watch | Medium | AvailabilityImpact DenialOfService Tampering |
ClusterRole istiod-clusterrole-default | authorization.k8s.io/subjectaccessreviews | create | Medium | InformationDisclosure RBACQuery |
ClusterRole istiod-clusterrole-default | authentication.k8s.io/tokenreviews | create | Medium | CredentialAccess InformationDisclosure RBACQuery |
ClusterRole istiod-clusterrole-default | admissionregistration.k8s.io/validatingwebhookconfigurations | get · list · update · watch | Medium | InformationDisclosure Reconnaissance WebhookReconnaissance |
ClusterRole istiod-clusterrole-default | security.istio.io/authorizationpolicies/status | create · delete · get · list · patch · update · watch | Low | |
ClusterRole istiod-clusterrole-default | gateway.networking.k8s.io/backendtlspolicies/status | patch · update | Low | |
Role istiod | core/configmaps | delete | Low | |
ClusterRole istiod-clusterrole-default | apiextensions.k8s.io/customresourcedefinitions | get · list · watch | Low | |
ClusterRole istiod-clusterrole-default | core/endpoints | get · list · watch | Low | |
ClusterRole istiod-clusterrole-default | discovery.k8s.io/endpointslices | get · list · watch | Low | |
ClusterRole istiod-clusterrole-default | gateway.networking.k8s.io/gatewayclasses | create · delete · patch · update | Low | |
ClusterRole istiod-clusterrole-default | gateway.networking.k8s.io/gatewayclasses/status | patch · update | Low | |
Role istiod | networking.istio.io/gateways | create | Low | |
ClusterRole istiod-clusterrole-default | gateway.networking.k8s.io/gateways/status | patch · update | Low | |
ClusterRole istiod-clusterrole-default | gateway.networking.k8s.io/grpcroutes/status | patch · update | Low | |
ClusterRole istiod-gateway-controller-default | autoscaling/horizontalpodautoscalers | create · delete · get · list · patch · update · watch | Low | |
ClusterRole istiod-clusterrole-default | gateway.networking.k8s.io/httproutes/status | patch · update | Low | |
ClusterRole istiod-clusterrole-default | networking.k8s.io/ingressclasses | get · list · watch | Low | |
ClusterRole istiod-clusterrole-default | networking.k8s.io/ingresses | get · list · watch | Low | |
Role istiod | coordination.k8s.io/leases | create · get · patch · update | Low | |
ClusterRole istiod-clusterrole-default | core/namespaces | get · list · watch | Low | ClusterStructure InformationDisclosure Reconnaissance |
ClusterRole istiod-clusterrole-default | core/nodes | get · list · watch | Low | |
ClusterRole istiod-clusterrole-default | core/pods | get · list · watch | Low | |
ClusterRole istiod-clusterrole-default | gateway.networking.k8s.io/referencegrants/status | patch · update | Low | |
ClusterRole istiod-clusterrole-default | networking.istio.io/serviceentries/status | create · delete · get · list · patch · update · watch | Low | |
ClusterRole istiod-clusterrole-default | multicluster.x-k8s.io/serviceexports | create · delete · get · list · watch | Low | |
ClusterRole istiod-clusterrole-default | multicluster.x-k8s.io/serviceimports | get · list · watch | Low | |
ClusterRole istiod-clusterrole-default | core/services | get · list · watch | Low | |
ClusterRole istiod-clusterrole-default | core/services/status | create · delete · get · list · patch · update · watch | Low | |
ClusterRole istiod-clusterrole-default | gateway.networking.k8s.io/tcproutes/status | patch · update | Low | |
ClusterRole istiod-clusterrole-default | gateway.networking.k8s.io/tlsroutes/status | patch · update | Low | |
ClusterRole istiod-clusterrole-default | gateway.networking.k8s.io/udproutes/status | patch · update | Low | |
ClusterRole istiod-clusterrole-default | networking.istio.io/workloadentries | create · delete · get · list · patch · update · watch | Low | |
ClusterRole istiod-clusterrole-default | networking.istio.io/workloadentries/status | create · delete · get · list · patch · update · watch | Low | |
ClusterRole istiod-clusterrole-default | gateway.networking.x-k8s.io/xbackendtrafficpolicies/status | patch · update | Low |
⚠️ Potential Abuse (18)
The following security risks were found based on the above permissions:
- Read secrets cluster-wide
- Read secrets in a namespace
- Read ConfigMaps cluster-wide
- Read ConfigMaps in a namespace
- Manage Deployments cluster-wide (potential for privileged pod execution)
- Manage Deployments in a namespace (potential for privileged pod execution)
- Create TokenReviews (validate arbitrary tokens)
- Create SubjectAccessReviews (check arbitrary permissions)
- Manage ServiceAccounts cluster-wide
- Manage ServiceAccounts in a namespace
- Manage Services cluster-wide
- Manage Services in a namespace
- Manage PodDisruptionBudgets cluster-wide
- List Namespaces (Cluster Reconnaissance)
- List ValidatingWebhookConfigurations (Reconnaissance)
- List MutatingWebhookConfigurations (Reconnaissance)
📦 Workloads (1)
Kind | Name | Container | Image |
---|---|---|---|
Deployment | istiod | discovery | docker.io/istio/pilot:1.26.1 |