
Автоматизированный сканер и патчер на основе SSH для LPE-уязвимостей ядра Linux CVE-2026-43284 и CVE-2026-43500, с обнаружением нескольких хостов, выявлением повышения привилегий и смягчением последствий путём блокировки модулей.
Дисклеймер: Этот инструмент предназначен исключительно для легального внутреннего аудита безопасности. Использование без разрешения на системах, которые вам не принадлежат, является нарушением. Разработано Gagaltotal666 - GhostGTR666.
Инструмент выявляет и смягчает две уязвимости Local Privilege Escalation (LPE) в ядре Linux:
f4c50a4034e6 от 2026-05-05)/etc/modprobe.d/| Возможность | Описание |
|---|---|
| Многохостовый сканер | Сканирование всей подсети (CIDR) или конкретного списка IP параллельно |
| TCP Ping Discovery | Автоматическое обнаружение активных хостов перед SSH (можно пропустить с помощью --skip-discovery) |
| Глубокий аудит | Анализ версии ядра, статуса модулей, патча upstream, уровня привилегий |
| Оценка уязвимостей | Автоматическая классификация статуса: VULNERABLE, MITIGATED, LIKELY_PATCHED, POSSIBLY_SAFE, MODULE_NOT_LOADED |
| Автоматическое смягчение | Блокировка модулей, выгрузка и очистка page-cache одной командой --patch |
| Zero-Touch Sudo Injection | Автоматический ввод пароля через sudo -S — настройка NOPASSWD не требуется |
| Умное определение аутентификации | Автоматическое обнаружение повышения привилегий (root, sudo NOPASSWD, sudo с паролем) |
| Проверка CLI | Предварительная проверка опечаток, валидация файла SSH-ключа (защита от поддельных known_hosts) |
| Параллельное выполнение | Пул потоков для сканирования и SSH-операций (по умолчанию 20 воркеров) |
| Отчёт в JSON | Экспорт полных результатов аудита в формат JSON |
| Красивый вывод | Цветной вывод + сводка PrettyTable (автоматический fallback, если библиотека отсутствует) |
| Обработка сигналов | Корректное завершение через SIGINT/SIGTERM |
Python 3.8 или выше
Библиотеки: paramiko, colorama, prettytable
python3 -m venv .venv
source .venv/bin/activate
# Клонирование репозитория
git clone https://github.com/gagaltotal/dirtyfrag-scanner.git
cd dirtyfrag-scanner
# Установка зависимостей
pip install -r requirements.txt
# или
pip install paramiko colorama prettytable

Обнаружение уязвимостей без каких-либо изменений на целевом сервере.
# С использованием пароля
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user ghostgtr666 --password 'server@02!'
# С использованием SSH-ключа
python3 dirtyfrag_scanner.py --subnet 10.134.205.0/24 --user root --key ~/.ssh/id_rsa
# С использованием обоих (пароль как fallback, если ключ не сработает)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --key ~/.ssh/id_rsa
# Сканирование конкретных IP (без discovery)
python3 dirtyfrag_scanner.py --hosts 192.168.1.10,192.168.1.20 --user admin --password 'pass'
Запуск аудита и немедленное применение смягчения на уязвимых серверах.
# Патч с использованием пароля (АВТО-ВВОД SUDO, NOPASSWD НЕ ТРЕБУЕТСЯ)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user ghostgtr666 --password 'server@02!' --patch
# Патч с входом под root
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa --patch
# Патч с настраиваемым количеством воркеров (более быстрое сканирование)
python3 dirtyfrag_scanner.py --subnet 192.168.0.0/16 --user admin --password 'pass' --patch --workers 50
--subnet CIDR Сканирование подсети CIDR (например, 192.168.1.0/24)
--hosts IP[,IP,...] Сканирование конкретных IP (через запятую, без пробелов)
--user USERNAME Имя пользователя SSH (обязательно)
--password PASSWORD Пароль SSH (используйте кавычки при наличии спецсимволов)
--key PATH Путь к приватному SSH-ключу (например, ~/.ssh/id_rsa, не known_hosts!)
--port PORT Пользовательский порт SSH (по умолчанию: 22)
--timeout SECONDS Таймаут подключения SSH (по умолчанию: 10, максимум: 300)
--skip-discovery Пропустить TCP ping discovery, сразу подключаться по SSH ко всем IP
--workers NUM Количество параллельных SSH-воркеров (по умолчанию: 20, мин: 1, макс: 100)
--patch Применить смягчение на уязвимых хостах
--output FILE Сохранить результаты аудита в JSON-файл
Инструмент разработан для работы в различных средах SSH-серверов без необходимости изменения sudoers:
Прямой root (рекомендуется)
--user root --key ~/.ssh/id_rsa --patch
Sudo NOPASSWD
--user ubuntu --key ~/.ssh/id_rsa --patch
/etc/sudoers уже настроен с NOPASSWDsudo -nSudo с вводом пароля (Zero-Touch) ⭐
--user ubuntu --password 'mypass' --patch
/etc/sudoers: ALL=(ALL) ALLsudo -S -p ''Гибридный (ключ + пароль)
--user ubuntu --key ~/.ssh/id_rsa --password 'mypass' --patch
При использовании флага --patch инструмент последовательно выполняет следующие шаги:
/etc/modprobe.d/dirtyfrag.conf (если существует)/etc/modprobe.d/dirtyfrag.conf:
install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false
chmod 644 для файла конфигурацииrmmod esp4 (пропустить, если не загружен)rmmod esp6 (пропустить, если не загружен)rmmod rxrpc (пропустить, если не загружен)echo 3 > /proc/sys/vm/drop_cachesПримечание: Если модуль всё ещё загружен после rmmod, пользователь будет уведомлён, что может потребоваться перезагрузка.
──────────────────────────────────────────────────────────
Хост 1/2: 10.134.205.163 (ubuntu-web-01)
──────────────────────────────────────────────────────────
ОС : Ubuntu 22.04.4 LTS
Ядро : 6.8.0-111-generic
Привил.: user
CVE-2026-43284 (xfrm-ESP) [POSSIBLY_SAFE]
esp4 загружен : нет
esp6 загружен : нет
Смягчение : НЕ применено
Патч upstream : НЕ включён (<6.15)
CVE-2026-43500 (RxRPC) [VULNERABLE]
rxrpc загружен : ДА
Смягчение : НЕ применено
Примечание: Патча upstream пока нет — смягчение является ЕДИНСТВЕННЫМ решением
[✓] Смягчение успешно применено!
[Проверка привилегий] OK (используется: sudo (авто-пароль))
[Очистка целевого пути] OK
[Запись конфигурации modprobe] OK
[Проверка записанной конфигурации] OK (3 записи)
[Установка прав на файл] OK
[Выгрузка модуля esp4] Пропущено (не загружен или уже удалён)
[Выгрузка модуля esp6] Пропущено (не загружен или уже удалён)
[Выгрузка модуля rxrpc] Выгружен
[Очистка page-cache] OK
[Финальная проверка] Файл конфигурации корректен
[Финальная проверка] Все уязвимые модули выгружены
[Результат] Смягчение успешно применено
════ СВОДКА ════
+----------------+-------------------+------+------------+------------+----------+
| Хост | ОС/Ядро | Прив.| CVE-43284 | CVE-43500 | Запатчен?|
+----------------+-------------------+------+------------+------------+----------+
| 10.134.205.163 | Ubuntu 22.04.4 | user | POSSIBLY_S | VULNERABLE | ДА ✓ |
| 10.134.205.164 | Ubuntu 22.04.4 | user | VULNERABLE| VULNERABLE | ОШИБКА ✗ |
| 10.134.205.165 | Debian 12 | root | MITIGATED | MITIGATED | — |
+----------------+-------------------+------+------------+------------+----------+
════ СТАТИСТИКА ════
Просканировано хостов: 3
Ошибок : 0
Уязвимых 43284 : 1
Уязвимых 43500 : 2
Смягчений OK : 1
Смягчений ОШИБКА : 1
└─ 1 не удалось из-за недостаточных привилегий
Длительность : 12.4s
Используйте флаг --output для сохранения полных результатов аудита:
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --output report.json
{
"scan_time": "2026-05-12 14:23:45",
"tool": "DirtyFrag Scanner v1.0",
"cves": ["CVE-2026-43284", "CVE-2026-43500"],
"total_hosts": 3,
"results": [
{
"host": "10.134.205.163",
"hostname": "ubuntu-web-01",
"os": "Ubuntu 22.04.4 LTS",
"kernel": "6.8.0-111-generic",
"kernel_v": [6, 8, 0],
"is_root": false,
"cve_43284": {
"status": "POSSIBLY_SAFE",
"esp4_loaded": false,
"esp6_loaded": false,
"mitigation_applied": false,
"upstream_patched": false
},
"cve_43500": {
"status": "VULNERABLE",
"rxrpc_loaded": true,
"mitigation_applied": false
},
"patch_applied": true,
"patch_msg": "...",
"error": null
}
]
}
# НЕПРАВИЛЬНО
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa.pub
# ПРАВИЛЬНО (используйте приватный ключ, не .pub)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa
Предоставленный файл не является приватным ключом. Проверьте:
.pub (публичный ключ)known_hosts-----BEGIN PRIVATE KEY----- или -----BEGIN RSA PRIVATE KEY-----# НЕПРАВИЛЬНО
python3 dirtyfrag_scanner.py --user ghostgtr666--password 'pass' --subnet 192.168.1.0/24
# ПРАВИЛЬНО
python3 dirtyfrag_scanner.py --user ghostgtr666 --password 'pass' --subnet 192.168.1.0/24
У пользователя нет доступа к sudo, или пароль не был предоставлен, когда это требовалось:
# Вариант 1: Используйте root напрямую
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa --patch
# Вариант 2: Укажите пароль для автоматического ввода sudo
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --patch
# Вариант 3: Настройте NOPASSWD в /etc/sudoers
echo 'admin ALL=(ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers
Увеличьте --timeout:
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --timeout 30
Некоторые дистрибутивы компилируют ядро без модулей esp4/esp6/rxrpc. Проверьте вручную:
# На целевом хосте
cat /proc/cmdline | grep -i module
lsmod | grep -E 'esp4|esp6|rxrpc'
python3 dirtyfrag_scanner.py \
--subnet 192.168.100.0/24 \
--user monitoring \
--password 'monitoring123' \
--workers 30 \
--output full-audit.json
python3 dirtyfrag_scanner.py \
--subnet 10.0.0.0/16 \
--user root \
--key ~/.ssh/prod_rsa \
--patch \
--workers 50 \
--output emergency-patch.json
python3 dirtyfrag_scanner.py \
--hosts 192.168.1.10,192.168.1.20,192.168.1.30 \
--user ubuntu \
--key ~/.ssh/dev_rsa \
--output critical-servers.json
python3 dirtyfrag_scanner.py \
--subnet 192.168.50.0/24 \
--user deploy \
--key ~/.ssh/deploy_ed25519 \
--password 'deploy@backup' \
--patch \
--output deploy-scan.json
Разработано Gagaltotal666 - GhostGTR666
GitHub: github.com/gagaltotal
Дисклеймер: Этот инструмент предназначен только для законного и согласованного аудита безопасности. Пользователь несёт ответственность за использование этого инструмента.