一名渗透测试员在15分钟内获得了我们Kubernetes集群的root访问权限。以下是他们利用的内容。 攻击链: - 找到了暴露的Kubernetes仪表板(我们的错) - 仪表板有只读服务账户(我们认为这很安全) - 服务账户可以列出所有命名空间的秘密 - 在一个秘密中找到了AWS凭证 - 使用AWS凭证访问EC2实例配置文件 - 实例配置文件通过IAM拥有完全的Kubernetes管理员权限 - 使用kubectl创建特权pod - 逃逸到节点 - 获得整个集群的root访问权限 我们认为做对的事情: - 仪表板是只读的 - 秘密在静态时是加密的 - 网络策略已到位 - 定期进行安全更新 我们错过的地方: - 仪表板根本不应该暴露 - 服务账户需要最小权限原则 - 秘密不应该包含AWS凭证(使用IRSA代替) - Pod安全策略未得到执行 - 节点访问未得到加固 修复花费了2周: - 完全移除了Kubernetes仪表板 - 为所有pod的AWS访问实施了IRSA - 应用了严格的PSP/Pod安全标准...