Vulnerabilidade no Docker que permite escapar do contêiner

Na caixa de ferramentas para gerenciar contêineres Linux isolados Docker foi identificada vulnerabilidade (CVE-2018-15664), que em determinadas circunstâncias permite o acesso ao ambiente host a partir do contêiner, na presença da capacidade de executar suas próprias imagens no sistema ou ao ter acesso ao contêiner em execução. O problema se manifesta em todas as versões do Docker e permanece sem correção (proposta, mas ainda não aceita, patch, que implementa a suspensão do contêiner durante operações com o FS).

A vulnerabilidade permite extrair arquivos do contêiner para qualquer parte do FS do sistema host ao executar o comando "docker cp". A extração de arquivos é realizada com privilégios de root, o que permite ler ou escrever quaisquer arquivos no ambiente host, o que é suficiente para obter controle sobre o sistema host (por exemplo, é possível sobrescrever /etc/shadow).

O ataque só pode ser executado no momento em que o administrador executa o comando "docker cp" para copiar arquivos para o contêiner ou dele. Assim, o atacante precisa de alguma forma convencer o administrador do Docker da necessidade de realizar essa operação e prever o caminho utilizado durante a cópia. Por outro lado, o ataque pode ser realizado, por exemplo, ao fornecer serviços em nuvem que possibilitem a cópia de arquivos de configuração para o contêiner, construídos com o uso do comando "docker cp".

O problema é causado por uma falha na implementação da função FollowSymlinkInScope, que calcula o caminho absoluto no FS principal com base no caminho relativo, levando em consideração a localização do contêiner. Durante a execução do comando "docker cp", ocorre uma breve condição de corrida, na qual o caminho já foi verificado, mas a operação ainda não foi executada. Como a cópia é realizada no contexto do FS principal do sistema host, durante esse intervalo de tempo é possível trocar a referência por outro caminho e iniciar a cópia de dados em qualquer lugar do sistema de arquivos fora do contêiner.

Como a janela temporária da condição de corrida é muito limitada no protótipo de exploit preparado ao realizar operações de cópia de um contêiner, foi possível executar um ataque bem-sucedido em menos de 1% das vezes ao substituir cyclicamente o link simbólico no caminho usado na operação de cópia (o ataque foi bem-sucedido após cerca de 10 segundos de tentativas contínuas de copiar um arquivo com o comando "docker cp").

Ao realizar a operação de cópia para o contêiner, é possível conseguir um ataque repetível de sobrescrita de arquivo no sistema host em apenas algumas iterações. A possibilidade de ataque decorre do fato de que, ao copiar para o contêiner, aplica-se o conceito de "chrootarchive", segundo o qual o processo archive.go extrai o arquivo não no chroot da raiz do contêiner, mas no chroot do diretório pai do caminho de destino, sob controle do atacante, e não interrompe a execução do contêiner (chroot é usado como um indicador para explorar uma condição de corrida).

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster