هجوم SAD DNS جديد لإدراج بيانات زائفة في ذاكرة التخزين المؤقت لـ DNS

نشر فريق من الباحثين من جامعة كاليفورنيا، ريفرسايد، نسخة جديدة من هجوم SAD DNS (CVE-2021-20322) الذي يعمل على الرغم من الحماية التي تمت إضافتها العام الماضي لحظر الثغرة الأمنية CVE-2020-25705. تشبه الطريقة الجديدة بشكل عام ثغرة العام الماضي وتختلف فقط في استخدام نوع مختلف من حزم ICMP للتحقق من منافذ UDP النشطة. يسمح الهجوم المقترح باستبدال البيانات الوهمية في ذاكرة التخزين المؤقت لخادم DNS، والتي يمكن استخدامها لاستبدال عنوان IP لمجال عشوائي في ذاكرة التخزين المؤقت وإعادة توجيه الطلبات إلى المجال إلى خادم المهاجم.

الطريقة المقترحة تعمل فقط في مكدس شبكة Linux بسبب ارتباطها بخصائص آلية معالجة حزم ICMP في Linux، والتي تعمل كمصدر لتسرب البيانات مما يبسط تحديد رقم منفذ UDP الذي يستخدمه الخادم لإرسال رسالة طلب خارجي. تم اعتماد التغييرات التي تمنع تسرب المعلومات في نواة Linux في نهاية أغسطس (تم تضمين الإصلاح في تحديثات kernel 5.15 وسبتمبر لفروع LTS للنواة). يتلخص الإصلاح في التبديل إلى استخدام خوارزمية تجزئة SipHash في ذاكرة التخزين المؤقت للشبكة بدلاً من Jenkins Hash. يمكن تقييم حالة إصلاح الثغرة الأمنية في التوزيعات على هذه الصفحات: Debian، RHEL، Fedora، SUSE، Ubuntu.

وفقًا للباحثين الذين حددوا المشكلة، فإن حوالي 38% من وحدات الحل المفتوحة على الشبكة معرضة للخطر، بما في ذلك خدمات DNS الشائعة مثل OpenDNS وQuad9 (9.9.9.9). أما بالنسبة لبرنامج الخادم، فيمكن تنفيذ الهجوم باستخدام حزم مثل BIND وUnbound وdnsmasq على خادم Linux. لا تظهر المشكلة على خوادم DNS التي تعمل على أنظمة Windows وBSD. لتنفيذ الهجوم بنجاح، من الضروري استخدام انتحال IP، أي. من الضروري ألا يقوم مزود خدمة الإنترنت الخاص بالمهاجم بحظر الحزم ذات عنوان IP مصدر مزيف.

للتذكير، يتجاوز هجوم SAD DNS وسائل الحماية المضافة إلى خوادم DNS لمنع طريقة تسميم ذاكرة التخزين المؤقت لـ DNS الكلاسيكية التي اقترحها دان كامينسكي في عام 2008. تعالج طريقة Kaminsky الحجم الصغير لحقل معرف استعلام DNS، والذي يبلغ 16 بت فقط. لتحديد معرف معاملة DNS الصحيح اللازم لانتحال اسم المضيف، يكفي إرسال ما يقرب من 7000 طلب ومحاكاة حوالي 140 ألف استجابة وهمية. يتلخص الهجوم في إرسال عدد كبير من الحزم بربط IP وهمي ومع معرفات معاملات DNS مختلفة إلى محلل DNS. لمنع التخزين المؤقت للاستجابة الأولى، تحتوي كل استجابة وهمية على اسم مجال تم تعديله قليلاً (1.example.com، 2.example.com، 3.example.com، وما إلى ذلك).

للحماية من هذا النوع من الهجمات، نفذت الشركات المصنعة لخادم DNS توزيعًا عشوائيًا لأعداد منافذ الشبكة المصدر التي يتم إرسال طلبات الحل منها، مما يعوض الحجم غير الكافي للمعرف. بعد تطبيق الحماية من إرسال استجابة وهمية، بالإضافة إلى تحديد معرف 16 بت، أصبح من الضروري تحديد واحد من 64 ألف منفذ، مما أدى إلى زيادة عدد خيارات التحديد إلى 2^32.

تتيح لك طريقة SAD DNS تبسيط تحديد رقم منفذ الشبكة بشكل جذري وتقليل الهجوم إلى طريقة Kaminsky الكلاسيكية. يمكن للمهاجم اكتشاف الوصول إلى منافذ UDP غير المستخدمة والنشطة من خلال الاستفادة من المعلومات المسربة حول نشاط منافذ الشبكة عند معالجة حزم استجابة ICMP. تتيح لنا هذه الطريقة تقليل عدد خيارات البحث بمقدار 4 أوامر من حيث الحجم - 2^16+2^16 بدلاً من 2^32 (131_072 بدلاً من 4_294_967_296). يحدث تسرب المعلومات الذي يسمح لك بتحديد منافذ UDP النشطة بسرعة بسبب وجود خلل في التعليمات البرمجية لمعالجة حزم ICMP مع طلبات التجزئة (علامة ICMP Fragmentation Needed) أو إعادة التوجيه (علامة إعادة توجيه ICMP). يؤدي إرسال مثل هذه الحزم إلى تغيير حالة ذاكرة التخزين المؤقت في مكدس الشبكة، مما يجعل من الممكن، بناءً على استجابة الخادم، تحديد منفذ UDP النشط وأي منفذ غير نشط.

سيناريو الهجوم: عندما يحاول محلل DNS حل اسم المجال، فإنه يرسل استعلام UDP إلى خادم DNS الذي يخدم المجال. أثناء انتظار وحدة الحل للرد، يمكن للمهاجم تحديد رقم المنفذ المصدر الذي تم استخدامه لإرسال الطلب بسرعة وإرسال استجابة زائفة إليه، وانتحال صفة خادم DNS الذي يخدم المجال باستخدام انتحال عنوان IP. سيقوم محلل DNS بتخزين البيانات المرسلة في الرد المزيف وسيقوم لبعض الوقت بإرجاع عنوان IP الذي استبدله المهاجم بجميع طلبات DNS الأخرى لاسم المجال.

المصدر: opennet.ru

إضافة تعليق