Mitigates the Kubernetes Nodes/Proxy GET RCE by enforcing an Istio sidecar outbound filter that blocks WebSocket upgrades to the kubelet (port 10250).
ServiceEntry+DestinationRulein the Istio config namespace for a statickubelet.internalservice mapping to node IPs.EnvoyFilterobjects in target namespaces that:- inspect TLS on outbound port 10250,
- terminate TLS in the sidecar,
- block WebSocket
Upgraderequests with a 403 response, - forward other traffic to
kubelet.internalover HTTPS.
- Kubernetes cluster with Istio installed (CRDs for
EnvoyFilter,ServiceEntry,DestinationRule). - Sidecar injection enabled for the workloads you want to protect.
- Node (kubelet) internal IPs available (
kubectl get nodes -o wide).
Review defaults:
helm show values oci://registry.kolteq.com/nodes-proxy-get-rce-fix/nodes-proxy-get-rce-fix --version 0.1.0Minimal values example:
configNamespace: istio-system
kubeletIps:
- 10.142.0.4
- 10.142.0.5
enforcements:
- namespace: app-ns
workloads:
- name: block-nginx
labels:
app: nginxKey values:
configNamespace: Namespace for Istio config (ServiceEntry,DestinationRule), typicallyistio-system.kubeletIps: List of kubelet node IPs (one entry per node).enforcements: List of namespaces and workload selectors to apply theEnvoyFilterto.
Install the Helm chart.
helm install kolteq-nodes-proxy-get-rce-fix oci://registry.kolteq.com/nodes-proxy-get-rce-fix/nodes-proxy-get-rce-fix --version 0.1.0 -f values.yaml