
تصحيح تعليمي لثغرة تجاوز سعة المخزن المؤقت في telnetd الخاص بـ FreeBSD (CVE-2011-4862) مع شرح خطوة بخطوة للإصلاح وتعليمات التصحيح اليدوي.
في البداية حاولت استخدام diff لإنشاء تصحيح (patch). قمت بتطبيق التصحيح بالطريقة التي اعتقدت أنها ستعمل، قبل النظر إلى التصحيح الفعلي. encrypt.patch هو هذا التصحيح الأصلي الذي صنعته باستخدام diff. غير أنه عندما حاولنا تطبيق هذا التصحيح على freeBSD، لم يقبله.
بدلاً من ذلك، كان علينا جلب التصحيح الفعلي. ثم غيّرت التصحيح لتنفيذ الإصلاح بالطريقة التي اعتقدت في البداية أنه ينبغي أن يكون عليها. وهذا يعمل لأنه يضع المسار الكامل داخل التصحيح.
في التصحيح، نتحقق ببساطة من الطول مقارنةً بـ MAXLENGTH. إذا كان أكبر من ذلك، نضبطه على 0. بهذه الطريقة، يقع في حالة len = 0، والتي تُحدث خطأً. هذا يصلح المشكلة :-)
إليك شرح لكيفية تطبيق تصحيح في freeBSD. https://www.freebsd.org/security/advisories/FreeBSD-SA-11:08.telnetd.asc ما عليك سوى استخدام هذا التصحيح بدلاً من جلب التصحيح الحقيقي. سيعمل، ولن تتمكن بعد الآن من استغلال تجاوز سعة المخزن المؤقت.