zlib-rs، بديل لـ zlib-rs في Rust والذي يهدف إلى معالجة المشكلات الناجمة عن أخطاء الذاكرة

zlib-rs بديل لمكتبة ضغط البيانات zlib

زليب-رس

مكتبة زليب، تم تطويره بواسطة جان لوب جيلي ومارك أدلر، هو عنصر أساسي لأنه يستخدم في مجموعة واسعة من التطبيقات التي ركز على ضغط الملفات بتنسيقات مثل ZIP وgzip وPNG بسبب كفاءته وتعدد استخداماته. هذه المكتبة كان موجودا منذ عام 1995 ونتيجة لاستخدامه على نطاق واسع، فقد كان أيضًا هدفًا لثغرات أمنية متعددة في الذاكرة.

جوهر zlib هو خوارزمية ضغط DEFLATE، والذي يجمع بين تقنيات ضغط البيانات بدون فقدان البيانات لخوارزمية LZ77 مع بنية شجرة هوفمان لتحقيق معدلات ضغط ملحوظة. هذا المزيج من التقنيات يجعل zlib فعالاً للغاية في ضغط البيانات وفك ضغطها، مما يجعله مفيدًا بشكل خاص في التطبيقات التي تكون فيها مساحة التخزين أو عرض النطاق الترددي محدودًا.

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

متأخر، بعد فوات الوقت، واجه zlib بعض نقاط الضعف التي تمت معالجتها في الإصدارات الأحدث من zlib، مثل CVE-2005-1849 وCVE-2016-9840 وCVE-2016-9841 وCVE-2016-9842 المذكورة أعلاه (فقط لذكر بعض الإصدارات المعروفة من zlib)، والتي يمكن استغلالها من قبل المهاجمين للتسبب في رفض الخدمة (DoS) أو حتى تنفيذ تعليمات برمجية عشوائية، وبسبب عيوب أمان الذاكرة الشائعة في مكتبات الضغط المكتوبة بلغة C/C++، يظل zlib هدفًا رئيسيًا.

ومن أجل معالجة هذه المشاكل، دون أن نترك جانباً طبيعة وفوائد زليب، ISRG (المنظمة التي تقف وراء مشروع Let's Encrypt والمخصصة لتحسين أمان الإنترنت) أعلنت مؤخرا عن إطلاق مشروع جديد والغرض منه هو إنشاء نظير لـ zlib في لغة برمجة Rust.

لقد قمنا بتعيين Tweede Golf في ديسمبر 2023 للتنفيذ الأولي استنادًا إلى zlib-ng، مع التركيز على الحفاظ على الأداء الممتاز مع تقديم أمان الذاكرة.

ما هو التالي

نحن نسعى حاليًا للحصول على التمويل لإكمال العمل اللازم لتجهيز التنفيذ الأولي للإنتاج.

البديل الجديد يسمى «زليب-رس» ويتم تقديم هذا على أنه حل zlib مكتوب في الصدأ بهدف أساسي هو معالجة مشكلات الأمان المرتبطة بأخطاء الذاكرة ونقاط الضعف الموجودة عادةً في مكتبات الضغط المكتوبة بلغة C/C++.

تطوير zlib-rs ينشأ ردا على ذلك إلى إحصائيات من Microsoft وGoogle تشير إلى ذلك تقريبًا 70% من نقاط الضعف ترجع إلى الإدارة غير الآمنة للذاكرة. باستخدام Rust كلغة برمجة، من المتوقع أن يقلل بشكل كبير من مخاطر نقاط الضعف هذه، مثل الوصول إلى مناطق الذاكرة المحررة أو تجاوز سعة المخزن المؤقت.

المشروع يحتوي zlib-rs على تطبيق Rust لتنسيق ملف zlib المتوافق مع واجهة برمجة تطبيقات zlib ويعمل المستودع حاليًا على تطبيقين:

  • زليب آر إس, تطبيق Rust المستند إلى zlib مع واجهة برمجة تطبيقات Rust آمنة (يُعتبر حاليًا غير مستقر، ولكن من المتوقع أن يستقر التنفيذ قريبًا).
  • ليبز آر إس سيس, واجهة برمجة تطبيقات C واجهة برمجة تطبيقات C لـ zlib-rs . واجهة برمجة التطبيقات (API) تعادل على نطاق واسع zlib-sys وzlib-ng-sys، ولكنها لا توفر حاليًا مجموعة وظائف gz*. من وجهة نظر روست، واجهة برمجة التطبيقات هذه ليست مريحة للغاية، لذا يوصى بالعمل مع flate2 في الوقت الحالي.

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

أخيرًا، تجدر الإشارة إلى أن عمل zlib-rs منشور حاليًا على GitHub في المستودع التالي ويتم توزيع الكود بموجب ترخيص Zlib. يمكنك التحقق من المزيد عنها en الرابط التالي.