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