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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/zpol/cve-2026-23398-poc
تحليل الثغرات الأمنيةالاستغلالالاختبار العشوائياختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubzpol/cve-2026-23398-poc

cve-2026-23398-poc

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

الأكثر شعبية

عرض الكل →

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

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

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

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

حول

مختبر قابل لإعادة الإنتاج لـ CVE-2026-23398، وهو خطأ إلغاء مرجعية مؤشر فارغ (NULL dereference) في نواة لينكس داخل دالة icmp_tag_validation() الناتج عن حزم ICMP Fragmentation Needed، مما يسبب رفض الخدمة. يتضمن إعداد جهاز افتراضي QEMU، وإثبات المفهوم Scapy، وسكربتات لاختبار النواة المُصححة والضعيفة.

مشاركة

مختبر: CVE-2026-23398 (ICMP / ip_no_pmtu_disc=3)

مختبر قابل لإعادة الإنتاج لخلل نواة لينكس في icmp_tag_validation() (إلغاء مرجع مؤشر فارغ عندما يكون net.ipv4.ip_no_pmtu_disc = 3 ويصل ICMP من نوع Fragmentation Needed يحتوي رأسه الداخلي IPv4 على رقم بروتوكول بدون معالج في inet_protos[]).

للاستخدام المصرح به فقط: أنظمة تملكها أو لديك إذن كتابي صريح لاختبارها. التأثير هو حرمان من الخدمة (انهيار النواة).


متطلبات المضيف

المكوّنالغرض
QEMU (qemu-system-x86_64, qemu-img)الجهاز الافتراضي الضحية
cloud-image-utils (cloud-localds)، wget، genisoimageCloud-init وتنزيل الصورة
Docker + Docker Composeمرسل ICMP من المضيف (وضع شبكة host)
عميل OpenSSHأتمتة SSH
مفتاح SSH في ~/.ssh/id_ed25519.pub أو id_rsa.pub، أو sshpassتسجيل دخول الضيف بدون كتابة كلمة مرور (المفاتيح موصى بها)
sudoوضع TAP فقط (ICMP من المضيف إلى عنوان IP الثابت للجهاز الافتراضي)

Python 3 و Scapy على المضيف مطلوبان فقط إذا كنت لا تستخدم Docker للحمولات عن بُعد.


هيكل المستودع

root@kitploit:~
├── send_frag_needed.py          # PoC بـ Scapy (ICMP 3,4 + IP داخلي ببروتوكول غير شائع)
├── send-payload-to-host.sh      # إرسال الحمولة إلى IP/اسم مضيف على شبكتك
├── docker-compose.yml           # خدمة "sender" (شبكة host + CAP_NET_RAW)
├── Dockerfile
├── vm/                          # الأقراص، بذور cloud-init، سجلات QEMU التسلسلية
└── scripts/
    ├── fetch-image.sh
    ├── prepare-disk.sh
    ├── build-seed-dhcp.sh       # بذرة DHCP (وضع usernet)
    ├── build-seed.sh            # بذرة عنوان ثابت 192.168.76.2 (وضع TAP)
    ├── vm-start-usernet.sh      # QEMU + شبكة مستخدم (منفذ SSH 2222)
    ├── vm-stop-usernet.sh
    ├── vm-start.sh / vm-stop.sh # QEMU + TAP (بعد tap-up.sh)
    ├── tap-up.sh / tap-down.sh  # واجهة TAP على المضيف (sudo)
    ├── run-lab-usernet.sh       # التدفق الكامل: صورة + VM + Scapy على الضيف (نواة حديثة)
    ├── run-lab.sh               # تدفق TAP + مرسل docker → 192.168.76.2
    ├── install-vulnerable-mainline.sh  # mainline 6.12 غير مصحح + PoC بـ veth (انهيار)
    └── poc-veth-netns.sh        # التشغيل *داخل* الضيف (veth + netns)

الوضع أ — مختبر QEMU كامل (شبكة مستخدم، بدون TAP)

شبكة QEMU المستخدم لا توصل ICMP القادم من المضيف إلى الضيف بشكل موثوق. التدفق الآلي يثبّت Scapy على الجهاز الافتراضي ويشغّل السكربت هناك. نواة Ubuntu الحالية عادةً مصححة: سترى "Sent 1 packets" ولكن لا انهيار.

root@kitploit:~
cd /path/to/repo
chmod +x scripts/*.sh send-payload-to-host.sh

# التشغيل الأول: تنزيل صورة Ubuntu Noble السحابية، التراكب، البذرة، تشغيل QEMU، SSH :2222، apt، PoC
./scripts/run-lab-usernet.sh
  • SSH: ssh -p 2222 [email protected] (كلمة المرور lablab إذا كنت تعتمد على مصادقة كلمة المرور).
  • إيقاف VM: ./scripts/vm-stop-usernet.sh
  • وحدة التحكم التسلسلية (انهيار، oops): vm/serial-usernet.log

الوضع ب — نواة قابلة للاستغلال + انهيار قابل لإعادة الإنتاج

إصلاح CVE صدر في مارس 2026. بناء mainline أقدم (مثل 6.12.0 من 2024-11) لا يتضمن ذلك الإصلاح. السكربت يثبّت حزم .deb تلك في الجهاز الافتراضي، يعيد التشغيل، ويشغّل PoC باستخدام veth + مساحة أسماء شبكة بحيث يتبع ICMP مسار دخول حقيقي (الإرسال فقط إلى عنوان loopback/واجهة الضيف نفسه غير كافٍ).

تحذير: هذا ينتهي عادةً بـ انهيار النواة؛ يتوقف SSH عن الاستجابة.

root@kitploit:~
# VM بـ usernet قيد التشغيل (أو بعد أن أنشأها run-lab-usernet مرة واحدة)
./scripts/vm-start-usernet.sh   # إذا لم تكن قيد التشغيل بالفعل

./scripts/install-vulnerable-mainline.sh

كيفية معرفة ما إذا نجح

الإشارةالانهيار حدث (متوقع على 6.12 القابلة للاستغلال)الانهيار لم يحدث
SSH مباشرة بعد "Running PoC …"يتعطل أو Connection timed out / Connection resetالجلسة ما زالت تعمل؛ تحصل على شل
مخرجات send_frag_needed.pyيجب أن ترى . Sent 1 packets. قبل موت SSH (غالبًا مقطوع إذا سقط الرابط فورًا)Install Scapy: pip install scapy → Scapy كان مفقودًا على الضيف؛ لم يُرسل ICMP أبدًا. أعد تشغيل install-vulnerable-mainline.sh (يثبّت python3-scapy) أو شغّل sudo apt install -y python3-scapy على الجهاز الافتراضي وأعد تشغيل PoC
السجل التسلسليtail -f vm/serial-usernet.log يُظهر Kernel panic، icmp_unreach، CR2: 0000000000000010، إلخ.لا أسطر انهيار؛ الضيف يستمر في العمل
عملية QEMUما زالت تعمل لكن نظام التشغيل الضيف ميت حتى إعادة التشغيلالضيف ما زال يستجيب على المنفذ 2222

ملاحظة القرص الجديد: إذا شغّلت فقط prepare-disk.sh + vm-start-usernet.sh (وليس run-lab-usernet.sh)، فقد لا يحتوي الضيف على python3-scapy حتى يثبّته install-vulnerable-mainline.sh (أو تثبّته يدويًا).

بعد الانهيار — إعادة تعيين نظيفة:

root@kitploit:~
./scripts/vm-stop-usernet.sh
rm -f vm/victim.qcow2
./scripts/prepare-disk.sh
./scripts/build-seed-dhcp.sh
./scripts/vm-start-usernet.sh
# اختياري: إعادة تثبيت الحزم / إعادة تشغيل install-vulnerable-mainline.sh

الوضع ج — ICMP من المضيف → VM (TAP)

يستخدم الضيف 192.168.76.2 والمضيف 192.168.76.1 على TAP. يتصرف ICMP كما في شبكة LAN حقيقية.

root@kitploit:~
./scripts/tap-up.sh              # sudo: ينشئ icmp-lab-tap0
./scripts/prepare-disk.sh
./scripts/build-seed.sh          # عنونة ثابتة في cloud-init
./scripts/vm-start.sh
./scripts/wait-ssh.sh 192.168.76.2

# على الجهاز الافتراضي: sysctl -w net.ipv4.ip_no_pmtu_disc=3 ونواة قابلة للاستغلال إذا أردت انهيارًا

docker compose build
docker compose run --rm sender 192.168.76.2

./scripts/run-lab.sh يربط جزءًا من هذا (يتطلب TAP + Docker).


حمولة إلى جهاز على شبكتك

غلاف ملائم (يحل اسم المضيف → IPv4، يفضّل Docker، وإلا sudo + Python):

root@kitploit:~
chmod +x send-payload-to-host.sh
docker compose build    # مرة واحدة

./send-payload-to-host.sh 192.168.1.50
./send-payload-to-host.sh myserver.lan --inner-proto 253 --nexthop-mtu 1200

بدون Docker:

root@kitploit:~
sudo pip install scapy   # إذا لزم الأمر
sudo ./send-payload-to-host.sh 192.168.1.50

شروط الهدف المهمة لهذا CVE:

  1. نواة لينكس بدون الإصلاح (أو ما يعادله من توزيعة لم يُطبَّق بعد).
  2. net.ipv4.ip_no_pmtu_disc = 3 (وضع PMTU المحسّن).
  3. يجب استلام الحزمة عبر مسار إدخال IPv4 العادي (حركة المرور الواصلة على واجهة).

إذا كانت النواة مصححة أو sysctl ليس 3، لن ترى انهيارًا؛ قد تظل الحزمة تُرسل على الشبكة.


متغيرات البيئة

المتغيرالوصف
ICMP_LAB_TAPاسم جهاز TAP (الافتراضي icmp-lab-tap0)
ICMP_LAB_HOST_IPعنوان المضيف على TAP (الافتراضي 192.168.76.1/24)
ICMP_LAB_SSH_PORTمنفذ SSH لـ usernet (الافتراضي 2222)
ICMP_LAB_SSH_HOSTمضيف SSH (الافتراضي 127.0.0.1)

المراجع

  • CVE-2026-23398 (NVD)
  • الإصلاح: icmp: fix NULL pointer dereference in icmp_tag_validation() (الالتزام 614aefe56af8e على mainline)
  • إدخال الوضع 3: الالتزام 8ed1dc44d3e9 (hardened ip_no_pmtu_disc)

مرجع سريع للأوامر

الهدفالأمر
مختبر usernet لأول مرة./scripts/run-lab-usernet.sh
تشغيل / إيقاف VM بـ usernet./scripts/vm-start-usernet.sh / ./scripts/vm-stop-usernet.sh
نواة قابلة للاستغلال + PoC (انهيار)./scripts/install-vulnerable-mainline.sh
إعادة تعيين القرص بعد الانهيارrm -f vm/victim.qcow2 && ./scripts/prepare-disk.sh && ./scripts/build-seed-dhcp.sh
حمولة إلى IP/مضيف LAN./send-payload-to-host.sh <IP|hostname>
بناء صورة مرسل Dockerdocker compose build
تنزيل الأداة