
أداة أمان لنظام لينكس مبنية بلغة C، تُستخدم لكشف ثغرة CVE-2026-64600 (RefluXFS) والتحقق منها بأمان (إثبات المفهوم - PoC) والتخفيف من حدّتها. توفّر الأداة تقييمًا لثغرات النواة، وكشفًا لميزة إعادة الارتباط (reflink) في نظام ملفات XFS، ونموذج PoC آمنًا لظروف السباق (race condition)، وتخفيفًا متعدد الطبقات باستخدام SystemTap وتحصين XFS.
يوفّر هذا المستودع أداة شاملة بلغة C تهدف إلى كشف والتحقق الآمن وتخفيف ثغرة RefluXFS (CVE‑2026‑64600) على أنظمة Linux التي تعمل بنظام ملفات XFS. تتحقق الأداة من وجود نواة قابلة للاستغلال، وتحدد نقاط تحميل XFS المفعلة لدعم reflink، وتحاول اختياريًا إثارة السباق بطريقة آمنة، وتنشر تخفيفًا من طبقتين (مسبار SystemTap + إعادة تحميل مع reflink=0) عند الحاجة.
⚠️ إخلاء مسؤولية: هذه الأداة مخصصة لتقييم الأمان المصرح به وتحصين الأنظمة فقط. استخدمها فقط على الأنظمة التي تملكها أو لديك إذن صريح لاختبارها. لا يتحمل المؤلفون أي مسؤولية عن إساءة الاستخدام.
CVE-2026-64600 (RefluXFS) هي حالة سباق عالية الخطورة في نظام ملفات XFS الخاص بنواة Linux، وتحديدًا في مسار النسخ عند الكتابة (CoW) للملفات المعاد ربطها (reflinked files) (المقدمة في النواة 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 العمومية العامة الإصدار 3.0 – راجع ملف LICENSE للحصول على التفاصيل.
نرحب بملفات المشكلات (issues) وطلبات السحب (pull requests). يرجى التأكد من أن مساهماتك تحافظ على نفس الوظيفة وتلتزم بإرشادات الاستخدام الأخلاقي.
تذكّر: احصل دائمًا على إذن مناسب قبل اختبار أي أداة أمنية. كن أخلاقيًا ومسؤولًا.
| الخيار | الوصف |
|---|
-h, --help | إظهار رسالة المساعدة والخروج. |
-v, --verbose | مخرجات مفصلة (إظهار تفاصيل إصدار النواة المُحلَّل). |
-p <path> | التحقق من حالة reflink في XFS على نقطة تحميل محددة. |
-m, --mode <mode> | وضع التشغيل: check (الافتراضي)، exploit، auto، fix. |
-c, --cmd <command> | تنفيذ أمر مخصص فقط إذا كان النظام عرضة للثغرة (الافتراضي: id). |
--dry-run | معاينة إجراءات التخفيف (مع -m fix) دون تطبيقها. |
--force | فرض نشر التخفيف حتى لو لم تتوفر الشروط (للمختبر/العرض التجريبي). |
| الوضع | الوصف |
|---|
check | كشف سلبي – يُبلغ عن إصدار النواة وحالة reflink في XFS وتقدير التوزيعة. لا يتخذ أي إجراءات. |
exploit | يشغّل التحقق الآمن من السباق (إثبات المفهوم) حتى لو كان النظام غير عرضة للثغرة. لا يطبّق التخفيف. |
auto | إذا كان النظام عرضة للثغرة، يشغّل التحقق الآمن من السباق؛ وإلا يكتفي بالفحص. |
fix | يطبّق التخفيف متعدد الطبقات (يتطلب root). ينشر مسبار SystemTap ويحاول إعادة تحميل XFS مع reflink=0. يُطبَّق فقط إذا كانت النواة عرضة و reflink في XFS مفعّل (ما لم يُستخدم --force). |