حوالي 21٪ من الكود المترجم الجديد في Android 13 مكتوب بلغة Rust

لخص مهندسو Google النتائج الأولى لتقديم دعم التطوير بلغة Rust إلى نظام Android الأساسي. في Android 13، ما يقرب من 21% من التعليمات البرمجية المترجمة الجديدة المضافة مكتوبة بلغة Rust، و79% بلغة C/C++. يحتوي مستودع AOSP (مشروع Android مفتوح المصدر)، الذي يقوم بتطوير الكود المصدري لمنصة Android، على ما يقرب من 1.5 مليون سطر من كود Rust المرتبط بمكونات جديدة مثل مخزن مفاتيح التشفير Keystore2، ومكدس شرائح UWB (النطاق العريض للغاية) وتنفيذ بروتوكول DNS-over-HTTP3 وإطار المحاكاة الافتراضية AVF (Android Virtualization Framework) والحزم التجريبية للبلوتوث وWi-Fi.

حوالي 21٪ من الكود المترجم الجديد في Android 13 مكتوب بلغة Rust

وفقًا للاستراتيجية المعتمدة سابقًا لتقليل مخاطر الثغرات الأمنية الناجمة عن الأخطاء في العمل مع الذاكرة، تُستخدم لغة Rust حاليًا بشكل أساسي في تطوير تعليمات برمجية جديدة ولتعزيز أمان مكونات البرامج الأكثر ضعفًا وحيوية تدريجيًا. لا يوجد هدف عام يتمثل في نقل النظام الأساسي بالكامل إلى Rust ويبقى الكود القديم في C/C++، وتتم مكافحة الأخطاء فيه من خلال استخدام اختبار التشويش والتحليل الثابت واستخدامه في تطوير تقنيات مشابهة لـ باستخدام نوع MiraclePtr (ربط المؤشرات الأولية، وإجراء فحوصات إضافية للوصول إلى مناطق الذاكرة المحررة)، ونظام تخصيص الذاكرة Scudo (بديل آمن لـ malloc/free) وآليات اكتشاف الأخطاء عند العمل مع الذاكرة HWAsan (AddressSanitizer بمساعدة الأجهزة)، GWP-ASAN وKFENCE.

أما بالنسبة للإحصائيات المتعلقة بطبيعة الثغرات الأمنية في نظام أندرويد، فيلاحظ أنه مع انخفاض التعليمات البرمجية الجديدة التي تعمل بشكل غير آمن مع الذاكرة، هناك انخفاض في عدد الثغرات الأمنية الناجمة عن الأخطاء عند العمل مع الذاكرة. على سبيل المثال، انخفضت حصة الثغرات الناجمة عن مشاكل الذاكرة من 76% في عام 2019 إلى 35% في عام 2022. بالأرقام المطلقة، تم تحديد 2019 نقطة ضعف متعلقة بالذاكرة في عام 223، و2020 في عام 150، و2021 في عام 100، و2022 في عام 85 (جميع الثغرات المذكورة كانت في كود C/C++؛ وفي كود Rust، لا توجد مشكلات مماثلة حتى الآن. وجد). كان عام 2022 هو العام الأول الذي توقفت فيه الثغرات المتعلقة بالذاكرة عن السيطرة.

حوالي 21٪ من الكود المترجم الجديد في Android 13 مكتوب بلغة Rust

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

حوالي 21٪ من الكود المترجم الجديد في Android 13 مكتوب بلغة Rust

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

حوالي 21٪ من الكود المترجم الجديد في Android 13 مكتوب بلغة Rust


المصدر: opennet.ru

إضافة تعليق