Los permisos por
defecto en los clusters de Kubernetes permiten realizar ARP spoofing, que entre
otros riesgos deja tomar el control del DNS
Tal y como ha
demostrado el analista de seguridad Daniel Sagi, el diseño de red de Kubernetes
junto con los permisos por defecto permite a cualquier pod realizar DNS
spoofing al resto de pods del cluster. Este tipo de ataques suplantan el
servidor DNS para que las máquinas en vez de resolver al dominio deseado
realicen la conexión a un servicio controlado por el atacante.
Para su
funcionamiento, se aprovecha que Kubernetes concede por defecto el permiso
‘NET_RAW’ (el cual puede comprobarse con el comando ‘pscap -a’) con el que
pueden enviarse paquetes ARP y DNS en bruto. Conceder el permiso para paquetes
ARP sin restricciones permite realizar ataques ‘SPF Spoofing’, un tipo de
ataque con el que engañar el resto de pods para hacerles creer que la IP del
atacante es la del DNS del cluster.
El analista que ha
alertado de esta vulnerabilidad ha subido a Github una Prueba de Concepto (PoC)
para poder comprobar si somos vulnerables, además de un vídeo demostrando la
explotación. Un posible ejemplo de explotación sería tomar el control del DNS
para suplantar a un servicio web del cluster y recibir las peticiones del resto
de pods.
Código a emplear para
deshabilitar el permiso. Fuente: Aquasec.
Para mitigar esta
vulnerabilidad puede deshabilitarse el permiso de ‘NET_RAW’ en los pods, el
cual está permitido por defecto. Para ello puede usarse el código de la imagen
superior. Este permiso, el cual resulta muy peligroso debería encontrarse
bloqueado por defecto en Kubernetes para evitar posibles riesgos de seguridad.
Más información:
DNS Spoofing on
Kubernetes Clusters: https://blog.aquasec.com/dns-spoofing-kubernetes-clusters
Fuente: Hispasec