الأحد، 18 مايو 2014

عن نزف قلب المصادر المفتوحة

منذ فترة بسيطة اكتشف الباحث في الأمن المعلوماتي ”Neel Mehta” (و الذي يعمل في شركة google) ثغرة أمنية في غاية الخطورة في المكتبة البرمجية مفتوحة المصدر OpenSSL، و قد تم إطلاق اسم “نَزْف القلب heartbleed” علي تلك الثغرة. مما جعل الدنيا كلها تنشغل بالحديث عن الأمر ليل نهار، و مما لا شك فيه أنكم مثلي تشبعتم تماماً من كثرة المقالات التي قرأتموها و تتحدث عن هذا الأمر، مما قد يدفع الكثير منكم للتساؤل عن السبب الذي يدفعني إلي الكتابة عن ذات الموضوع الذي قتله الجميع بحثاً !.
 
في الواقع فإنني أحب أن أتحدث عن الأخبار و الأمور التقنية بعد فترة غير قصيرة من ظهورها و انشغال الناس بها، لستُ أتذكر إن كنتُ قد تحدثتُ من قبل عن أمر من الأمور التقنية في عُجالة أم لا، و لكن ما أدريه عن نفسي أنني أفضِّل أن أقرأ معظم (إن لم يكن كل) وجهات النظر عن المسائل التي تشغلني، ثم أدون بعض الأفكار عما قرأته، و بين فترة و أخري أعود لما كتبتُه لأعدِّل فيه بما يتفق مع الجديد الذي قرأتُه عن ذات الموضوع. خصوصاً في تلك الأحيان التي يكون فيها الموضوع خارج نطاق تخصصي، و/أو يكون شائكاً و يمثل حقل ألغام لكل من يريد الخوض فيه، و في الواقع فإن مسألة الثغرة التي تم اكتشافها في OpenSSL من أهم الأمثلة علي النوعين الأخيرين.

 
مكتبة الـOpenSSL هي مكتبة برمجية مفتوحة المصدر open source، تختص بالتشفير و تبادل البيانا بأمان علي الشبكة، و هذا معناه أنه يمكن لأي برامج تريد تشفير البيانات التي تتبادلها علي الشبكة أن تستخدم تلك المكتبة الجاهزة لهذا الغرض، و هكذا يستطيع مطورو تلك البرامج التركيز علي تطوير المميزات الرئيسة في برامجهم، و كذلك فإن مواقع الشبكة تستخدم هذه المكتبة في نقل البيانات من/إلي جهاز حاسوبك حينما تقوم بتصفح الانترنت بأمان، و قد انتشر استخدام المكتبة بشكل مرعب في الانترنت و اعتمد عليها الملايين في عملهم بشكل تام، لدرجة أن الثغرة التي تم اكتشافها جعلت أمن العالم الرقمي يتأثر بكل ما تعنيه الكلمة من معني و تحول الأمر إلي أشبه ما يكون بكارثة تسونامي رقمية !
 
المشكلة أنه في عام 2011 قام Robin Seggelmann و الذي كان ساعتها طالب دكتوراة في جامعة Duisburg-Essen بكتابة كود الـ Heartbeat Extension في الـOpenSSL. ثم طلب إضافة الأكواد التي بناها إلي النسخة الرئيسة، و هكذا قام Stephen N. Henson و هو أحد المطورين الأربعة الرئيسين في مشروع OpenSSL بمراجعة تلك الأكواد، و لكنه للأسف لم يلحظ المشكلة التي فيها و بالتالي شقت الأكواد التي تسبب المشكلة طريقها إلي النسخة الرئيسة من الأكواد، و هكذا انتشرت كما تنتشر النار في الهشيم حينما استخدم الجميع الإصدارة التالية من المكتبة و التي تحمل الثغرة في داخلها. ثم انفتحت أبواب الجحيم حينما أبلغ “Neel Mehta” عن الأمر في الأول من أبريل 2014، ليتم الإعلان بعدها عن الأمر علي الملأ، لكن هناك بعض الدلائل التي تثبت أن بعض المؤسسات التي تعتمد علي OpenSSL كانت تعلم بأمر الثغرة قبل هذا، و حاولت ترقيع الأكواد بحيث تتلافي ضررها الفادح.
 
ردود الفعل التي أتت بعد الإعلان عن الثغرة كانت تحمل الكثير من الهستيريا و المُغالطات؛ فالبعض أشار أن الأمر كله ليس إلا مؤامرة ربما يكون مبرمجو مكتبة الـOpenSSL لهم دور فيها، و هذا لا يحتمل سوي أن تكون مهمتهم هي إنشاء الثغرة لتستطيع الوكالات الأمنية (مثل الـNSA الأمريكية) الوصول إلي البيانات الحرجة التي يرغب أصحابها في الحفاظ علي سريتها و خصوصيتها، و هو ظن شديد الغرابة لأن هذه الأكواد منشورة و من المُتاح لكل المتخصصين أن يروها و يكتشفوها كما فعل Neel بالضبط !، صحيح أن هذا الأمر تأخر حوالي العامين و لكن المؤامرات لا تتم بهذه الطريقة الحمقاء.
 
أما الاحتمال الآخر فهو أن مبرمجي المكتبة تركوا الثغرة موجودة رغم علمهم بها من قبل هو غريب أيضاً؛ فمعظم المبرمجين الرئيسيين حسبما أعلم لا يستفيدون مادياً من وراء المشروع، كما أن التبرعات السنوية التي جمعوها آخر مرة كانت صغيرة للغاية بما لا يجعلهم قادرين حتي علي التفرغ لتطوير المكتبة بدوام كامل (رغم أن هناك ملايين الشركات التي تستفيد من المكتبة، و يمكن جمع عشرات الملايين من الدولارات بمجرد تبرعات صغيرة من أولائك المستفيدين من المشروع) !، و بالتالي فإن الاستفادة الوحيدة لهم من وراء المشروع هو تحقيق طموحاتهم العلمية بأن يروا العالم كله يستخدم المكتبة التي يبنونها، فأين استفادة هؤلاء من ترك الثغرة موجودة و تشويه سمعة مشروعهم ؟!، لذلك أقول أن هذا الاحتمال مستبعد للغاية في رأيي.
 
من ناحية أخري فإن البعض لا يري الأمر علي شكل مؤامرة، بل علي شكل دليل علي كون البرمجيات مفتوحة المصدر أقل تطوراً و قوة من البرمجيات المملوكة لشركات تقنية، و قد علق أحد الإخوة الفضلاء علي موضوع في موقع Arabia I/O يتحدث عن ثغرة الـOpenSSL بما يُفهم منه أن البرمجيات الحرة (هكذا تعميماً) لا تصلح كبديل للبرمجيات المملوكة، و أنه يلوم الحكومات و الدول علي السماح بوجود هذا النوع من البرمجيات الذي يضر بالبرمجيات التجارية و الشركات القائمة عليها !.
 
و بينما أستوعبُ أنه من حق كل واحد منا (سواء أكان يؤيد البرمجيات مفتوحة المصدر أو لا يطيق مجرد سماع اسمها) أن ينتقد الدعاية المبالغ فيها لصالح البرمجيات مفتوحة المصدر (كما فعلتُ أنا نفسي من قبل حينما قلتُ أن أغلب الدعاية التي يُروَّج بها لتوزيعات الـGNU/linux لسطح المكتب مبالغ فيها و غير صحيحة)، لكن لا يمكنك بأي حال من الأحوال أن تمنع الناس من فتح مصادر أكوادهم لأنه “ربما” يكون فيها ثغرات و لأنها تضر بالشركات التجارية !، لأنه في نهاية المطاف لم يقم أحد بإجبار الناس علي استخدام تلك البرمجيات رغماً عنهم، بل و في إمكان الجميع أن يجدوا في رخص البرمجيات مفتوحة المصدر ما ينص علي أنه ليس هناك ضمان من أي نوع لعملها كما ينبغي، و انظروا إن أحببتم إلي الفقرة التالية التي تجدونها في ترخيص GNU GPL:
 


This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

 
 
و أنا لا أستوعب مسألة أن تُلام الدول و الحكومات علي سماحها لمثل هذا النوع من البرمجيات؛ فهذا الكلام لا يمكن أن يُفهم منه سوي المطالبة بقوانين تمنع الناس من حرية نشر أكوادهم التي كتبوها بأنفسهم ؟! و هذا لا يعني سوي الفاشية بعينها !
 
ثم إن كل مبرمج يفهم عمله جيداً يُدرك أن جميع البرمجيات معرضة لمثل هذا النوع من الثغرات، و الدليل العملي علي هذه المسألة هو الثغرة التي ظهرت منذ فترة في أكواد الـSSL في أكواد أنظمة تشغيل Apple (يبدو أن هذا هو موسم حصاد ثغرات الـSSL !)، رغم أن Apple شركة تربح ما يفوق ميزانية عدة دول مجتمعة، و شعارها الدائم هو أن برمجياتها هي الأكثر أمناً و إبداعاً !، و لو طبقنا المنطق السابق علي الجميع بالعدل فسيكون من حقنا المطالبة بمنع شركة Apple من العمل تماماً لأنها لا تقدم لنا البديل المناسب !.
 
علي صعيد آخر فإن رد فعل القائمين علي مشروع OpenBSD كان مختلفاً إلي حد كبير، و الأهم أنه كان تحركاً علي نطاق عملي؛ فقد أنشؤوا مشروعاً برمجياً جديداً يُدعي libreSSL، و هو عبارة عن اشتقاق fork من أكواد مكتبة الـOpenSSL، بغرض حذف عشرات الآلاف من الأسطر البرمجية (إن لم يكن مئات الآلاف منها!)؛ و التي يقول القائمون علي LibreSSL أنه لا يحتاج للمميزات التي تقدمها هذه الأكواد إلا القليل جداً من المستخدمين، بينما الأغلبية العظمي من مستخدمي OpenSSL لا تهمهم هذه الاكواد في قليل أو كثير طالما أن الواجهة البرمجية API للمكتبة ستظل كما هي، بحيث يمكن نظرياً علي الأقل لأي مبرمج يستخدم مكتبة OpenSSL في مشاريعه البرمجية ان يقوم بحذف ملفات تلك الأخيرة و يضع ملفات مكتبة LibreSSL محلها و يظل بإمكانه عمل ترجمة compile لمشروع كما كان يفعل قديماً بالضبط.

أنا عن نفسي أظن أنه من حق الجميع التصرف بالشكل الذي يعود عليهم بالنفع طالما كان تصرفهم لا يُخالف شرعاً أو خلقاً كريماً أو مصلحة عامة، و لذلك كنت دائم الدفاع عن موقف شركة canonical و انفرادها ببعض المشاريع التقنية الخاصة بها، و التي لها بدائل أكثر شهرة و نضجاً في البرمجيات مفتوحة المصدر، و السبب في ذلك أنني أعلم علماً تاماً أنك حينما تعمل علي مشروع برمجي تكون مجرد مشارك عادي فيه فلن تكون لك القدرة الكاملة علي تغيير مسار العمل بما يتفق مع مصلحتك، و حينما ترغب في إضافة و/أو تعديل بعض الأمور للمشروع البرمجي مفتوح المصدر فإن هناك الكثيرين ممن ستحتاج علي الأقل لشرح الأمر و مدي أهميته لهم، ثم سيكون عليك الانتظار حتي يوافقوا علي تلك التعديلات، و الاحتمال كبير للغاية أن يتم رفض التعديلات الجديدة خصوصاً كلما كانت كبيرة و جذرية، و هكذا يكون من الأفضل لمن يري أن أهدافه تختلف بشكل كبير جداً عن الأهداف الخاصة بالقائمين علي مشروع تقني معين أن يقوم باشتقاق المشروع و التعديل فيه علي راحته، و بما أن هذا تقريباً ينطبق علي مشروع LibreSSL فإنني أري أنه من حقهم الانفراد بمشروع منفصل ما دام لا يمكن الجمع بين أهداف المشروعين.
 
لكن التصرف المثالي من وجهة نظري هو ما فعله المسؤولون في مؤسسة لينوكس linux foundation؛ حيث قاموا بتأسيس جبهة لتمويل المشاريع مفتوحة المصدر التي تعتبر حيوية في عالم التقنية للدرجة التي تجعل مئات الملايين يعتمدون عليها، و من ضمن الشركات اللاتي انضممن إلي الجبهة VMware, Rackspace, NetApp, Microsoft, Intel, IBM, Google, Fujitsu, Facebook, Dell, Amazon، و الغريب أن تلك القائمة تضم مجموعة من أكبر الشركات المنتجة للبرمجيات التجارية مغلقة المصدر في العالم !، و لكن من الواضح أن الخطر يهدد الكل بشكل أو بآخر للدرجة التي تجعل التعاون بين الجميع أمراً حرجاً. و مؤسسة الـlinux تقوم منذ فترة طويلة بتقديم دعم مماثل لمشروع نواة الـlinux عن طريق دفع مقابل مادي للمبرمجين الرئيسيين في المشروع، و علي رأسهم linus torvalds نفسه، و هم يرغبون في تكرار نفس الدور مع المشاريع مفتوحة المصدر ذات الثقل الكبير في عالم التقنية.
 
الخلاصة من كل ما ذكرتُه أن مبرمجي OpenSSL أسدوا خدمات جليلة بدون مقابل لمن استخدموا برمجياتهم، و كان من المفترض أن تقوم الشركات التي تستفيد من المشروع برد الجميل و لو بشكل صغير بدلاً من الاستفادة من جهد الآخرين ثم تركهم في مهب الريح !. و الثغرة الخطيرة التي اكتُشفت يمكن أن يقع فيها أي أحد حتي منتجوا البرمجيات التجارية المغلقة المصدر، و الأمر الوحيد الذي يمكن لوم OpenSSL عليه هو الدعاية المبالغ فيها (إن كان وصفهم لمنتجهم يخالف الواقع الفعلي)، و الترقيع المتأخر للثغرة (إن تم التأخر في الترقيع، و ما أعلمه أن الترقيع كان سريعاً للغاية)، فيما عدا هذا فسيكون الأمر تعصباً لطرف دون الآخر بغض النظر عن الحيادية الواجبة علي الكل. و أري أن الطبعي في مثل هذه الظروف أن يتم دعم جهود مؤسسة الـlinux لدعم أمثال تلك المشاريع بقوة، علي الأقل من جانب تلك الشركات التي اعتادت علي الاستفادة من مكتبة الـOpenSSL مجاناً.
 
هناك أمور أخري تتعلق بذات الموضوع و لكن لا يتسع هذا المقال لها، و يكفيه أنه تورم إلي هذه الدرجة الكبيرة. لذلك ربما أتحدث عنها في مقال قادم بمشيئة الله تعالي؛ لنحلل فيه المشاكل التي كشفتها تلك الأزمة في عالم البرمجيات مفتوحة المصدر، و كيف يمكن التغلب عليهن لجعله أفضل و أقوي.
 
 
 

هناك تعليقان (2):

  1. ماهو تنفيذ اكواد البرمجيات ولك جزيل الشكر

    ردحذف
  2. would you please ,, explain

    ردحذف