O Kubernetes tornou-se, de longe, o sistema mais popular de orquestração de contêineres em nuvem. Portanto, era apenas uma questão de tempo até que sua primeira grande falha de segurança fosse descoberta. E o bug, CVE-2018-1002105, também conhecido como a falha de escalação de privilégios do Kubernetes, é um problema. É um buraco de segurança crítico do CVSS 9.8. Confira que foi descoberta a primeira grande falha de segurança de Kubernetes.
Detalhes da falha
Com uma solicitação de rede especialmente criada, qualquer usuário pode estabelecer uma conexão por meio do servidor de interface de programação de aplicativos (API) do Kubernetes para um servidor de back-end. Uma vez estabelecido, um invasor pode enviar solicitações arbitrárias pela conexão de rede diretamente para esse back-end. Essas solicitações são autenticadas com as credenciais TLS (Transport Layer Security) do servidor Kubernetes API.
Pior ainda: nas configurações padrão, todos os usuários (autenticados ou não) podem executar chamadas de API de descoberta que permitem esse escalonamento. Então, qualquer um que conheça esse buraco pode assumir o comando do seu cluster do Kubernetes.
Não há uma maneira simples de detectar se essa vulnerabilidade foi usada. Como as solicitações não autorizadas são feitas em uma conexão estabelecida, elas não aparecem nos registros de auditoria do servidor da API do Kubernetes ou no log do servidor. As solicitações aparecem nos logs do kubelet ou do servidor de API agregado, mas são diferenciadas das solicitações corretamente autorizadas e enviadas por proxy por meio do servidor da API do Kubernetes, diz o comunicado.
Em outras palavras, a Red Hat declarou:
A falha no escalonamento de privilégios possibilita a qualquer usuário obter privilégios totais de administrador em qualquer nó computacional que esteja sendo executado em um pod Kubernetes. Isso não é apenas um roubo ou injetar código malicioso, mas eles também podem reduzir os aplicativos e serviços de produção dentro do firewall de uma organização.
Como corrigir
Felizmente, há uma correção, mas alguns de vocês não vão gostar. Você deve atualizar o Kubernetes. Imediatamente. Existem versões com patches do Kubernetes v1.10.11 , v1.11.5 , v1.12.3 e v1.13.0-rc.1.
Se você ainda estiver usando o Kubernetes v1.0.x-1.9.x, pare. Atualize para uma versão corrigida. Se por algum motivo você não pode atualizar, existem remédios, porém são piores do que a doença. Você deve suspender o uso de servidores de API agregados e remover permissões de pod exec /attach /portforward de usuários que não devem ter acesso total à API do kubelet. Jordan Liggitt, o engenheiro de software do Google que corrigiu o bug, disse que essas mitigações provavelmente serão prejudiciais.
A única correção real é atualizar o Kubernetes.
Qualquer programa, incluindo o Kubernetes, é vulnerável. Os distribuidores da Kubernetes já estão liberando correções.
A Red Hat relata todos os seus “produtos e serviços baseados no Kubernetes – incluindo Red Hat OpenShift Container Platform, Red Hat OpenShift Online e Red Hat OpenShift Dedicated – são afetados”. A Red Hat começou a fornecer patches e atualizações de serviços aos usuários afetados.
Tanto quanto se sabe, ninguém usou a brecha de segurança para atacar ainda. Darren Shepard, arquiteto-chefe e co-fundador da Rancher Labs , descobriu o bug e o reportou usando o processo de relatório de vulnerabilidades do Kubernetes .
Mas – e é uma grande, mas – abusar da vulnerabilidade não deixaria vestígios óbvios nos logs. Agora que a falha do Kubernetes está divulgada, é apenas uma questão de tempo até que seja utilizada.
Então, mais uma vez, atualize seus sistemas Kubernetes agora antes que sua empresa acabe passando por muitos problemas.