Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2026-98432 — إثبات مفهوم (PoC) للتحقق فقط من CVE-2026-98432، وهو ثغرة use-after-free في Linux IPv4/TCP ضمن ireq_opt: محفّز حالة تسابق (race) وأداة استدلال لإعادة استخدام الكومة (heap-reuse oracle) تؤكد وجود UAF دون تنفيذ تعليمات برمجية. | Kitploit
أدوات/GitHubGitHub/alucard0x1/cve-2026-98432
أدوات دفاعيةتحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيأمن الشبكاتالأوراق والأبحاث
GitHubalucard0x1/cve-2026-98432

cve-2026-98432

إثبات مفهوم (PoC) للتحقق فقط من CVE-2026-98432، وهو ثغرة use-after-free في Linux IPv4/TCP ضمن ireq_opt: محفّز حالة تسابق (race) وأداة استدلال لإعادة استخدام الكومة (heap-reuse oracle) تؤكد وجود UAF دون تنفيذ تعليمات برمجية.

عرض المستودع
1743منذ 5 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-98432 — إثبات مفهوم استغلال use-after-free في ireq_opt لـ IPv4/TCP في Linux

إثبات مفهوم للتحقق فقط من CVE-2026-98432 (CVSS 9.8): ثغرة use-after-free قابلة للتشغيل عن بُعد في حزمة IPv4/TCP في Linux.

لاختبارات الأمان المصرّح بها فقط. شغّله ضد أنظمة تملكها أو لديك إذن صريح باختبارها.


ما الذي يثبته

يُفعّل إثبات المفهوم حالة التسابق (race) ويكتشف عندما ينسخ النواة بايتات من كائن ip_options_rcu محرَّر إلى حزمة SYN-ACK. وهو لا ينشئ مستخدمين أو ملفات، ولا ينفّذ سلسلة تنفيذ كود.

تعني الإصابة أن الخادم أعاد علامة تخصيص آخر داخل حزمة SYN-ACK الخاصة به — وهو ما لا تستطيع نواة سليمة فعله. في اختبار مُتحكَّم به على Ubuntu 24.04.5 بنواة 6.8.0-147-generic (المُدرجة كمعرّضة للثغرة من قِبل Ubuntu؛ الإصلاح مُجدول في 6.8.0-149)، أنتج تشغيل على الواجهة المحلية لمدة 180 ثانية 21 إصابة في 320,829 محاولة، وأنتج تشغيل لمدة 300 ثانية 22 إصابة في 616,911 محاولة. بقيت النواة نظيفة (tainted=0، دون oops).

لا تتضمن هذه الوثيقة أي التقاطات حزم أو سجلات من ذلك المضيف؛ مخرجات إثبات المفهوم نفسها هي الدليل.


1. الخلل

حزمة SYN تحمل خيارات IPv4 تجعل النواة تبني كائن ip_options_rcu (بحجم 72 بايت، kmalloc-96) لمقبس الطلب. عند اكتمال المصافحة، يسلّم tcp_v4_syn_recv_sock() ذلك الكائن إلى المقبس الابن دون نسخه، ثم يمسح المؤشر في مقبس الطلب. أي وحدة معالجة ثانية كانت قد بحثت عن مقبس الطلب مسبقًا قد تكون لا تزال داخل tcp_check_req() → tcp_v4_send_synack() → ip_build_and_send_pkt() → ip_options_build()، وتقرأ الكائن نفسه. مقابس الأبناء ليست SOCK_RCU_FREE، وinet_sock_destruct() يحرّر inet_opt باستخدام kfree() عادي، لذا إذا تم تفكيك الابن في تلك النافذة فإن القارئ يصل إلى ذاكرة محرَّرة.

يوجد متغيّر ثانٍ مع ترحيل مقبس الطلب (net.ipv4.tcp_migrate_req=1 أو برنامج BPF reuseport)؛ يستخدم الإصلاح kfree_rcu() في كلٍّ من inet_sock_destruct() وtcp_v4_reqsk_destructor().

أُدخل الخلل في Linux 4.4 (079096f103fa)؛ وأُصلح في mainline 7.3 وأُعيد نقله إلى 5.10.272 و5.15.223 و6.1.190 و6.6.159 و6.12.113 و6.18.56 و7.2.10. المتأثر: Linux 4.4 وما بعده، غير المُرقَّع.

يتراوح التأثير من تعطّل عن بُعد (DoS) إلى كشف ذاكرة النواة، ومع سلسلة استغلال كاملة، تنفيذ كود. يتوقف هذا المستودع عند إثبات use-after-free.


2. كيف يعمل إثبات المفهوم

لكل محاولة:

  1. SYN مع خيار IPv4 Timestamp بحجم 40 بايت (أو Record Route) → مقبس طلب مع ireq_opt؛ يعكس الهدف الخيار في حزمة SYN-ACK الخاصة به.
  2. SYN نقي مكرر يُرسل قبل ACK المصافحة بقليل، بحيث تشغّل وحدة معالجة ثانية مسار SYN-ACK مقابل مقبس الطلب.
  3. ACK يكمل المصافحة؛ يرث الابن inet_opt، ويُسقط مقبس الطلب مؤشره.
  4. RST (مع ACK، لكي ينجو من مرشّح RST المحلي) يفكّك الابن، محرّرًا الكائن بينما قد يكون قارئ SYN المكرر لا يزال يستخدمه.

المُتحقِّق (Oracle). كل محاولة تُضمّن قيمة سحرية فريدة 32-بت مع وسم تحقّق عند إزاحات الخيار 16..23. تحدث ثلاث عمليات إعادة كتابة قبل أن يرى قارئ في مساحة المستخدم الخيار:

المرحلةالفتحة
ip_options_compile() على الخادم لحزمة SYN4..7 (TS) / 3..6 (RR)
ip_options_build() على الخادم لحزمة SYN-ACK8..11 (TS) / 7..10 (RR)
ip_options_compile() على المضيف المستقبِل لحزمة SYN-ACK12..15 (TS) / 11..14 (RR)

تقع العلامة بعد الثلاث جميعًا. حزمة SYN-ACK تعكس القيمة السحرية لتخصيص مختلف (مع tag == magic ^ 0x5a5a5a5a) تُثبت أن القارئ نسخ من كائن محرَّر وأُعيد استخدامه.


3. المتطلبات

  • Linux، بصلاحيات root أو CAP_NET_RAW؛ يحتاج مرشّح RST التلقائي إلى CAP_NET_ADMIN (root).
  • الهدف: Linux غير مُرقَّع مع مستمع IPv4 TCP يستدعي accept().
  • Python 3.8+ (مُختبَر على 3.12)، المكتبة القياسية فقط.
  • iptables/nftables لمرشّح RST المجرّد.

--proof مكتفٍ ذاتيًا على مضيف واحد: يبدأ مستمعًا على الواجهة المحلية ويسابقه.


4. البدء السريع

4.1 اختبار ذاتي دون اتصال (أي نظام تشغيل، دون مقابس)

python3 poc_cve_2026_98432.py --selftest

4.2 فحص النواة (يُشغَّل على المضيف الخاضع للاختبار)

sudo python3 poc_cve_2026_98432.py --check

يطبع النواة قيد التشغيل، وجدول الإصدارات المُصلحة، ومعاملات sysctl ذات الصلة.

4.3 إثبات بأمر واحد (موصى به)

sudo python3 poc_cve_2026_98432.py --proof 9000 \
     --duration 180 --workers 6 --spray 2 --spray-rate 1000 \
     --pcap /tmp/proof.pcap

يبدأ مستمعًا على 127.0.0.1:9000، ويشغّل السباق، ويطبع الحكم، ويوقف المستمع، ويزيل قاعدة جدار الحماية المؤقتة. لا يتم إنشاء أي شيء على المضيف — فقط حالة TCP عابرة.

4.4 فحص مستمع بعيد

sudo python3 poc_cve_2026_98432.py --probe <TARGET>:<PORT>

فحص SYN واحد: يُبلّغ عمّا إذا كان الهدف مستمع MPTCP وما إذا كان يعيد خيار IPv4 (المطلوب من قِبل الأوراكل).

4.5 سباق عن بُعد (شبكة المختبر المحلية)

sudo python3 poc_cve_2026_98432.py <TARGET>:<PORT> \
     --workers 16 --spray 4 --duration 600 --pcap hits.pcap

تُرفض العناوين العامة ما لم يُمرَّر --allow-public. يُثبَّت مرشِّح RST المجرَّد تلقائيًا ويُزال عند الخروج.

4.6 مستمع مختبري مستقل

python3 poc_cve_2026_98432.py --listen 9000 --mptcp

يُربط بـ 127.0.0.1؛ أضف --listen-any فقط لمضيف مهاجم بعيد. يقبل المستمع كل اتصال ويغلقه فورًا باستخدام SO_LINGER(0)، مما يحرّر العملية الفرعية بسرعة.


5. قراءة المخرجات

الحقلالمعنى
attemptsعمليات المصافحة التي بدأت
synacksحزم SYN-ACK التي لوحظت (حوالي اثنتين لكل محاولة)
hitsحمل SYN-ACK علامة تخصيص آخر → تأكّد وجود UAF
anomaliesتم تحليل العلامة لكن الوسم غير مطابق (تلف جزئي)
leaksقيمة تشبه مؤشر النواة في البايتات المعكوسة
nooptSYN-ACK بدون الخيار المعكوس (syncookies/الطابور ممتلئ/الإزالة)
staleتمت تصفية إعادة إرسال SYN-ACK المتأخرة (ليست إصابة)
malformedSYN-ACK مع ihl < 5 (بصمة underflow لـ optlen القديمة)
timeoutsلا يوجد SYN-ACK خلال --timeout
sprayحزم SYN الخاصة برشّ الكومة التي أُرسلت

نموذج إصابة:

[!] UAF ORACLE HIT #1 at attempt sport=63042 (expected magic f815ca68 tag a24f9032)
    tcp <TARGET>:9000 -> <CLIENT>:63042 seq=c20ed8ef ack=d212b2b1 flags=0x12
    SYN-ACK echoed magic d4bcdcc7 tag 8ee6869d, belongs to another allocation
    ip options:
    44 28 11 00 03 71 b0 b5 03 71 cc 73 03 71 cc 73
    d4 bc dc c7 8e e6 86 9d 00 00 00 00 00 00 00 00

0x8ee6869d == 0xd4bcdcc7 ^ 0x5a5a5a5a: تُثبت علاقة الوسم أن البايتات المعكوسة هي علامة صالحة من تخصيص مختلف.

رموز الخروج: 0 = تمت ملاحظة الدليل، 3 = لا شيء، 2 = خطأ في الإعداد، 1 = خطأ في الاستخدام/وقت التشغيل.


6. الضبط

السباق احتمالي. على مضيف الاختبار، أعاد إنتاج السباق استخدام --workers 6 --spray 2 --spray-rate 1000 لمدة 3 دقائق على الأقل؛ بينما أنتج تشغيل لمدة 60 ثانية مع --workers 4 --spray 1 --spray-rate 500 صفر إصابات على المضيف نفسه. لا تستنتج "غير معرّض للثغرة" من تشغيل قصير.

  • --duration — مزيد من المحاولات؛ استغرق البحث المنشور عشرات الدقائق.
  • --workers — مزيد من المحاولات المتزامنة (8–16 على شبكة محلية).
  • --spray / --spray-rate — يُبقي kmalloc-96 في حالة تقليب مستمر حتى يُعاد استخدام كائنات الخيارات المحرَّرة.
  • --lead / --rst-delta / --jitter — مسح توقيتي بالميكروثانية؛ ابدأ بـ 20/40/10 وامسح lead من 0–40، وdelta من 0–80.
  • الواجهة الراجعة (loopback) أفضل من الشبكة المحلية؛ والشبكة المحلية أفضل من الإنترنت.

7. إعادة الإنتاج في المختبر

آلة افتراضية قابلة للتخلص منها أكثر أمانًا للتطوير. ابنِ نواة 6.12.112 معرّضة للثغرة عن طريق عكس سطري الإصلاح:

curl -LO https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.12.112.tar.xz
tar xf linux-6.12.112.tar.xz && cd linux-6.12.112
sed -i 's/kfree_rcu(rcu_dereference_protected(inet->inet_opt, 1), rcu);/kfree(rcu_dereference_protected(inet->inet_opt, 1));/' net/ipv4/af_inet.c
sed -i 's/kfree_rcu(rcu_dereference_protected(inet_rsk(req)->ireq_opt, 1), rcu);/kfree(rcu_dereference_protected(inet_rsk(req)->ireq_opt, 1));/' net/ipv4/tcp_ipv4.c
make defconfig
make -j"$(nproc)"

شغّله في QEMU ونفّذ --proof داخل الضيف، أو --race من المضيف مقابل المنفذ المُعاد توجيهه.


8. التخفيف

يتطلب المُشغِّل ترويسة IPv4 مع خيارات (ihl > 5). وإسقاطها عند الحافة يجعل الثغرة غير قابلة للوصول حتى يتم ترقيع النواة. باستخدام nftables:

تنزيل الأداة