ثغرة أمنية في حزمة IPv6 الخاصة بنواة Linux والتي تسمح بتنفيذ التعليمات البرمجية عن بعد

تم الكشف عن معلومات حول الثغرة الأمنية CVE-2023-6200) في حزمة الشبكة الخاصة بنواة Linux، والتي، في ظل ظروف معينة، تسمح لمهاجم من شبكة محلية بتحقيق تنفيذ التعليمات البرمجية الخاصة به عن طريق إرسال حزمة ICMPv6 مصممة خصيصًا مع رسالة RA (إعلان جهاز التوجيه) تهدف إلى الإعلان عن معلومات حول جهاز التوجيه.

لا يمكن استغلال الثغرة الأمنية إلا من الشبكة المحلية وتظهر على الأنظمة التي تم تمكين دعم IPv6 فيها والمعلمة sysctl "net.ipv6.conf.<network_interface_name>.accept_ra" نشطة (يمكن التحقق منها باستخدام الأمر "sysctl net.ipv6.conf" | grep Accept_ra")، والذي يتم تعطيله افتراضيًا في RHEL وUbuntu لواجهات الشبكة الخارجية، ولكنه ممكّن لواجهة الاسترجاع، والتي تسمح بالهجوم من نفس النظام.

سبب الثغرة الأمنية هو حالة سباق عندما يقوم جامع البيانات المهملة بمعالجة سجلات fib6_info التي لا معنى لها، والتي يمكن أن تؤدي إلى الوصول إلى منطقة الذاكرة المحررة بالفعل (الاستخدام بعد الاستخدام المجاني). عند تلقي حزمة ICMPv6 مع رسالة إعلان جهاز التوجيه (RA، إعلان جهاز التوجيه)، تستدعي حزمة الشبكة وظيفة ndisc_router_discovery()، والتي، إذا كانت رسالة RA تحتوي على معلومات حول عمر المسار، تستدعي وظيفة fib6_set_expires() وتملأ gc_link بناء. لتنظيف الإدخالات القديمة، استخدم الدالة fib6_clean_expires()، التي تفصل الإدخال في gc_link وتمسح الذاكرة المستخدمة بواسطة بنية fib6_info. في هذه الحالة، هناك لحظة معينة يتم فيها تحرير ذاكرة بنية fib6_info بالفعل، لكن الرابط إليها يظل موجودًا في بنية gc_link.

ظهرت الثغرة بدءًا من الفرع 6.6 وتم إصلاحها في الإصدارين 6.6.9 و6.7. يمكن تقييم حالة إصلاح الثغرة الأمنية في التوزيعات على هذه الصفحات: Debian، Ubuntu، SUSE، RHEL، Fedora، Arch Linux، Gentoo، Slackware. من بين التوزيعات التي تشحن حزمًا بنواة 6.6، يمكننا ملاحظة Arch Linux، وGentoo، وFedora، وSlackware، وOpenMandriva، وManjaro؛ وفي توزيعات أخرى، من الممكن أن يتم نقل التغيير مع وجود خطأ إلى حزم ذات فروع أقدم للنواة (لـ على سبيل المثال، في دبيان يُذكر أن الحزمة ذات النواة 6.5.13 ضعيفة، بينما ظهر التغيير الإشكالي في الفرع 6.6). كحل بديل للأمان، يمكنك تعطيل IPv6 أو تعيين معلمات "net.ipv0.conf.*.accept_ra" على 6.

المصدر: opennet.ru

إضافة تعليق