Kruise provides automated management of large-scale applications on Kubernetes. Prior to versions 1.8.3 and 1.7.5, PodProbeMarker allows defining custom probes with TCPSocket or HTTPGet handlers. The webhook validation does not restrict the Host field in these probe configurations. Since kruise-daemon runs with hostNetwork=true, it executes probes from the node network namespace. An attacker with PodProbeMarker creation permission can specify arbitrary Host values to trigger SSRF from the node, perform port scanning, and receive response feedback through NodePodProbe status messages. Versions 1.8.3 and 1.7.5 patch the issue.
Affected: Go: github.com/openkruise/kruise
## Summary
PodProbeMarker allows defining custom probes with TCPSocket or HTTPGet handlers. The webhook validation does not restrict the Host field in these probe configurations. Since kruise-daemon runs with hostNetwork=true, it executes probes from the node network namespace. An attacker with PodProbeMarker creation permission can specify arbitrary Host values (127.0.0.1, 169.254.169.254, internal IPs) to trigger SSRF from the node, perform port scanning, and receive response feedback through NodePodProbe status messages.
## Kubernetes Version
- Kubernetes: v1.30.0 (kind cluster) - Distribution: kind
## Component Version
- OpenKruise: v1.8.0 - kruise-daemon: DaemonSet with hostNetwork=true - Affected CRDs: PodProbeMarker, NodePodProbe
## Steps To Reproduce
### Environment Setup
1. Install OpenKruise v1.8.0 in kind cluster: ```bash helm repo add openkruise https://openkruise.github.io/charts/ helm install kruise openkruise/kruise --version 1.8.0 \ --namespace kruise-system --create-namespace ```
2. Verify kruise-daemon runs with hostNetwork: ```bash kubectl -n kruise-system get ds kruise-daemon -o yaml | grep hostNetwork ``` Output: ``` hostNetwork: true ```
3. Create test namespace and RBAC: ```bash kubectl apply -f - <<EOF apiVersion: v1 kind: Namespace metadata: name: tenant-a --- apiVersion: v1 kind: ServiceAccount metadata: name: attacker namespace: tenant-a --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: ppm-creator namesp…