
Exemplo de código para usar o exploit CVE-2019-5736 para minerar bitcoin sem associação ao contêiner ou usuário original.
Isto usa duas bibliotecas de código aberto:
Isto foi testado no Kali Linux, com Docker versão 18.03.0 e RunC versão 1.0.0-rc5.
O escape do container docker inicia vários daemons de mineração que pertencem ao processo #1 (o kernel). Isso significa que os recursos do computador são usados para mineração sem que o script/recursos de computação estejam associados ao seu container.
Isto aproveita a CVE-2019-5736. Quando o container é executado, o docker usa docker-runc para executá-lo, e acessamos o pid do runc que está executando nosso container. Em seguida, passamos a execução para outro programa (overwrite_runc) com o symlink para o binário do runc. Este symlink nos aponta diretamente para o descritor de arquivo do binário do runc. Isso nos permite abrir o descritor de arquivo do runc para escrita e sobrescrevê-lo. Ao sobrescrevê-lo com um script malicioso, quando o container é encerrado, ele executa o script com privilégios de root, permitindo-nos iniciar um criptominerador.
Isto sobrescreve o binário do runc no ambiente de teste, então copiar o original é prudente antes de executar isto.
Não use isto em sistemas reais e vulneráveis.