10 de septiembre de 2019

DNS spoofing en Kubernetes

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