عدم أمان الذاكرة
تُعدّ أخطاء "أمان الذاكرة" والأخطاء في التعامل مع الذاكرة بلغات البرمجة الأصلية المشاكل الأكثر شيوعًا في قواعد رموز Android. وتمثل هذه البرامج أكثر من% 60 من الثغرات الأمنية الشديدة الخطورة وتشكّل ملايين من الأعطال المرئية للمستخدم.
تؤثر أخطاء أمان الذاكرة سلبًا في الجودة والثبات، وتشكّل
حصة كبيرة من الأعطال التي تم رصدها على أجهزة المستخدمين النهائيين. لذلك، ترتبط كثافة أخطاء أمان الذاكرة العالية مباشرةً بتجربة المستخدم السيئة.
يمثّل الرمز البرمجي الأصلي، المكتوب بلغات غير آمنة للذاكرة مثل C وC++ وAssembly،
أكثر من% 70 من رمز نظام التشغيل Android، ويظهر في% 50 تقريبًا من تطبيقات "متجر Google Play".
في ظلّ التعقيد المتزايد باستمرار للرمز البرمجي، ستزداد أخطاء أمان
الذاكرة بمرور الوقت إذا لم تتم معالجتها. لذلك، من الضروري أن نوفّر لمنظومة التطبيقات المتكاملة
أدوات وتقنيات يمكنها رصد هذه الأخطاء والحدّ منها، لأنّ ذلك يساهم في تحقيق النجاح على المدى الطويل.
على مدار السنوات العديدة الماضية، عملنا عن كثب مع شركائنا من الأجهزة لتطوير تقنيات الأجهزة، مثل "وضع العلامات على الذاكرة"، وقد أطلقنا Rust في قاعدة رموز Android.
ستؤدي هذه التقنيات إلى تسريع مسارنا نحو أمان الذاكرة،
وستساعد صناعة البرامج الأوسع نطاقًا في معالجة مشكلة رئيسية.
الأخطاء المتعلقة بأمان الذاكرة تؤثر سلبًا في الجودة
يمكن أن تؤدي أخطاء الأمان الكامنة في الذاكرة إلى نتائج غير محدّدة، استنادًا إلى حالة النظام. ويؤدي هذا السلوك غير المتوقّع إلى حدوث أعطال وتسبب انزعاجًا للمستخدمين.
نرصد يوميًا ملايين الأعطال الأصلية من أجهزة المستخدمين النهائيين،
ومع طرح GWP-ASan، تبيّن لنا أنّ معظمها ناتج عن أخطاء تتعلّق بسلامة
الذاكرة.
تُثبت نقطة البيانات هذه الارتباط بين الجودة
وكثافة أخطاء أمان الذاكرة، وتتوافق مع ما يلاحظه زملاؤنا في Chrome (راجِع قائمة الأخطاء الشائعة في GWP-ASan في Chrome).
الأخطاء المتعلقة بأمان الذاكرة تؤثر سلبًا في الأمان
لطالما كانت أخطاء أمان الذاكرة من العوامل الأكثر مساهمة في الثغرات الأمنية في نظام Android، وذلك حتى بعد الإصدار الأول من نظام التشغيل 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.
تغطّي أدواتنا مجموعة كبيرة من سيناريوهات النشر والاستهدافات. تصف الوثائق التالية كل أداة وتوفّر مرجعًا لاستخدامها في منتجاتك.