Un penetration tester ha ottenuto accesso root al nostro cluster Kubernetes in 15 minuti. Ecco cosa hanno sfruttato. La catena di attacco: - Trovato il dashboard Kubernetes esposto (nostra colpa) - Il dashboard aveva un account di servizio in sola lettura (pensavamo fosse sicuro) - L'account di servizio poteva elencare i segreti in tutti i namespace - Trovate credenziali AWS in un segreto - Usate le credenziali AWS per accedere al profilo dell'istanza EC2 - Il profilo dell'istanza aveva pieno accesso amministrativo a Kubernetes tramite IAM - Usato kubectl per creare un pod privilegiato - Fuggito al nodo - Accesso root all'intero cluster Cosa pensavamo di aver fatto bene: - Il dashboard era in sola lettura - I segreti erano crittografati a riposo - Le politiche di rete erano in atto - Aggiornamenti di sicurezza regolari Cosa abbiamo trascurato: - Il dashboard non dovrebbe essere esposto affatto - Gli account di servizio devono seguire il principio del minimo privilegio - I segreti non dovrebbero contenere credenziali AWS (usare IRSA invece) - Le politiche di sicurezza dei pod non erano applicate - L'accesso al nodo non era rinforzato La soluzione ha richiesto 2 settimane: - Rimosso completamente il dashboard Kubernetes - Implementato IRSA per tutto l'accesso AWS dei pod - Applicate rigide PSP/Standard di Sicurezza dei Pod...