تم تضمين Rust ضمن اللغات الرئيسية لتطوير نظام Android الأساسي

أعلنت شركة جوجل عن إدراج لغة البرمجة Rust ضمن اللغات المسموح بها لتطوير منصة أندرويد. تم تضمين مترجم لغة Rust في شجرة مصدر Android في عام 2019، ولكن ظل دعم هذه اللغة تجريبيًا. تتضمن بعض مكونات Rust الأولى المخططة لنظام Android تطبيقات جديدة لآلية الاتصال بين العمليات Binder ومكدس Bluetooth.

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

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

في Android، يتم توفير أمان الذاكرة باللغات المدعومة بالفعل Kotlin وJava، لكنها غير مناسبة لتطوير مكونات النظام بسبب الحمل الزائد. يتيح Rust تحقيق أداء قريب من لغات C وC++، مما يسمح باستخدامه لتطوير أجزاء منخفضة المستوى من النظام الأساسي ومكونات للتفاعل مع الأجهزة.

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

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

بالنسبة لعمليات النظام في Android، تلتزم Google بـ "قاعدة الاثنين"، والتي بموجبها يجب ألا يستوفي أي رمز مضاف أكثر من شرطين من الشروط الثلاثة: العمل مع بيانات الإدخال التي لم يتم التحقق من صحتها، واستخدام لغة برمجة غير آمنة (C/C++)، و يعمل بدون عزل صارم لصندوق الحماية (مع امتيازات مرتفعة). تشير هذه القاعدة إلى أن كود معالجة البيانات الخارجية يجب إما أن يتم تقليله إلى الحد الأدنى من الامتيازات (معزولًا) أو كتابته بلغة برمجة آمنة.

لا تهدف Google إلى إعادة كتابة كود C/C++ الحالي في Rust، ولكنها تخطط لاستخدام هذه اللغة لتطوير كود جديد. من المنطقي استخدام Rust في التعليمات البرمجية الجديدة، لأنه من الناحية الإحصائية، تظهر معظم الأخطاء في التعليمات البرمجية الجديدة أو التي تم تغييرها مؤخرًا. على وجه الخصوص، تم اكتشاف حوالي 50% من أخطاء الذاكرة المكتشفة في Android في التعليمات البرمجية المكتوبة قبل أقل من عام.

تم تضمين Rust ضمن اللغات الرئيسية لتطوير نظام Android الأساسي


المصدر: opennet.ru

إضافة تعليق