توضّح هذه الصفحة أخطاء وأدوات أمان الذاكرة.
عدم أمان الذاكرة
تُعدّ أخطاء أمان الذاكرة، أي الأخطاء في معالجة الذاكرة في لغات البرمجة الأصلية، المشكلة الأكثر شيوعًا في قواعد رموز Android البرمجية. وهي مسؤولة عن أكثر من% 60 من ثغرات الأمان الشديدة الخطورة وعن ملايين الأعطال التي يلاحظها المستخدمون.
الشكل 1: أخطاء أمان الذاكرة وتأثيرها السلبي في الجودة والأمان والتكاليف
تؤثر أخطاء أمان الذاكرة سلبًا في الجودة والثبات، وهي مسؤولة عن نسبة كبيرة من الأعطال التي يتم رصدها على أجهزة المستخدمين النهائيين. لذلك، يرتبط ارتفاع كثافة أخطاء أمان الذاكرة بشكل مباشر بتجربة المستخدم السيئة.
تمثّل الرموز البرمجية الأصلية المكتوبة بلغات غير آمنة في الذاكرة، مثل C وC++ وAssembly، أكثر من% 70 من الرموز البرمجية لنظام Android الأساسي، وهي متوفّرة في% 50 تقريبًا من تطبيقات "متجر Google Play".
نظرًا للتعقيد المتزايد للرموز البرمجية، إذا لم تتم معالجة أخطاء أمان الذاكرة، ستزداد بمرور الوقت. لذلك، من الضروري أن نزوّد منظومتنا المتكاملة بالأدوات والتكنولوجيات التي يمكنها رصد هذه الأخطاء والحدّ منها لضمان تحقيق النجاح على المدى الطويل.
خلال السنوات العديدة الماضية، عملنا عن كثب مع شركائنا في مجال الأجهزة
لتطوير تكنولوجيات الأجهزة، مثل ميزة "وضع علامات على الذاكرة" من Arm، كما أضفنا لغة Rust إلى قاعدة رموز Android البرمجية.
ستساعدنا هذه التقنيات في تسريع مسارنا نحو توفير أمان الذاكرة،
كما ستساعد قطاع البرامج الأوسع نطاقًا في معالجة مشكلة أساسية.
تؤثّر أخطاء أمان الذاكرة سلبًا في الجودة
يمكن أن تتسبّب أخطاء أمان الذاكرة الكامنة في حدوث نتائج غير حتمية، وذلك حسب حالة النظام. ويؤدي هذا السلوك غير المتوقّع إلى حدوث أعطال وإزعاج للمستخدمين.
نرصد كل يوم الملايين من الأعطال الأصلية من أجهزة المستخدمين النهائيين، ومع طرح GWP-ASan، تبيّن لنا أنّ معظم هذه الأعطال ناتج عن أخطاء في أمان الذاكرة.
تؤكّد نقطة البيانات هذه على العلاقة بين جودة الأجهزة وكثافة أخطاء أمان الذاكرة، وهي تتوافق مع ما يلاحظه زملاؤنا في فريق Chrome (راجِع قائمة الأخطاء الشائعة في GWP-ASan في Chrome).
تؤثر أخطاء أمان الذاكرة سلبًا في الأمان
لطالما كانت أخطاء أمان الذاكرة هي السبب الرئيسي في حدوث الثغرات الأمنية في Android، وذلك منذ الإصدار الأول من Android.
الشكل 2: مساهمة أخطاء أمان الذاكرة في الثغرات الأمنية في Android
مع أنّنا نرى أنّ هذه المشكلة لا تقتصر على Android
(راجِع إحصاءات Chrome
وMicrosoft
)، إلا أنّنا بحاجة إلى بذل المزيد من الجهود لضمان أمان المستخدمين.
يتولّى فريق Project Zero
في Google تتبُّع
عمليات استغلال ثغرات اليوم الصفر التي تم استخدامها في هجمات فعلية ضد المستخدمين، وذلك باعتبارها ثغرات أمنية من نوع "اليوم الصفر". وهذه ليست أخطاء افتراضية، بل هي ثغرات يتم استغلالها بشكل نشط في الهجمات ضد المستخدمين. تشكّل أخطاء أمان الذاكرة (تلف الذاكرة واستخدام ذاكرة معيّنة بعد تفريغها) الغالبية العظمى من الأخطاء.
تزيد أخطاء أمان الذاكرة من التكاليف
إنّ الحفاظ على تحديث الأجهزة من خلال إصلاحات الأمان يحمي المستخدمين، ولكنّه يتطلّب تكلفة مالية على منظومتنا المتكاملة.
إنّ الكثافة العالية لأخطاء أمان الذاكرة في رمز المورّد ذي المستوى المنخفض، والذي غالبًا ما يتضمّن تعديلات مخصّصة، تزيد بشكل كبير من تكاليف الإصلاح والاختبارات. ومع ذلك، يمكن أن يؤدي رصد هذه الأخطاء في وقت مبكر خلال دورة التطوير إلى خفض هذه التكاليف.
تُظهر الأبحاث أنّ رصد الأخطاء في وقت مبكر يمكن أن يقلّل التكاليف بمقدار يصل إلى ستة أضعاف. ومع ذلك، نظرًا إلى تعقيد منظومتنا المتكاملة، ومتوسط عدد قواعد الرموز التي يحتفظ بها المورّد، والتعقيد المتزايد للبرامج، قد تكون المدخرات أعلى.
أمان الذاكرة
يتضمّن الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث تغييرات شاملة للحد من كثافة أخطاء أمان الذاكرة في قواعد بيانات Android. نحن بصدد توسيع نطاق أدوات أمان الذاكرة في Android وتقديم متطلبات جديدة تشجّع منظومتنا المتكاملة على معالجة هذا النوع من الأخطاء. وبمرور الوقت، من المفترض أن يؤدي ذلك إلى تحسين الجودة وتعزيز الأمان للمستخدمين وخفض التكاليف على المورّدين.
من المرجّح أن يصبح أمان الذاكرة عاملاً مميزًا للجودة والأمان في السنوات المقبلة، وتخطّط Android لأن تكون رائدة في هذا المجال.
المتطلبات التي تتيح استخدام ميزة "أمان الذاكرة"
يوصي مستند تعريف معايير التوافق لنظام التشغيل Android (CDD) بشدة باستخدام أدوات أمان الذاكرة أثناء عملية التطوير.
نعمل بشكل وثيق مع المنظومة المتكاملة لزيادة استخدام أدوات أمان الذاكرة ودمجها في عمليات الدمج المستمر والاختبار.
بمرور الوقت، نريد التأكّد من أنّ كل جهاز يجتاز عملية تشغيل كاملة لمجموعة أدوات اختبار التوافق (CTS) باستخدام أدوات أمان الذاكرة، ما يثبت عدم العثور على أي أخطاء من هذا النوع. على سبيل المثال، سيُطلب من منصات Arm v9 توفير عملية تشغيل لمجموعة أدوات اختبار التوافق مع تفعيل ميزة "وضع العلامات على الذاكرة"، بينما سيُطلب من منصات Arm v8 توفير عملية تشغيل لمجموعة أدوات اختبار التوافق باستخدام HWASAN وKASAN.
Rust كلغة برمجة جديدة لرمز النظام الأساسي
أتاح نظام التشغيل Android 12 استخدام Rust كلغة أساسية. توفّر لغة Rust أمان الذاكرة وأمان سلاسل التعليمات بمستويات أداء مشابهة للغة C/C++. ونتوقّع أن تكون لغة Rust هي الخيار المفضّل لمعظم المشاريع الجديدة التي تستخدم الرمز البرمجي الأصلي. ومع ذلك، لا يمكن إعادة كتابة جميع الرموز البرمجية غير الآمنة للذاكرة، والتي تمثّل حاليًا أكثر من% 70 من رموز نظام Android الأساسي البرمجية، بلغة Rust. من الآن فصاعدًا، ستكون لغة Rust مكمّلة لأدوات أمان الذاكرة.
أدوات أمان الذاكرة
يتوافق Android مع مجموعة كبيرة من الأدوات التي تساعد في رصد أخطاء أمان الذاكرة. يعرض الشكل أدناه تصنيفًا أدبيًا لأدوات أمان الذاكرة المتوفّرة في Android.

الشكل 3: نظرة عامة على أدوات أمان الذاكرة في Android
تغطّي أدواتنا مجموعة واسعة من سيناريوهات النشر والأهداف. تصف المستندات الواردة في هذا القسم كل أداة وتوفّر مرجعًا لاستخدامها في منتجاتك.