
Написанная на C утилита безопасности для Linux, предназначенная для обнаружения, безопасной проверки (проверки концепции) и смягчения CVE-2026-64600 (RefluXFS). Она предоставляет оценку уязвимостей ядра, обнаружение XFS reflink, безопасный PoC состояния гонки и многоуровневое смягчение с использованием SystemTap и укрепления XFS.
Этот репозиторий содержит комплексную C-утилиту для обнаружения, безопасной проверки и смягчения уязвимости RefluXFS (CVE‑2026‑64600) на Linux-системах с файловой системой XFS. Инструмент проверяет ядро на уязвимость, определяет XFS-разделы с включённым reflink, при необходимости выполняет безопасную попытку запуска гонки и разворачивает двухуровневое смягчение (SystemTap-зонд + перемонтирование с reflink=0), когда это требуется.
⚠️ Отказ от ответственности: Этот инструмент предназначен только для авторизованной оценки безопасности и укрепления систем. Используйте его только на системах, которыми вы владеете или на тестирование которых у вас есть явное разрешение. Авторы не несут ответственности за неправомерное использование.
CVE-2026-64600 (RefluXFS) — это состояние гонки высокой степени серьёзности в файловой системе XFS ядра Linux, а именно в механизме копирования при записи (CoW) для reflink-файлов (появившемся в ядре 4.11). Непривилегированный локальный злоумышленник может повредить или перезаписать произвольные файлы на том же XFS-томе, создавая гонку конкурентных записей O_DIRECT в reflink-клон против защищённого файла. Повреждение происходит на блочном уровне, переживает перезагрузки и не оставляет следов в журнале ядра.
Затронутые ядра: Linux 4.11 вплоть до исправленных версий:
Воздействие: локальное повышение привилегий до root, постоянное повреждение данных, незаметная перезапись setuid-бинарников или конфиденциальных файлов.
Этот инструмент реализует:
/proc/mounts).-m fix):
FICLONE и copy_file_range на XFS, возвращая -EOPNOTSUPP.reflink=0 (защита в глубину).-c) – запуск произвольных команд (например, id) только в том случае, если система уязвима.-m exploit).reflink=0 (-m fix, требует root).--dry-run – предварительный просмотр действий по смягчению без их применения.--force – принудительное развёртывание смягчения, даже если условия не выполнены (лаборатория/демо).-v) для детальной информации о разборе.-c) – выполнение команды только в том случае, если система уязвима (по умолчанию: id).git clone https://github.com/Debajyoti0-0/CVE-2026-64600.git
cd cve-2026-64600
gcc -o cve-2026-64600 cve-2026-64600.c -lm -lpthread
Предварительные требования:
-m fix):
stap) – опционально, но рекомендуется для полного смягчения.Опционально: Если SystemTap недоступен, инструмент ограничится только усилением через перемонтирование (если это поддерживается версией XFS).
./cve-2026-64600
./cve-2026-64600 -v
./cve-2026-64600 -p /mnt/data
./cve-2026-64600 -m exploit
./cve-2026-64600 -m auto
sudo ./cve-2026-64600 -m fix
sudo ./cve-2026-64600 -m fix --dry-run
sudo ./cve-2026-64600 -m fix --force
./cve-2026-64600 -c "whoami"
./cve-2026-64600 -v -c "id"
$ ./cve-2026-64600
┌──────────────────────────────────────────────────────────────────────┐
│ CVE-2026-64600 (RefluXFS) — Mode: check │
└──────────────────────────────────────────────────────────────────────┘
─── System Information ───
Kernel 5.15.0-91-generic
Architecture x86_64
─── Vulnerability Assessment ───
Kernel Vulnerable NO
XFS Reflink (any mount) DISABLED
Distribution Affected (heuristic) NO
────────────────────────────────────────────────────────────────────
FINAL VERDICT
────────────────────────────────────────────────────────────────────
┌──────────────────────────────────────────────────────────────────────┐
│ SAFE: kernel not vulnerable and no XFS reflink found │
└──────────────────────────────────────────────────────────────────────┘
Kernel: 5.15.0-91-generic (not vulnerable)
XFS reflink: not detected
System appears secure against CVE-2026-64600
────────────────────────────────────────────────────────────────────
$ ./cve-2026-64600
┌──────────────────────────────────────────────────────────────────────┐
│ CVE-2026-64600 (RefluXFS) — Mode: check │
└──────────────────────────────────────────────────────────────────────┘
─── System Information ───
Kernel 6.12.0-rc2
Architecture x86_64
─── Vulnerability Assessment ───
Kernel Vulnerable YES
XFS Reflink (any mount) DISABLED
Distribution Affected (heuristic) YES
A vulnerable kernel was detected. Show remediation advisory? [y/n]: n
────────────────────────────────────────────────────────────────────
FINAL VERDICT
────────────────────────────────────────────────────────────────────
┌──────────────────────────────────────────────────────────────────────┐
│ PARTIAL: vulnerable kernel, but no XFS reflink found │
└──────────────────────────────────────────────────────────────────────┘
Kernel: 6.12.0-rc2 (vulnerable)
XFS reflink: not detected
Recommendation: still consider kernel update as precaution
────────────────────────────────────────────────────────────────────
$ sudo ./cve-2026-64600 -m fix
┌──────────────────────────────────────────────────────────────────────┐
│ CVE-2026-64600 (RefluXFS) — Mode: fix │
└──────────────────────────────────────────────────────────────────────┘
─── System Information ───
Kernel 6.12.0-rc2
Architecture x86_64
─── Vulnerability Assessment ───
Kernel Vulnerable YES
XFS Reflink (any mount) ENABLED
Distribution Affected (heuristic) YES
--- Mitigation Deployment ---
Layer 2/2: mount-level hardening (remount reflink=0)
Remounted /mnt/xfs with reflink=0
Layer 1/2: syscall-level block (SystemTap probe)
Status DEPLOYED (SystemTap)
Log: /var/log/refluxfs-block.log
Stop: sudo pkill -f 'stap.*refluxfs-block'
Verify: cp --reflink=always /etc/passwd /tmp/test 2>&1 | grep -q 'Operation not supported'
Status MITIGATION ACTIVE (both layers)
--- FINAL VERDICT ---
┌──────────────────────────────────────────────────────────────────────┐
│ CONFIRMED VULNERABLE (race triggered) │
└──────────────────────────────────────────────────────────────────────┘
Kernel: 6.12.0-rc2 (vulnerable)
XFS reflink: enabled
Distribution: affected
Чтобы протестировать этот инструмент в безопасной среде, вы можете настроить виртуальную машину Linux с XFS-разделом, созданным с параметром reflink=1. Например:
# Create a loop device with an XFS filesystem (reflink enabled)
dd if=/dev/zero of=/tmp/xfs.img bs=1M count=1024
mkfs.xfs -m reflink=1 /tmp/xfs.img
sudo mount -o loop /tmp/xfs.img /mnt/xfs
Затем запустите инструмент на смонтированном пути (-p /mnt/xfs), чтобы проверить обнаружение и смягчение.
Этот проект распространяется под лицензией GNU General Public License v3.0 — подробности см. в файле LICENSE.
Приветствуются сообщения об ошибках (issues) и pull request'ы. Пожалуйста, убедитесь, что ваш вклад сохраняет ту же функциональность и соответствует этическим правилам использования.
Помните: Всегда получайте надлежащее разрешение перед тестированием любого инструмента безопасности. Будьте этичны и ответственны.
| Опция | Описание |
|---|
-h, --help | Показать справочное сообщение и выйти. |
-v, --verbose | Подробный вывод (показать детали разобранной версии ядра). |
-p <путь> | Проверить статус XFS reflink на конкретной точке монтирования. |
-m, --mode <режим> | Режим работы: check (по умолчанию), exploit, auto, fix. |
-c, --cmd <команда> | Выполнить произвольную команду только в том случае, если система уязвима (по умолчанию: id). |
--dry-run | Предварительный просмотр действий по смягчению (с -m fix) без применения. |
--force | Принудительное развёртывание смягчения, даже если условия не выполнены (лаборатория/демо). |
| Режим | Описание |
|---|
check | Пассивное обнаружение – сообщает версию ядра, статус XFS reflink и эвристику дистрибутива. Никаких действий не выполняется. |
exploit | Запускает безопасную проверку гонки (PoC), даже если система уязвима. Смягчение не применяется. |
auto | Если система уязвима, запускает безопасную проверку гонки; в противном случае только проверяет. |
fix | Применяет многоуровневое смягчение (требуется root). Разворачивает SystemTap-зонд и пытается перемонтировать XFS с reflink=0. Применяется только в том случае, если ядро уязвимо и XFS reflink включён (если не используется --force). |