أمان الذاكرة

عدم أمان الذاكرة

إنّ الأخطاء في أمان الذاكرة، أي الأخطاء في التعامل مع الذاكرة في لغات البرمجة الأصلية، هي المشكلة الأكثر شيوعًا في قواعد بيانات Android. وتشكّل هذه الثغرات أكثر من% 60 من ثغرات الأمان العالية الخطورة وملايين حالات الأعطال التي تظهر للمستخدمين.

 تؤثر أخطاء أمان الذاكرة في
  تجربة المستخدم والتكاليف والأمان.
الشكل 1: أخطاء أمان الذاكرة وتأثيرها السلبي على الجودة والأمان والتكاليف

تؤثر أخطاء أمان الذاكرة سلبًا في الجودة والثبات، وتشكّل حصة كبيرة من الأعطال التي تم رصدها على أجهزة المستخدمين النهائيين. لذلك، ترتبط كثافة أخطاء أمان الذاكرة العالية مباشرةً بتجربة المستخدم السيئة.
يمثّل الرمز البرمجي الأصلي، المكتوب بلغات غير آمنة للذاكرة مثل C وC++ وAssembly، أكثر من% 70 من رمز نظام التشغيل Android، ويظهر في% 50 تقريبًا من تطبيقات "متجر Google Play".
في ظلّ التعقيد المتزايد باستمرار للرمز البرمجي، ستزداد أخطاء أمان الذاكرة بمرور الوقت إذا لم تتم معالجتها. لذلك، من الضروري أن نوفّر لمنظومة التطبيقات المتكاملة أدوات وتقنيات يمكنها رصد هذه الأخطاء والحدّ منها، لأنّ ذلك يساهم في تحقيق النجاح على المدى الطويل.
خلال السنوات القليلة الماضية، عملنا عن كثب مع شركائنا في مجال الأجهزة لتطوير تقنيات الأجهزة، مثل ميزة Arm Memory Tagging، وقدintroduced Rust في قاعدة بيانات Android.
ستؤدي هذه التقنيات إلى تسريع مسارنا نحو أمان الذاكرة، وستساعد صناعة البرامج الأوسع نطاقًا في معالجة مشكلة رئيسية.

الأخطاء المتعلقة بأمان الذاكرة تؤثر سلبًا في الجودة

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

نرصد يوميًا ملايين الأعطال الأصلية من أجهزة المستخدمين النهائيين، ومع طرح GWP-ASan، تبيّن لنا أنّ معظمها ناتج عن أخطاء تتعلّق بسلامة الذاكرة.
تُثبت نقطة البيانات هذه الارتباط بين الجودة وكثافة أخطاء أمان الذاكرة، وهي متوافقة مع ما يلاحظه زملاؤنا في Chrome (راجِع قائمة الأخطاء الشائعة في GWP-ASan في Chrome).

الأخطاء المتعلّقة بأمان الذاكرة تؤثر سلبًا في الأمان

لطالما كانت أخطاء أمان الذاكرة هي السبب الرئيسي في ثغرات أمان Android ، وذلك منذ الإصدار الأول من Android.

تؤثر أخطاء أمان الذاكرة سلبًا في
  الأمان.
الشكل 2: مساهمة أخطاء أمان الذاكرة في ثغرات Android

على الرغم من أنّه من المُشجّع معرفة أنّ هذه المشكلة ليست مشكلة في Android فقط (اطّلِع على إحصاءات Chrome وMicrosoft )، علينا بذل المزيد من الجهد للحفاظ على أمان المستخدمين.
يتتبّع فريق Project Zero في Google عمليات استغلال ثغرات "اليوم الأول" التي تم استخدامها في هجمات حقيقية ضد المستخدمين على أنّها ثغرات "اليوم الأول". هذه ليست أخطاء افتراضية، بل هي ثغرات أمنية يتم استخدامها بشكل نشط في الهجمات ضد المستخدمين. تشكّل أخطاء أمان الذاكرة (تلف الذاكرة واستخدام الذاكرة بعد تفريغها) الغالبية العظمى من الأخطاء.

تؤدي أخطاء أمان الذاكرة إلى زيادة التكاليف

إنّ تحديث الأجهزة باستمرار من خلال إصلاحات الأمان يحافظ على أمان المستخدمين، ولكن تُكلّف هذه العملية المنظومة المتكاملة تكلفة مالية.

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

تُظهر الأبحاث أنّ رصد الأخطاء في وقت مبكر يمكن أن يقلل التكاليف بمقدار يصل إلى ست مرات. ومع ذلك، نظرًا لتعقيد منظومتنا المتكاملة ومتداخلة، ومتوسط عدد قواعد الرموز البرمجية التي يحافظ عليها المورّد والتعقيد المتزايد باستمرار للبرامج، يمكن أن تكون التوفيرات أعلى.

أمان الذاكرة

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

من المرجّح أن تصبح سلامة الذاكرة عاملاً مميّزًا للجودة والأمان في السنوات المقبلة، ويخطّط فريق Android لقيادة هذا المجال.

المتطلبات المتعلقة بأمان الذاكرة

ينصح مستند تعريف التوافق مع Android (CDD) بشدة باستخدام أدوات أمان الذاكرة أثناء التطوير.
نحن نعمل عن كثب مع المنظومة المتكاملة لزيادة استخدام أدوات أمان الذاكرة ودمج هذه الأدوات في عمليات الدمج والاختبار المستمرين.
بمرور الوقت، نريد التأكّد من اجتياز كل جهاز لاختبار كامل من خلال مجموعة أدوات اختبار التوافق (CTS)، وذلك باستخدام أدوات أمان الذاكرة التي تُثبت عدم العثور على أي أخطاء من هذا النوع. على سبيل المثال، سيُطلب من منصّات Arm v9 إجراء اختبار CTS مع تفعيل ميزة وضع العلامات على الذاكرة، في حين سيُطلب من منصّات Arm v8 إجراء اختبار CTS باستخدام HWASAN و KASAN.

Rust كلغة برمجة جديدة لرمز النظام الأساسي

طرح نظام التشغيل Android 12 Rust كلغة نظام أساسي. توفّر Rust أمانًا للذاكرة وخيوط المعالجة بمستويات أداء مشابهة لتلك التي توفّرها C/C++. نتوقع أن يكون Rust هو الخيار المفضّل لمعظم المشاريع الأصلية الجديدة. ومع ذلك، لا يمكن إعادة كتابة كل الرموز البرمجية غير الآمنة للذاكرة، والتي تمثّل حاليًا أكثر من% 70 من رمز نظام Android الأساسي، باستخدام Rust. ومن الآن فصاعدًا، سيكون Rust مكملاً لأدوات أمان الذاكرة.

أدوات أمان الذاكرة

يتيح Android مجموعة كبيرة من الأدوات التي تساعد في رصد أخطاء أمان الذاكرة. يعرض الشكل أدناه تصنيفًا لأدوات أمان ذاكرة Android المتاحة.

تؤثر أخطاء أمان الذاكرة سلبًا في
  الأمان.
الشكل 3: نظرة عامة على أدوات أمان الذاكرة في Android

تغطّي أدواتنا مجموعة كبيرة من سيناريوهات النشر والاستهدافات. تصف الوثائق التالية كل أداة وتوفّر مرجعًا لاستخدامها في منتجاتك.