Especialistas escapam dos Contêineres e executam comandos no PWD

Especialistas escapam dos Contêineres e executam comandos no PWD. Contêineres privilegiados com segurança inadequada na plataforma de testes Play With Docker (PWD) ofereciam aos pesquisadores de segurança uma maneira de escapar de contêineres do Linux e executar código arbitrário no sistema host.

Um invasor que explore com sucesso a falha teria acesso de alto nível ao Play with Docker (PWD). Eles também poderiam acessar todos os contêineres em execução.

A exploração parte do fato de que todos os contêineres usam o mesmo código do kernel, algo que torna a tecnologia tão leve e atraente. Por outro lado, as máquinas virtuais carregam um novo kernel para cada instância.

A partir disso, os pesquisadores da CyberArk começaram a hackear o PWD, uma plataforma de suporte para quem quer executar comandos rápidos do Docker, familiarizar-se com o contêiner do Docker construindo e executando contêineres do Docker ou criando clusters.

Play-with-Docker (PWD), o site de playground do Docker, permite que os iniciantes executem os comandos do Docker em questão de segundos. Com base em diversos hosts, cada um executando vários contêineres de estudantes, é um ótimo lugar para aprender o Docker. O PWD fornece a experiência de ter uma máquina virtual Alpine Linux gratuita em um navegador da Web, onde os alunos podem criar e executar contêineres do Docker e experimentar o Docker em primeira mão sem precisar instalá-lo e configurá-lo primeiro.

Esta oferta única foi muito bem recebida pelos profissionais de DevOps com mais de 100.000 visitas mensais ao site, onde também estão disponíveis tutoriais, workshops e treinamento do Docker. A iniciativa foi um esforço originado por Marcos Nils e Jonathan Leibiusky, auxiliado pela comunidade Docker e patrocinado pela Docker.

A CyberArk Labs decidiu tentar escapar do contêiner de simulação em um esforço para executar o código no host do Docker.

O impacto da fuga do contêiner é semelhante ao escape de uma máquina virtual, pois ambos permitem o acesso ao servidor subjacente. A execução de código no servidor PWD permitiria que um atacante tivesse acesso integral integral à infraestrutura PWD, por um lado, e a todos os contêineres dos alunos, por outro.

“Escapar de um contêiner pode ser considerado como o primeiro passo em um ataque contra uma infraestrutura corporativa, uma vez que muitas empresas estão executando contêineres voltados para o público hoje em dia, o que pode levar os invasores à rede da empresa.” afirma o relatório da CyberArk

As descobertas da CyberArk foram relatadas aos mantenedores do Docker e do PWD, que posteriormente corrigiram a PWD.

Os especialistas começaram aprendendo informações sobre o sistema host executando o comando ‘uname’, que mostra a versão do kernel, a arquitetura, o nome, o UUID raiz (identificador universal exclusivo) e a data de construção.

Eles tentaram montar a unidade raiz do host dentro do contêiner, mas a proteção no local impediu essa ação. Mais pesquisas deram mais informações aos pesquisadores, como o hardware do host.

Usando o depurador de sistema de arquivos ‘debugfs’, eles podem acessar o diretório raiz do host e rodar o sistema de arquivos em busca de um módulo do kernel usando a ‘função de kernel printk’ que se ajusta à sua abordagem de ataque.

O que os especialistas em CyberArk foram capazes de pegar um módulo do kernel Linux que foi compilado em seu laboratório e injetá-lo no kernel Linux do PWD, disse Nimrod Stoler, um dos pesquisadores que trabalha no projeto, segundo a BleepingComputer.

O módulo usado foi o ceph.ko, carregado pelo kernel para a plataforma de armazenamento de software Ceph. Este não era um alvo específico, pois qualquer outro módulo usando a função ‘printk’ teria bastado. Isso foi usado para preparar um módulo que enganou o kernel de destino para carregá-lo.

O objetivo final é executar um shell reverso. Isso pode ser feito usando uma função especial do kernel, call_usermodehelper (), que é usada para preparar e iniciar um aplicativo em modo usuário a partir do kernel“, explicaram os pesquisadores no relatório técnico.

Vários passos depois, os especialistas da CyberArk conseguiram configurar um shell reverso e executar código arbitrário no host. Os detalhes sobre isso estão disponíveis em um vídeo dos pesquisadores abaixo:


PlayWithDocker

A ideia de invadir a PWD veio de Eviatar Gerzi. Em 6 de novembro de 2018, os pesquisadores relataram a falha no Docker, que reconheceu o bug no dia seguinte, informando que uma correção seria feita em breve. Em 7 de janeiro de 2019, a CyberArk confirmou que a vulnerabilidade não estava mais presente.

Conclusão

Obter acesso ao host de um contêiner do Linux deve ser uma tarefa muito difícil, se não impossível. Neste exemplo de PWD, esse não é o caso.

O motivo é bastante simples: o PWD usa um contêiner privilegiado e, antes da correção, não conseguiu protegê-lo corretamente.

Isso faz com que uma fuga do contêiner PWD para o host seja difícil, mas não impossível, como a CyberArk mostra na postagem. Injetar módulos do kernel Linux é apenas um dos caminhos abertos para um invasor persistente. Outros caminhos de ataque existem e devem ser tratados com segurança ao usar contêineres privilegiados.

Fique atento para pesquisas adicionais sobre como definir e proteger contêineres privilegiados.

A CyberArk Labs alertou o Play-with-Docker para a vulnerabilidade em 06 de novembro, os mantenedores da PWD responderam no dia seguinte e em 07 de janeiro a CyberArk confirmou que a vulnerabilidade já estava corrigida.

Fonte: CyberArk & BleepingComputer

Veja também:

Sobre mindsecblog 2399 Artigos
Blog patrocinado por MindSec Segurança e Tecnologia da Informação Ltda.

Seja o primeiro a comentar

Deixe sua opinião!