CVE-2026-64194 in Net::DNS
الملخص
بحسب VulDB • 20/07/2026
تسمح الإصدارات من Net::DNS حتى 1.55 لـ Perl بحدوث هجوم حجب الخدمة (DoS) عبر سلاسل عميقة لمؤشرات ضغط DNS.
يتبع `Net::DNS::DomainName::decode` مؤشرات الضغط المحددة في RFC 1035 عن طريق الاستدعاء الذاتي بشكل متكرر دون وجود حد للعمق. من الممكن إنشاء اسم يؤدي إلى تشبع مكدس المكالمات (خاصة مع استجابات TCP الأكبر حجمًا)، مما قد يتسبب في حجب الخدمة.
تمنع الحيازة `$link < $offset` السلاسل الأمامية والدائرية، لكنها لا تزال تسمح بسلاسل عكسية طويلة بشكل تعسفي. يتم تعبئة ذاكرة التخزين المؤقت لكل إزاحة (`$cache`) عند بداية كل استدعاء، وتقوم بتجاوز إعادة اجتياز نفس الإزاحة فقط - حيث يستمر النزول الأولي عبر سلسلة جديدة في الاستدعاء الذاتي بالعمق الكامل.
يمكن لحزمة مُصممة خصيصًا أن تربط مؤشرات الضغط ثنائية البايت بحيث يشير كل منها إلى بايتين سابقين من السابق له، مما ينتج عنه طول سلسلة يساوي `offset / 2`. بالنسبة لمجال المؤشر ذي الـ 14 بت (أقصى إزاحة 16383)، فإن ذلك يعطي ما يصل إلى ~8191 إطارًا استدعائيًا. وفي حالة رسالة DNS عبر TCP، يكون الحد هو حقل الطول ثنائي البايت (~32767 إطار). يتعامل المكدس C الافتراضي في Perl مع بضعة آلاف فقط من الإطارات؛ وما وراء ذلك يتلقى العملية إشارات SIGSEGV أو ما شابهها، وهو ما يشكل حجبًا للخدمة لأي تطبيق يقوم بتحليل بيانات DNS غير موثوقة.
يتم تفعيل الثغرة بواسطة `Net::DNS::Packet->new(\$wire)`، أي في أي نقطة تقوم فيها المكتبة بفك تشفير رسالة DNS من الشبكة.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.