Un probador de penetración obtuvo acceso raíz a nuestro clúster de Kubernetes en 15 minutos. Esto es lo que explotaron. La cadena de ataque: - Se encontró un panel de control de Kubernetes expuesto (nuestro error) - El panel tenía una cuenta de servicio de solo lectura (pensamos que era seguro) - La cuenta de servicio podría enumerar secretos en todos los espacios de nombres - Se encontraron las credenciales de AWS en un secreto - Credenciales de AWS utilizadas para acceder al perfil de instancia EC2 - El perfil de instancia tenía un administrador completo de Kubernetes a través de IAM - Se usó kubectl para crear pods privilegiados - Escapó al nodo - Acceso raíz a todo el clúster Lo que pensamos que hicimos bien: - El panel era de solo lectura - Los secretos se cifraron en reposo - Se implementaron políticas de red - Actualizaciones de seguridad periódicas Lo que nos perdimos: - El panel no debe estar expuesto en absoluto - Las cuentas de servicio necesitan el principio de privilegios mínimos - Los secretos no deben contener credenciales de AWS (use IRSA en su lugar) - No se aplicaron las políticas de seguridad de los pods - El acceso a los nodos no se ha reforzado La solución tardó 2 semanas: - Se eliminó por completo el panel de Kubernetes - Implementó IRSA para todos los accesos de AWS de pods - Aplicación de estrictos estándares de seguridad de PSP/Pod...