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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-41285-OpenBSD-v6daemons-go-brrr — خيار IPv6 ND بطول صفر. فحص واحد مفقود. البرنامج الخفي يسير إلى الخلف ويعيش في الحلقة. تم الإبلاغ إلى OpenBSD، تم الإصلاح، تم تعيين CVE. | Kitploit
أدوات/GitHubGitHub/rat5ak/cve-2026-41285-openbsd-v6daemons-go-brrr
تحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيأمن الشبكاتأمن الشبكات اللاسلكية
GitHubrat5ak/cve-2026-41285-openbsd-v6daemons-go-brrr

CVE-2026-41285-OpenBSD-v6daemons-go-brrr

خيار IPv6 ND بطول صفر. فحص واحد مفقود. البرنامج الخفي يسير إلى الخلف ويعيش في الحلقة. تم الإبلاغ إلى OpenBSD، تم الإصلاح، تم تعيين CVE.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-41285: حزمة واحدة تقتل IPv6 على OpenBSD

حزمة ICMPv6 مصممة بعناية من الشبكة المحلية تؤدي إلى تعليق دائم لـ slaacd و/أو rad. تتوقف عملية التكوين التلقائي لعناوين SLAAC IPv6 حتى يعيد شخص ما تشغيل الخدمة يدويًا. لا حاجة لمصادقة، ولا صلاحيات، و18 بايت من حمولة ICMPv6.

CVECVE-2026-41285
فئة الخطأحلقة لا نهائية عبر تجاوز عدد صحيح سالب
السبب الجذريمحلل خيارات ND ينفذ nd_opt_len * 8 - 2 دون التحقق من len==0
المكونsbin/slaacd/engine.c, usr.sbin/rad/engine.c
التأثيرتعطيل دائم لـ SLAAC IPv6 (slaacd) أو خدمة RA (rad)
المطلوبأي جهاز على نفس قطاع الشبكة L2
تم اختبارهOpenBSD 7.8 GENERIC amd64

الخطأ

تنص الفقرة §4.6 من RFC 4861 على أن خيارات ND التي طولها صفر غير صالحة ويجب التخلص منها بصمت. يقوم النواة الخاصة بها nd6_options() في sys/netinet6/nd6.c بذلك بشكل صحيح. لكن حزمة ICMPv6 الخام لا تزال تُرسل إلى مقابس المستخدم قبل أن يصبح هذا الفحص مهمًا.

يقوم كل من slaacd و rad بتحليل خيارات ND بأنفسهم. تبدو الحلقة كما يلي:

root@kitploit:~
while (len > 0) {
    // ...
    optlen = nd_opt->nd_opt_len * 8 - 2;  // nd_opt_len is uint8_t
    if (optlen > len)
        break;
    len += 2;
    // advance pointer by optlen... which is (uint32_t)-2 promoted from int
}

عندما يكون nd_opt_len == 0: التعبير 0 * 8 - 2 يُرقّى إلى int ← -2. الشرط الحارس (-2 > len) يكون دائمًا خطأ (مقارنة موقعة، len موجب). ثم len += 2 والمؤشر يعود للخلف بمقدار 2 بايت. الحلقة لا تتقدم أبدًا. تستخدم وحدة المعالجة المركزية بنسبة 100%. إلى الأبد.

تحققت النواة من نسختها الخاصة. تلقى الخفي في مساحة المستخدم الأصلي الخام. لم يخبر أحد slaacd.

التأثير

  • حزمة واحدة ← محرك slaacd عالق في حلقة لا نهائية مع استخدام 100% من وحدة المعالجة المركزية
  • يتم تجاهل جميع إعلانات RA اللاحقة ← لم يتم تكوين أي عناوين SLAAC جديدة
  • تنتهي صلاحية العناوين الحالية في النهاية (ينفد العمر الزمني، لا تجديد)
  • تتدهور اتصالية IPv6 إلى الموت على جميع الواجهات التي يديرها slaacd
  • نفس الهجوم ضد rad: حزمة RS مصممة تقتل خدمة RA للرابط
  • الاسترداد يتطلب إعادة تشغيل يدوي لـ rcctl restart slaacd أو إعادة تشغيل النظام

PoC

root@kitploit:~
python3 poc/kill_slaacd.py <interface>

يتطلب Scapy. يرسل إعلان راوتر واحد مع خيار ND واحد حيث nd_opt_len = 0. هذا كل شيء. نوع الخيار لا يهم (يستخدم PoC النوع 200 / غير معروف).

للإثبات الكامل من البداية إلى النهاية (يظهر SLAAC يعمل ← الهجوم ← SLAAC ميت):

root@kitploit:~
python3 poc/prove_dos.py

الأدلة

root@kitploit:~
── Before exploit ──
  SLAAC addresses: 2001:db8:1:0:df6f:edeb:6e3a:2640, ...
  Engine CPU: 0.0%

── After one packet ──
  Engine CPU: 23.1% → 43.3% (climbing)
  New RA with 2001:db8:2::/64 sent → no address configured
  slaacd is dead. IPv6 autoconf: DEAD.

أعمال سابقة

نفس سطح الهجوم مثل CVE-2022-27881 و CVE-2022-27882 (حلقات لا نهائية سابقة في slaacd في engine.c، أيضًا تحليل خيارات ND). هذه حالة جديدة من نفس فئة الأخطاء - لم تغطي التصحيحات السابقة جميع حلقات التحليل.

الإصلاح

تحقق من nd_opt_len == 0 قبل إجراء العمليات الحسابية عليه. اخرج من الحلقة. هذا ما تفعله النواة بالفعل في nd6_options():

root@kitploit:~
if (nd_opt->nd_opt_len == 0)
    break;  // or: goto bad;

التصحيح المقترح لـ parse_ra() في slaacd، و debug_log_ra()، ومحلل RS في rad - جميع الحلقات الثلاث تحتاج إلى نفس الحارس المكون من سطر واحد.

الجدول الزمني

  • 2026-04-12: تم الإبلاغ إلى [email protected] مع PoC والتصحيح
  • 2026-04-20: تم تعيين CVE-2026-41285 من قبل MITRE

لا تكن غبيًا

هذا هجوم تعطيل على الشبكة المحلية. إذا كنت على نفس قطاع L2 الذي يعمل عليه جهاز OpenBSD مع تشغيل slaacd، فإن حزمة واحدة تجمد IPv6 الخاص به. لا ترسلها إلى شبكات لا تملكها. إذا كنت تدير OpenBSD، تحقق من وجود تصحيح أو أضف الحارس len==0 بنفسك.


Daniel Wade - GitHub · Twitter/X · Bluesky · nadsec.online

تنزيل الأداة