
إثبات مفهوم لاستغلال ثغرة إلغاء مرجعية مؤشر فارغ (NULL pointer dereference) في نواة لينكس داخل الدالة `icmp_tag_validation()`، مما يتيح رفض الخدمة عن بُعد عبر حزم ICMP مصممة خصيصًا.
إلغاء مرجع مؤشر فارغ في icmp_tag_validation() بنواة لينكس (تعطيل الخدمة عن بُعد)
تقوم الدالة icmp_tag_validation() في net/ipv4/icmp.c بإلغاء مرجع inet_protos[proto] دون التحقق من القيمة NULL. يمكن لمهاجم عن بُعد إرسال حزمة ICMP واحدة مصممة بعناية من نوع "Fragmentation Needed" مع رقم بروتوكول داخلي غير مسجّل لتعطيل النواة في سياق softirq.
المتأثر: نواة لينكس قبل الالتزامات 614aefe56af8 (الفرع الرئيسي) / d938dd5a0ad7 (المستقر 6.12)
sudo python3 poc.py --target <TARGET_IP> # حزمة واحدة، بروتوكول 253
sudo python3 poc.py --target <TARGET_IP> --proto 252 # بروتوكول غير مسجّل بديل
sudo python3 poc.py --target <TARGET_IP> --count 5 # تكرار
net.ipv4.ip_no_pmtu_disc = 3 (غير افتراضي؛ مطلوب للوصول إلى icmp_tag_validation())يُطرح هذا المشروع بموجب رخصة GNU GPLv3.
يُقدَّم لأغراض البحث الأمني الدفاعي والتعليم والاختبار المصرح به. لا تستخدم هذا الكود ضد أنظمة أو خدمات دون إذن صريح من المالك.
قد يشكل الاستخدام غير المصرح به انتهاكًا للقوانين المعمول بها. لا يمنح المؤلفون إذنًا لاختبار أنظمة الطرف الثالث وليسوا مسؤولين عن سوء الاستخدام.
راجع ملف LICENSE لشروط الضمان والمسؤولية.