
Концепт-доказательство инструмента локального повышения привилегий, эксплуатирующего уязвимость ядра XFRM/ESP (CVE-2026-43503) через специально созданные полезные нагрузки AES-CBC, доставляемые через сетевой стек для изменения страничного кэша SUID-бинарных файлов.
DirtyClone — это диагностический proof-of-concept инструмент для локального повышения привилегий, написанный на C. Он нацелен на путь эксплуатации, связанный с ядром/XFRM, описанный в исходном коде как CVE-2026-43503, и предназначен исключительно для авторизованных исследований безопасности в контролируемых средах.
Этот репозиторий содержит:
Текущая реализация выполняет следующие шаги высокого уровня:
Этот инструмент предназначен только для авторизованного тестирования безопасности. Запуск на системах без явного разрешения может быть незаконным и может повлиять на целостность системы.
Сначала установите необходимый пакет разработки 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 и отображает его в память;Это proof-of-concept поток, а не универсальный фреймворк для повышения привилегий. Он предназначен для демонстрации механизма эксплуатации и помощи в проверке, сохранилось ли уязвимое поведение в целевом ядре.
Следующий упрощённый пример показывает ту же концепцию на высоком уровне:
#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("Patched bytes: %02x %02x %02x\n", target[0], target[1], target[2]);
return 0;
}
Реальный проект использует тот же принцип, но упаковывает полезную нагрузку в виде пакета ESP/XFRM и задействует путь ядра через сетевой стек вместо простого копирования в память.
Фаза настройки
Подготовка XFRM
Конструирование полезной нагрузки
Фаза доставки
Проверка и выполнение
Реализация включает:
atexit и обработчики сигналов,fork/execvp,Исходный код ожидает окружение Linux с:
ip, iptables и modprobe,/usr/bin/su,Программа предназначена для отображения диагностической сводки PoC и затем либо:
Если эксплойт не срабатывает, программа печатает чёткое сообщение, предполагающее, что ядро, скорее всего, исправлено.
Используйте этот проект только когда:
Никогда не запускайте этот код на производственных системах или системах, на которые у вас нет разрешения на оценку.
Заголовок исходного кода указывает автора как MrAashish0x1 (gl1tch0x1). Репозиторий не содержит отдельного файла лицензии, поэтому код следует рассматривать как исследовательский материал, а не как производственное программное обеспечение.