
CVE-2025-6019: udisks2 XFS Resize TOCTOU Privilege Escalation
CVE-2025-6019: udisks2 XFS Resize TOCTOU Повышение привилегий Этот репозиторий содержит Proof of Concept (PoC) для CVE-2025-6019, уязвимости гонки (Race Condition) в udisks2, которая позволяет локально повышать привилегии через изменение размера файловой системы XFS.
Этот эксплойт универсален для любой Linux-системы, соответствующей следующим критериям:
Уязвимая служба: udisks2 (с доступом к D-Bus).
Инструмент файловой системы: установлен xfsprogs (в частности mkfs.xfs).
Архитектура: не имеет значения (работает на x86, x64, ARM и т.д.).
Эксплойт проверен на следующей конфигурации:
weapon.py автоматически настраивает PATH среды для поиска mkfs.xfs, который обычно находится в sbin.Для эксплуатации требуется специально подготовленный образ XFS, созданный с помощью Protofile. Это позволяет определить структуру файловой системы, содержащую SUID-двоичный файл root (pwnbash), без необходимости прав root на этапе создания образа. Флаг mkfs.xfs -p использует этот шаблон для внедрения SUID-бита прямо в метаданные образа.
Обычным пользователям в удаленных сессиях (SSH, Docker) запрещено использовать udisks2. Запустите этот скрипт, чтобы имитировать локальную сессию (seat0):
python3 bypass.py
Сгенерируйте SUID-образ с помощью weapon.py. Этот скрипт использует XFS protofile для внедрения оболочки с правами 4755. python3 weapon.py
Выполните trigger.sh, чтобы начать заваливать udisks2 запросами на изменение размера через D-Bus. Это заставляет демон создавать временные точки монтирования в /tmp/blockdev.XXXXXX. chmod +x trigger.sh ./trigger.sh
Поскольку автоматические скрипты могут быть нестабильными в средах с ограниченными ресурсами, рекомендуется ручной метод: Отслеживайте /tmp на наличие временных точек монтирования: watch -n 0.1 "ls -la /tmp" Определите цель: Ищите каталог с правами доступа для всех (например, drwxr-xr-x) вместо стандартных защищенных drwx------.
Запустите полезную нагрузку: После определения перейдите в каталог и выполните оболочку:
cd /tmp/blockdev.Q797J3 # Example directory name ./pwnbash -p Результат: Если выполнение произойдет в окне гонки (до применения флага nosuid), вы получите root-оболочку.
bypass.py: Скрипт конфигурации для имитации локальной сессии (seat0) и обхода ограничений Polkit через ~/.pam_environment.
weapon.py: Генератор SUID-образа с использованием шаблона XFS Protofile.
trigger.sh: Триггер состояния гонки D-Bus для изменения размера файловой системы udisks2.
Для подробного разбора: 👉 NetaCoding - https://netacoding.com/posts/udisks2-cve_lpe/
Этот проект предназначен только для образовательных целей и авторизованного тестирования безопасности. Несанкционированный доступ к компьютерным системам незаконен.