انتهى FreeBSD 13 تقريبًا بتطبيق WireGuard المخترق مع انتهاكات الترخيص ونقاط الضعف

من قاعدة التعليمات البرمجية التي تم تشكيل إصدار FreeBSD 13 عليها، فإن التعليمات البرمجية التي تنفذ بروتوكول WireGuard VPN، والتي تم تطويرها بأمر من Netgate دون التشاور مع مطوري WireGuard الأصلي، والتي تم تضمينها بالفعل في الإصدارات المستقرة لتوزيع pfSense، كانت فضيحة إزالة. بعد مراجعة التعليمات البرمجية بواسطة Jason A. Donenfeld، مؤلف كتاب WireGuard الأصلي، اتضح أن تطبيق FreeBSD المقترح لـ WireGuard كان عبارة عن جزء من تعليمات برمجية رديئة ومليئة بتدفقات المخزن المؤقت وانتهاك GPL.

احتوى التنفيذ على عيوب كارثية في كود التشفير، وتم حذف جزء من بروتوكول WireGuard، وكانت هناك أخطاء أدت إلى تعطل النواة وتجاوز أساليب الأمان، وتم استخدام مخازن مؤقتة ذات حجم ثابت لإدخال البيانات. إن وجود بذرة بدلاً من عمليات التحقق التي تُرجع دائمًا "صحيح" ، بالإضافة إلى مطبوعات تصحيح الأخطاء المنسية مع إخراج المعلمات المستخدمة للتشفير، واستخدام وظيفة السكون لمنع حالات السباق، يقول الكثير عن جودة الكود.

تم نقل بعض أجزاء التعليمات البرمجية، مثل وظيفة crypto_xor، من تطبيق WireGuard الذي تم تطويره لنظام التشغيل Linux، في انتهاك لترخيص GPL. ونتيجة لذلك، تولى جيسون دوننفيلد، جنبًا إلى جنب مع كايل إيفانز ومات دنوودي (مؤلف منفذ WireGuard لـ OpenBSD)، مهمة إعادة صياغة التنفيذ الذي به مشكلات، وفي غضون أسبوع، استبدلوا بالكامل كود المطور الذي عينته Netgate . تم إصدار النسخة المعدلة كمجموعة منفصلة من التصحيحات، وتم وضعها في مستودع مشروع WireGuard ولم يتم تضمينها بعد في FreeBSD.

ومن المثير للاهتمام أنه في البداية لم تكن هناك أي علامات على وجود مشكلة؛ قامت شركة Netgate، التي أرادت أن تكون قادرة على استخدام WireGuard في توزيع pfSense، بتعيين ماثيو ميسي، الذي يتمتع بخبرة جيدة في نواة FreeBSD ومكدس الشبكة، ويشارك في إصلاحات الأخطاء ولديه خبرة في التطوير برامج تشغيل الشبكة لنظام التشغيل هذا. تم منح ميسي جدولًا زمنيًا مرنًا بدون مواعيد نهائية أو فحوصات منتصف المدة. وصفه المطورون الذين التقوا بمايسي أثناء عمله على FreeBSD بأنه مبرمج موهوب ومحترف ولم يرتكب أخطاء أكثر من غيره واستجاب للنقد بشكل مناسب. كانت الجودة الرديئة لكود تطبيق WireGuard لـ FreeBSD بمثابة مفاجأة لهم.

وبعد 9 أشهر من العمل، أضاف ميسي تنفيذه إلى فرع HEAD الذي تم استخدامه لصياغة إصدار FreeBSD 13، في ديسمبر الماضي دون إكمال مراجعة واختبار النظراء، وتم التطوير دون التواصل مع مطوري WireGuard الأصلي و منافذ OpenBSD وNetBSD. في فبراير، قامت Netgate بدمج WireGuard في الإصدار المستقر من pfSense 2.5.0 وبدأت في شحن جدران الحماية بناءً عليه. بعد التعرف على المشكلات، تمت إزالة كود WireGuard من pfSense.

كشفت التعليمات البرمجية المضافة عن ثغرات خطيرة تم استخدامها في عمليات استغلال 0-day، ولكن في البداية لم تعترف Netgate بوجود ثغرات وحاولت اتهام مطور WireGuard الأصلي بالهجمات والتحيز، مما أثر سلبًا على سمعتها. رفض مطور المنفذ في البداية الادعاءات المتعلقة بجودة التعليمات البرمجية واعتبرها مبالغ فيها، ولكن بعد إظهار الأخطاء، لفت الانتباه إلى حقيقة أن المشكلة المهمة حقًا هي عدم وجود مراجعة مناسبة لجودة التعليمات البرمجية في FreeBSD، لأن المشكلات ظلت غير مكتشفة لعدة أشهر (أشار ممثلو Netgate إلى أن المراجعة العامة قد تم إطلاقها في أغسطس 2020، لكن مطوري FreeBSD الفرديين أشاروا إلى أنه في Phabricator تم إغلاق المراجعة بواسطة Macy دون اكتمالها مع تجاهل التعليقات). استجاب فريق FreeBSD الأساسي للحادث من خلال الوعد بتحديث عمليات مراجعة التعليمات البرمجية الخاصة بهم.

وعلق ماثيو ميسي، مطور منفذ FreeBSD المشكل، على الموقف بالقول إنه ارتكب خطأً فادحًا بتوليه المهمة دون أن يكون جاهزًا لتنفيذ المشروع. ويفسر ميسي النتيجة الناتجة بالاحتراق العاطفي ونتيجة المشاكل التي نشأت بسبب متلازمة ما بعد كوفيد. وفي الوقت نفسه، لم يجد ميسي العزم على التخلي عن الالتزامات التي تعهد بها بالفعل وحاول إكمال المشروع.

ربما تأثرت حالة ميسي أيضًا بحكم السجن الأخير الذي تلقاه لمحاولته بشكل غير قانوني طرد المستأجرين من منزل اشتراه والذين كانوا غير راغبين في الخروج طوعًا. وبدلاً من ذلك، قام هو وزوجته بنشر عوارض الأرضية وإحداث فتحات في الأرضيات لجعل المنزل غير صالح للسكن، وحاولا أيضًا ترويع السكان، واقتحموا الشقق المحتلة وأخذوا ممتلكاتهم (تم تصنيف العمل على أنه سطو). ومن أجل تجنب المسؤولية عن أفعاله، فر ميسي وزوجته إلى إيطاليا، ولكن تم تسليمهما إلى الولايات المتحدة وقضيا أكثر من أربع سنوات في السجن.

المصدر: opennet.ru

إضافة تعليق