
نص كشف لـ CIFSwitch - CVE-2026-46243
أداة تحقق عبر شيل للتحقق ما إذا كان نظام لينكس معرضًا لثغرة CIFSwitch (CVE-2026-46243) — ثغرة رفع صلاحيات محلية في عميل CIFS/SMB لنواة لينكس موجودة منذ عام 2007.
تعمل على المضيفات الفعلية، والآلات الافتراضية، وداخل الحاويات. مصممة للاندماج المباشر في أنابيب CI/CD.
تم الإفصاح عن CIFSwitch في 28 مايو 2026 من قبل الباحث الأمني Asim Manizada. الثغرة تجمع بين التحقق المفقود من صحة الإدخال في نوع المفتاح cifs.spnego للنواة مع المساعد rootful cifs.upcall من حزمة cifs-utils.
يمكن لمستخدم محلي غير مميز استدعاء request_key() بوصف مفتاح مزيف، مما يؤدي إلى قيام النواة باستدعاء cifs.upcall كجذر بحقول يتحكم فيها المهاجم. مع upcall_target=app، يدخل المساعد إلى مساحة الأسماء الخاصة بالمهاجم ويقوم ببحث getpwuid() قبل إفلات الصلاحيات — مما يحمل وحدة NSS يتحكم فيها المهاجم وينفذ كودًا عشوائيًا كجذر.
المتطلبات الأساسية للاستغلال:
cifs-utils >= 6.14يتوفر إثبات المفهوم (PoC) العام على manizada/CIFSwitch.
| الفحص | الوصف |
|---|---|
KERNEL_VERSION | مقارنة النواة الجارية بالإصدارات المعدلة من المنبع (ملاحظة: حزم التوزيعات لا تزال قيد النشر) |
CIFS_UTILS | اكتشاف تثبيت cifs-utils وإصدار قابل للاستغلال (>= 6.14) |
CIFS_MODULE | التحقق مما إذا كانت وحدة نواة CIFS محملة، أو مبنية داخليًا، أو مدرجة في القائمة السوداء |
USERNS | قراءة kernel.unprivileged_userns_clone أو user.max_user_namespaces sysctl |
REQUESTKEY_RULE | التحقق من وجود قاعدة cifs.spnego نشطة تستدعي cifs.upcall |
MAC_POLICY | اكتشاف وجود SELinux أو AppArmor قيد التنفيذ (يمنع الاستغلال في التوزيعات المعدلة) |
CONTAINER_CAPS | في الحاويات: التحقق من وجود CAP_SYS_ADMIN (يتيح مساحات أسماء غير مقيدة) |
CONTAINER_PROC | في الحاويات: التحقق من صلاحية الكتابة في /proc/sys (حاوية مميزة) |
FIX_SYMBOL | إذا كانت CIFS محملة وكان /proc/kallsyms قابلًا للقراءة: التحقق من وجود رمز الإصلاح |
# Clone or download
curl -O https://raw.githubusercontent.com/liamromanis101/cifswitch-check/main/cifswitch-check.sh
chmod +x cifswitch-check.sh
# Run interactively (coloured output)
./cifswitch-check.sh
# Quiet mode — only FAILs and final verdict
./cifswitch-check.sh --quiet
# JSON output — for CI/CD pipelines, SIEM ingestion
./cifswitch-check.sh --ci
# No colour (plain text, useful for logging)
./cifswitch-check.sh --no-colour
# This script is also available as a SKILL from Agensi:
https://www.agensi.io/skills/cve-2026-46243-cifswitch
| الرمز | المعنى |
|---|---|
0 | غير معرض للخطر، أو جميع الإجراءات التخفيفية الحرجة مفعلة |
1 | معرض للخطر — فحص واحد أو أكثر فشل |
2 | خطأ في السكربت |
CIFSwitch Vulnerability Check (CVE-2026-46243)
Kernel: 6.18.5 Host: myserver Container: false
────────────────────────────────────────────────────────────────────────
[FAIL] KERNEL_VERSION Kernel 6.18.5 appears unpatched. Fixed in: >= 6.18.22, >= 6.19.12, >= 7.0. Update your kernel.
[PASS] CIFS_UTILS cifs-utils NOT installed — cifs.upcall helper absent, attack chain is broken
[PASS] CIFS_MODULE CIFS kernel module not present on this system
[FAIL] USERNS user.max_user_namespaces = 15980 (non-zero). Disable to block namespace step:
[PASS] REQUESTKEY_RULE No cifs.spnego request-key rule found — rootful cifs.upcall will not be invoked
[WARN] MAC_POLICY No enforcing MAC policy (SELinux/AppArmor) detected
[ -- ] FIX_SYMBOL CIFS module not loaded — symbol check skipped
────────────────────────────────────────────────────────────────────────
VERDICT: VULNERABLE — remediation required
Reference: https://heyitsas.im/posts/cifswitch/
--ci){
"scanner": "cifswitch-check",
"cve": "CVE-2026-46243",
"timestamp": "2026-06-03T00:10:08Z",
"hostname": "myserver",
"kernel": "6.18.5",
"in_container": false,
"overall": "FAIL",
"checks": [
{"check": "KERNEL_VERSION", "status": "FAIL", "detail": "Kernel 6.18.5 appears unpatched. Fixed in: >= 6.18.22, >= 6.19.12, >= 7.0. Update your kernel."},
{"check": "CIFS_UTILS", "status": "PASS", "detail": "cifs-utils NOT installed — cifs.upcall helper absent, attack chain is broken"},
{"check": "CIFS_MODULE", "status": "PASS", "detail": "CIFS kernel module not present on this system"},
{"check": "USERNS", "status": "FAIL", "detail": "user.max_user_namespaces = 15980 (non-zero). Disable to block namespace step:"},
{"check": "REQUESTKEY_RULE","status": "PASS", "detail": "No cifs.spnego request-key rule found — rootful cifs.upcall will not be invoked"},
{"check": "MAC_POLICY", "status": "WARN", "detail": "No enforcing MAC policy (SELinux/AppArmor) detected"},
{"check": "FIX_SYMBOL", "status": "INFO", "detail": "CIFS module not loaded — symbol check skipped"}
]
}
- name: CIFSwitch vulnerability check
run: |
chmod +x ./cifswitch-check.sh
./cifswitch-check.sh --ci | tee cifswitch-result.json
# Exit code 1 will fail the step if the runner is vulnerable
cifswitch-check:
stage: security
script:
- chmod +x cifswitch-check.sh
- ./cifswitch-check.sh --ci > cifswitch-result.json
artifacts:
paths:
- cifswitch-result.json
stage('CIFSwitch Check') {
steps {
sh 'chmod +x cifswitch-check.sh && ./cifswitch-check.sh --ci > cifswitch-result.json'
archiveArtifacts artifacts: 'cifswitch-result.json'
}
}
1. قم بتصحيح النواة (عند توفر حزمة التوزيعة الخاصة بك)
الإصلاح من المنبع هو الـ commit 3da1fdf4efbc، وتم إدراجه في النواة المستقرة للإصدارات >= 6.18.22 و >= 6.19.12 و >= 7.0. يتم الآن نشر التصحيحات الخلفية للتوزيعات — تحقق من النشرة الأمنية للموزع الخاص بك بخصوص CVE-2026-46243. إلى أن تتوفر حزمة، طبق الإجراءات التخفيفية أدناه.
2. قم بإزالة cifs-utils (يكسر سلسلة الهجوم بالكامل إذا كنت لا تستخدم نقاط تحميل CIFS/SMB)
apt remove cifs-utils # Debian / Ubuntu
dnf remove cifs-utils # RHEL / Fedora / AlmaLinux
2. قم بتعطيل مساحات أسماء المستخدمين غير المميزة (يمنع خطوة التنقل بين مساحات الأسماء)
# Debian / Ubuntu
sysctl -w kernel.unprivileged_userns_clone=0
echo 'kernel.unprivileged_userns_clone=0' >> /etc/sysctl.d/99-cifswitch.conf
# RHEL / Fedora / upstream
sysctl -w user.max_user_namespaces=0
⚠️ قد يؤدي ذلك إلى تعطيل Flatpak و Podman/Docker بدون صلاحيات الجذر وحماية متصفح Chrome/Chromium.
3. قم بتعطيل قاعدة cifs.spnego request-key
sed -i 's|^create cifs.spnego|#create cifs.spnego|' /etc/request-key.d/cifs.spnego.conf
4. قم بإدراج وحدة نواة CIFS في القائمة السوداء (إذا لم تكن نقاط تحميل الشبكة SBM قيد الاستخدام)
echo 'blacklist cifs' >> /etc/modprobe.d/blacklist-cifs.conf
rmmod cifs 2>/dev/null || true
depmod -a
يتطلب إمكانية الاستغلال تثبيت cifs-utils >= 6.14 وتفعيل مساحات أسماء المستخدمين غير المميزة. التوزيعات المؤكدة تأثرها في التكوين الافتراضي تشمل AlmaLinux 8/9 و RHEL 8/9 و CloudLinux 8/9/10 وعدة إصدارات من Ubuntu/Debian مع وجود cifs-utils.
التوزيعات التي تمنع فيها سياسات SELinux/AppArmor الافتراضية الاستغلال: Ubuntu 26.04 و Fedora 40–44 و CentOS Stream 10 و Rocky Linux 10 و AlmaLinux 10 و SLES 16 و openSUSE Leap 16.
غير متأثرة: Amazon Linux 2 و Kali Linux 2019.4/2020.4 (إصدارات cifs-utils تفتقر إلى مفتاح مساحة الاسم).