إعدادات إضافة وضع علامات الذاكرة (MTE)

يمكن تفعيل إضافة وضع علامات الذاكرة (MTE) بشكل مستقل في نواة Android وفي أي في نظام Android. ولا تفرض Google قيودًا على وتهدف إلى توفير أكبر قدر ممكن من المرونة للجهاز والبنّائين.

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

Kernel

يتم ضبط إضافة وضع علامات الذاكرة (MTE) في النواة من خلال سطر الأوامر. تشير رسالة الأشكال البيانية الإعداد التلقائي هو "تفعيل" في وضع المزامنة. هذا عرضة للتغيير المستقبلي لعدة أسباب منها:

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

الاقتراح الحالي هو إيقاف kernel MTE على أجهزة الإنتاج. لتنفيذ ذلك، أضِف kasan=off إلى العنصر. سطر أوامر kernel.

مساحة المستخدم

توفّر Google قائمة تلقائية بثنائيات مساحة المستخدم التي يجب حمايتها. باستخدام ميزة MTE. تم إنشاء القائمة باستخدام إدخال من Android Security وتتضمن مكونات مميزة و/أو تتعامل مع طلبات غير موثوق بها المدخلات. القائمة المحدّثة للبرامج الثنائية الأصلية التي يوصى بها مع إضافة وضع علامات الذاكرة (MTE) في الـ memtag-common.mk في إصدار Android . بالإضافة إلى ذلك، عدّة تطبيقات النظام كما هي كذلك: حاليًا، Nfc، البلوتوث وSecureElement هذه البرامج الثنائية والتطبيقات يتم تفعيلها تلقائيًا في الوضع غير المتزامن.

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

التطبيقات

تطبيقات النظام الثلاثة المذكورة أعلاه هي التطبيقات الوحيدة التي تستخدم MTE في الوقت الحالي. حتى يتم تفعيل تطبيق تابع لجهة خارجية MTE، يحتاج AndroidManifest.xml إلى تحديد android:memtagMode مع قيمة أخرى مقارنةً بـ off وبالتالي، فإن مجموعات المعايير المشتركة مثل لا يعمل Geekbench أو AnTuTu مع MTE. إذا كان kernel MTE مناسبًا أيضًا غير مفعَّل (راجِع kasan=off أعلاه)، تكون مقاييس الأداء هي نتوقع أن يظهر تأثيرًا محدودًا جدًا في الأداء، إن وجد.

وبالنسبة إلى التطبيقات الأخرى، هناك تطوير نشط لدعم ميزة "إضافة وضع علامات الذاكرة" (MTE) في Chrome. يتضمّن إصدار Chrome الحالي من "متجر Play" الإعداد memtagMode=async في ملف البيان. كما أننا نتوقع أن عددًا من التطبيقات الواعية بالأمان في منظومة Android المتكاملة (على سبيل المثال، التطبيقات المصرفية) ستتخذ الإجراء نفسه في نهاية المطاف. في صفحة نتوقع أن تتطلب بعض التطبيقات استخدام وحدة معالجة مركزية عالية الأداء مثل الألعاب التي لن تؤثر في ميزة MTE.

وسائل نقل أخرى

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

نقترح اختبار تهيئة أو إعدادين آخرين لمعرفة ما إذا كانا جيدة بما يكفي لتلبية متطلبات الأداء/الطاقة. أوضاع MTE لكل وحدة معالجة مركزية (CPU) في النظام عن طريق الكتابة /sys/devices/system/cpu/cpu*/mte_tcf_preferred على سبيل المثال، كتابة سيؤدي الإجراء sync (أو asymm) إلى حدوث أي عملية تتطلب مساحة المستخدم ستتم ترقية الوضع غير المتزامن تلقائيًا إلى المزامنة (أو Asymm) تلقائيًا أثناء يعمل على هذا النواة. يمكن تنفيذ هذا الإعداد في ملف .rc على الجهاز وقت التشغيل.

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

  • Asymm على جميع النوى.
  • Asymm على نواة كبيرة، والمزامنة على نوى أخرى.

للتحقق من أن العملية تطلب الوضع غير المتزامن (مع إمكانية ترقية تلقائية)، تحقق من أن السطر التالي يتضمن كلاً من PR_MTE_TCF_SYNC وPR_MTE_TCF_ASYNC:

  debuggerd <PID> | head -30 | grep tagged_addr

لسوء الحظ، لا توجد طريقة سهلة لرؤية الوضع الفعال العملية ولكن أي عملية تعرض كلتا القيمتين المدرجتين أعلاه تكون لسلوك الترقية التلقائية.