Como contornar o problema do Copy Fail no Kubernetes com eBPF
(github.com/iwanhae)Enquanto eu operava K8s, chegou um pedido de resposta urgente sobre esse problema, então montei algo apropriado.
Surgiu uma vulnerabilidade chamada simplesmente de Copy Fail, na qual é possível obter privilégios de root do host a partir de dentro de um Pod do K8s ao abrir um socket que usa AF_ALG.
https://pt.news.hada.io/topic?id=29031
Até saiu um patch do kernel, mas na maioria dos ambientes de produção é difícil aplicá-lo rapidamente. Além disso, nos kernels mais recentes essa funcionalidade vem ativada como kernel built-in, então nem desativar o módulo do kernel é possível.
Para resolver esse problema de forma mais simples, este é um programa que, ao detectar no eBPF a function call relacionada, faz o seguinte:
- (se o kernel suportar) faz essa function call falhar
- (se não suportar) mata o processo correspondente
Deixei tudo pronto para poder usar apenas com o deploy de um único K8s DaemonSet, então, se alguém precisar, pode pegar e usar à vontade~
1 comentários
Obrigado!
FYI) O perfil seccomp do Docker também foi criado pelo @achimnol. https://github.com/moby/profiles/issues/19