
DirtyCloneは、C言語で書かれた診断用・概念実証のローカル特権昇格ツールです。このツールは、ソース内でCVE-2026-43503として記述されているカーネル/XFRM関連のエクスプロイトパスを対象としており、管理された環境での許可されたセキュリティ研究のみを目的としています。
このリポジトリには以下が含まれています:
現在の実装は以下の高レベルな手順を実行します:
このツールは許可されたセキュリティテストのみを目的としています。明示的な許可なくシステム上で実行することは違法となる可能性があり、システムの整合性に影響を与える可能性があります。
まず必要なOpenSSL開発パッケージをインストールします:
# Debian/Ubuntu
sudo apt-get install libssl-dev
# Fedora
sudo dnf install openssl-devel
# Arch Linux
sudo pacman -S openssl
次にバイナリをコンパイルします:
gcc -o dirtyclone dirtyclone.c -lcrypto -Wall -O2
プログラムを次のように実行します:
./dirtyclone
オプションの引数:
./dirtyclone -q # 静かモード
./dirtyclone -v # 詳細モード(デフォルト)
./dirtyclone -h # ヘルプを表示
実行時にプログラムは:
エクスプロイトは単純なアイデアに基づいています。プログラムは細工されたESP/XFRMペイロードを準備し、カーネルがデータをページキャッシュでバックアップされたメモリ領域に復号化するように仕向け、その後ターゲットSUIDバイナリのバイトが変更されたかどうかを確認します。
実際の用語では、プログラムは以下のアクションを実行します:
/usr/bin/suを特定し、メモリにマッピングします;これは概念実証の流れであり、汎用の特権昇格フレームワークではありません。エクスプロイトのメカニズムを実証し、ターゲットカーネルが依然として脆弱な動作を公開しているかどうかを確認するのに役立つことを目的としています。
以下の簡略化された例は、高レベルで同じ概念を示しています:
#include <stdio.h>
#include <string.h>
static int dummy_exploit(unsigned char *target_bytes) {
unsigned char expected[] = {0x31, 0x0f, 0x05};
memcpy(target_bytes, expected, sizeof(expected));
return 0;
}
int main(void) {
unsigned char target[16] = {0};
dummy_exploit(target);
printf("パッチされたバイト: %02x %02x %02x\n", target[0], target[1], target[2]);
return 0;
}
実際のプロジェクトも同じ原理を使用していますが、ペイロードをESP/XFRMスタイルのパケットとしてパッケージ化し、単純なメモリコピーではなくネットワーキングスタックを通じてカーネルパスを駆動します。
セットアップフェーズ
XFRM準備
ペイロード構築
配信フェーズ
検証と実行
実装には以下が含まれます:
atexitとシグナルハンドラを介して登録されたクリーンアップルーチン、fork/execvpベースの安全なコマンド実行、ソースは以下の環境を想定しています:
ip、iptables、modprobeがシステム上で利用可能、/usr/bin/suにあるターゲットバイナリ、プログラムは診断用のPoCサマリーを表示し、その後以下のいずれかを行います:
エクスプロイトがトリガーされない場合、プログラムはカーネルがおそらくパッチされていることを示す明確なメッセージを出力します。
このプロジェクトは以下の場合にのみ使用してください:
本番システムまたは評価する許可がないシステムでこのコードを実行しないでください。
ソースヘッダは著者をMrAashish0x1(gl1tch0x1)として識別しています。リポジトリには個別のライセンスファイルは含まれていないため、コードはプロダクションソフトウェアではなく研究資料として扱う必要があります。