Register a fake Node object with status.addresses[InternalIP] = API server internal IP and daemonEndpoints.kubeletEndpoint.Port = 6443
Proxy a request through the fake node by running kubectl get --raw /api/v1/nodes/evil-node/proxy/api/v1/secrets
The API server proxies outbound to that address using its apiserver-kubelet-client certificate, so it authenticates to itself
Before kubeadm 1.29 the certificate carried O=system:masters.
From 1.29 it carried O=kubeadm:cluster-admins, a group bound to cluster-admin, so the inner request still returned full cluster access
Current kubeadm drops the certificate's Organization and binds the User named by its CommonName to the system:kubelet-api-admin ClusterRole, so the request reaches the node API, not cluster-admin
The redirection itself is unchanged by that fix, so the API server can still be pointed at an attacker-chosen address
Post-fix, the gain is network position rather than RBAC, since triggering it already requires get on nodes/proxy.
The API server reaches addresses the caller cannot, under its own identity
On a managed control plane the fabricated Node is deleted by cloud node lifecycle within seconds, and the dial to the API server own address does not complete
Rights needed:
· the Node object is inert until proxied to
Note:
Those releases narrow the certificate to system:kubelet-api-admin, which removes the cluster-admin outcome but not the redirection.
kubernetes#119270 is still open, reopened for audit re-evaluation.
1.32 reached end of life first, so it stays vulnerable.
No CVE covers this path.

