
Scanner de vulnerabilidades de cluster Kubernetes que detecta CVE-2018-1002105 testando acesso de API não autenticado e escalada de privilégio via solicitações malformadas.
Utilitário de teste que verifica um cluster quanto ao CVE de alta gravidade do Kubernetes publicado aqui. Um artigo de nível de stakeholder sobre o CVE-2018-1002105 pode ser encontrado em https://gravitational.com/blog/kubernetes-websocket-upgrade-security-vulnerability/
Executar este teste através de balanceadores de carga de camada 7 ou proxies na frente do seu apiserver Kubernetes pode ser não confiável e produzir resultados incorretos. Este teste opera conectando-se ao apiserver e verificando efeitos colaterais do apiserver que exibem o bug no Kubernetes. Executar esta prova de conceito através de um balanceador de carga de camada 7 pode indicar falsamente que a API é vulnerável ao CVE-2018-1002105
Esta ferramenta tende a falsos positivos. Se sua API Kubernetes é fornecida por um grande provedor de nuvem (como Amazon AWS EKS, Google Cloud GKE ou Microsoft Azure AKS), esse provedor de serviço quase certamente já corrigiu seu apiserver e você não é mais afetado pelo CVE-2018-1002105. Aceitamos pull requests que melhorem a detecção de endpoints do apiserver não vulneráveis.
go get github.com/gravitational/cve-2018-1002105
cd $GOPATH/src/github.com/gravitational/cve-2018-1002105
go run main.go
docker run -it --rm -v $HOME/.kube/config:/kubeconfig: quay.io/gravitational/cve-2018-1002105:latest
A ferramenta tentará testar duas coisas: se o cluster permite acesso não autenticado à API, o que permitirá acesso não autenticado ao endpoint da API agregada. Também tentará encontrar um pod e testar se o apiserver deixará a conexão aberta em uma requisição malformada, o que indica que o cluster é suscetível ao CVE-2018-1002105.
Testing for unauthenticated access...
> API allows unauthenticated access
Testing for privilege escalation...
> API is vulnerable to CVE-2018-1002105
Se você vir API allows unauthenticated access, isso indica que o teste conseguiu detectar acesso não autenticado ao cluster. Este teste é bastante básico, mas deve detectar uma configuração padrão onde o acesso anônimo ao cluster é permitido.
Se você vir API is vulnerable to CVE-2018-1002105, isso significa que, usando o kubeconfig fornecido, a ferramenta conseguiu testar e confirmar que seu cluster está vulnerável.