ثغرات أمنية في مدير حزمة Cargo المستخدم في مشاريع Rust

في مدير حزم Cargo، المستخدم لإدارة الحزم وبناء المشاريع بلغة Rust، تم تحديد ثغرتين يمكن استغلالهما عند تنزيل حزم مصممة خصيصًا من مستودعات الطرف الثالث (يُذكر أن مستخدمي مستودع crates.io الرسمي لا تتأثر بالمشكلة). تسمح الثغرة الأمنية الأولى (CVE-2022-36113) بالكتابة فوق أول وحدتين بايت من أي ملف طالما تسمح الأذونات الحالية بذلك. يمكن استخدام الثغرة الأمنية الثانية (CVE-2022-36114) لاستنفاد مساحة القرص.

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

على وجه الخصوص، بعد تنزيل الحزمة، تقوم البضائع بتفريغ محتوياتها في الدليل ~/.cargo وتخزن علامة التفريغ الناجح في ملف .cargo-ok. جوهر الثغرة الأولى هو أن منشئ الحزمة يمكنه وضع رابط رمزي بداخلها بالاسم .cargo-ok، مما سيؤدي إلى كتابة النص “ok” للملف المشار إليه بواسطة الرابط.

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

المصدر: opennet.ru

إضافة تعليق