Uma vulnerabilidade no runc, que permite escapar de containers Docker e Kubernetes.

No kit de ferramentas para executar contêineres isolados runc, usado no Docker e Kubernetes, foi encontrada a vulnerabilidade CVE-2024-21626, que permite acesso ao sistema de arquivos do ambiente host a partir de um contêiner isolado. Durante o ataque, um invasor pode sobrescrever alguns arquivos executáveis no ambiente host e, assim, conseguir executar seu código fora do contêiner. Nos runtimes crun e youki, que utilizam runc, assim como no LXC, o problema não se manifesta. A vulnerabilidade foi corrigida na versão runc 1.1.12.

Ao usar as ferramentas Docker ou Kubernetes, o ataque pode ser realizado por meio da preparação de uma imagem de contêiner especialmente formatada, após a instalação e execução da qual é possível acessar o sistema de arquivos externo a partir do contêiner. No Docker, existe a possibilidade de exploração através de um Dockerfile especialmente formatado. A vulnerabilidade também pode ser explorada no caso de execução de processos no contêiner usando o comando "runc exec" ao vincular o diretório de trabalho ao espaço de nome do ambiente host.

A vulnerabilidade é causada pela vazamento de descritores de arquivos internos. Antes de executar o código dentro do contêiner no runc, todos os descritores de arquivos são fechados usando a flag O_CLOEXEC. No entanto, após a execução subsequente da função setcwd(), um descritor de arquivo permanece aberto, apontando para o diretório de trabalho e continuando acessível após a inicialização do contêiner. Vários cenários básicos de ataque ao ambiente host foram propostos usando o descritor de arquivo remanescente.

Por exemplo, o invasor pode especificar na imagem do contêiner o parâmetro process.cwd que aponta para "\/proc\/self\/fd\/7\/", o que resultará na vinculação do diretório de trabalho do processo pid1 no contêiner ao espaço de montagem do ambiente host. Assim, na imagem do contêiner, é possível configurar a execução de "\/proc\/self\/fd\/7\/..\/..\/..\/bin\/bash" e, através da execução de um script shell, sobrescrever o conteúdo de "\/proc\/self\/exe", que referencia a cópia do host de \/bin\/bash.

Outra variante de ataque permite que um invasor, restrito dentro de um contêiner, acesse o diretório do ambiente host, se processos privilegiados forem iniciados no contêiner usando o comando "runc exec com a opção "—cwd". O atacante pode substituir o caminho do processo iniciado por um link simbólico apontando para "\/proc\/self\/fd\/7\" e conseguir abrir "\/proc\/$exec_pid\/cwd" para acessar o FS do lado do host. O atacante também pode lograr a reescrita de arquivos executáveis do lado do ambiente host, organizando a execução de um arquivo executável a partir do ambiente host ("\/proc\/self\/fd\/7\/..\/..\/..\/bin\/bash") e reescrevendo posteriormente o arquivo "\/proc\/$pid\/exe", que referencia o arquivo em execução.

Além disso, foram identificadas mais cinco vulnerabilidades nos componentes da ferramenta Docker:

  • CVE-2024-23651 — condição de corrida no pacote BuildKit, utilizado no Docker para transformar código-fonte em artefatos de construção. A vulnerabilidade é causada pelo uso, em estágios de construção executados em paralelo, de um único ponto de montagem compartilhado com cache ("—mount=type=cache,source=") que permite, ao processar um Dockerfile especialmente elaborado, o acesso a arquivos no ambiente host a partir do contêiner de construção. A vulnerabilidade foi corrigida no BuildKit 0.12.5.
  • CVE-2024-23652 — erro ao remover arquivos vazios criados para o ponto de montagem ao usar a opção "—mount", permitindo a remoção de um arquivo fora do contêiner ao processar um Dockerfile especialmente elaborado. A vulnerabilidade foi corrigida no BuildKit 0.12.5.
  • CVE-2024-23653 — erro na implementação da API no BuildKit permite a execução de um contêiner com privilégios elevados, independentemente do estado da configuração security.insecure. A vulnerabilidade foi corrigida no BuildKit 0.12.5.
  • CVE-2024-23650 — um cliente ou front-end malicioso do BuildKit pode causar a falha do processo em segundo plano do BuildKit. A vulnerabilidade foi corrigida no BuildKit 0.12.5.
  • CVE-2024-24557 — possibilidade de envenenamento de cache no Moby, componente para a construção de sistemas especializados de isolamento de contêineres. Ao processar uma imagem de contêiner especialmente elaborada, é possível inserir dados no cache que podem ser utilizados nas etapas seguintes da construção. A vulnerabilidade foi corrigida no Moby 25.0.2 e 24.0.9.

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