الاستنتاجات وشروط القرار

  • نجاح التثبيت، ونجاح التحقق من التوقيع، وهوية الناشر الرسمي هي ثلاثة أحكام منفصلة؛ ولا يمكن للأولين أن يحلا محل الثالث.
  • عادةً لا تستطيع الحزم المُعاد توقيعها ترقية نسخة رسمية مُثبَّتة تحت هوية توقيع مختلفة؛ فسلسلة الترقيات تُعد بوابة حاسمة لتحديد قنوات البناء الشاذة.
  • يجب أن تُثبِّت حزمة APK النهائية اسم الحزمة، والإصدار، وملخص الشهادة، وملخص الملف، ومصدر البناء، وترتيب معالجة القناة.
  • يجب على الخادم الحفاظ على قائمة بيضاء للإصدارات المسموح بها وهويات التطبيقات، والتعامل مع إشارات سلامة المنصة كمدخلات للمخاطر بدلاً من الوثوق بالبيانات التي يبلغ عنها العميل نفسه.

التمييز بين التحقق من التثبيت، وهوية التوقيع، والتفويض التجاري

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

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

لذلك، يجب ألا تساوي تقارير الاختبار بين «القابلية للتثبيت بعد إعادة التوقيع» و«فشل حماية التوقيع»، ولا بين «فشل التثبيت» و«إغلاق جميع مخاطر إعادة التعبئة». الأسئلة الصحيحة هي: هل يمكن للحزمة المُعدَّلة الوصول إلى أجهزة المستخدمين؟ هل يمكنها انتحال صفة النسخة الرسمية أثناء الترقية؟ هل يمكنها الاتصال بالخدمات الفعلية؟ وكيف يحدد الخادم هذه الحالات ويتعامل معها؟

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

لماذا تسمح الحزم المُعاد توقيعها غالبًا بالتثبيت الجديد فقط

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

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

تضيف عملية تدوير الشهادات وتوقيع تطبيقات Play تعقيدًا إلى سلسلة الإصدار. يجب على الفرق الحفاظ على هويات الشهادات الحالية والمسموح بها تاريخيًا، وقواعد التدوير، ومسؤوليات مفاتيح الرفع مقابل مفاتيح توقيع التطبيق. يجب أن تستخدم سياسات الخادم بيانات تتطابق مع طريقة التوزيع. ولا يجب أبدًا دمج شهادات التطوير وشهادات الرفع وشهادات التوزيع النهائية في حقل واحد.

  • تنفيذ ترقية تراكبية من الإصدار المباشر الحالي
  • إجراء تثبيت جديد بعد الإزالة
  • التحقق من تغييرات اسم الحزمة وتأثيراتها على دليل البيانات
  • التحقق من تدوير الشهادات مقابل قواعد منصة التوزيع

يجب أن تبدأ حوكمة إعادة التعبئة بهوية القطعة الأثرية النهائية

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

نوصي بإنشاء سجلات غير غامضة للقطع الأثرية لكل مرشح إصدار: اسم الحزمة، وversionCode، وversionName، وتجزئة SHA-256 للملف، وتجزئة SHA-256 للشهادة، ونتيجة التحقق من مخطط التوقيع، وأصل البناء، والقناة، وترتيب المعالجة، وطابع زمني للإنشاء. يجب أن تشير كل من الفحوصات الثابتة، وترقيات التثبيت، واختبارات التراجع الوظيفي، وقواعد السماح من جانب الخادم إلى هذا السجل.

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

مثال عمومي لسجل هوية ملف APK لمرشح الإصدار
artifact:
  package: com.example.redacted
  version_code: 240
  version_name: 2.4.0
  sha256: REDACTED
signing:
  certificate_sha256: REDACTED
  schemes: [v2, v3]
  distribution: managed-channel
pipeline:
  - build-release
  - harden-candidate
  - channel-resources
  - final-sign
acceptance:
  install_fresh: required
  upgrade_from_production: required
  server_policy_check: required

يجب على الخوادم معالجة العملاء الشاذين كمشكلة سياسة

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

يمكن لـ Play Integrity إرجاع أحكام بشأن التعرف على التطبيق ونزاهة الجهاز وترخيص الحساب والمخاطر البيئية. تشير الوثائق الرسمية إلى أن بعض الإشارات قد تكون غير متاحة بسبب إصدار نظام التشغيل أو شكل الجهاز أو مصدر التوزيع أو حالة خدمات Play أو الإعدادات. النهج الصحيح هو نمذجة حالات "غير متاح" و"فشل" و"عالي الخطورة" بشكل منفصل، مع إعداد استراتيجيات للتدهور graceful degradation أو التحقق الثانوي أو تقييد الامتيازات أو الرفض.

لا يمكن لسيناريوهات التوزيع غير Yudun ببساطة نسخ الإشارات الحصرية لـ Yudun. توزيع المؤسسات والقنوات المحلية والتسليم الخاص يتطلب إنشاء قوائم السماح الخاصة بها للإصدارات وتعيينات الشهادات وآليات الترقية وإجراءات معالجة الشذوذ. إشارات المنصة جزء من الأدلة وليست إجابة شاملة عبر جميع القنوات.

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

تسلسل الإصدار غير الصحيح يبطل الفحوصات السابقة

تعديل ملفات DEX أو الموارد أو ملف Manifest بعد التوقيع النهائي يكسر المحتوى المشمول بالتوقيع؛ فإن إعادة البناء أو إعادة التوقيع بعد المسح يفصل استنتاجات المسح عن الملف النهائي. إذا احتاجت أدوات معالجة القنوات إلى تعديل جسم الحزمة، فيجب إكمال ذلك قبل التوقيع النهائي، ويجب تثبيت التسلسل في سجل القطع الأثرية.

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

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

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

كيفية تحديد أن خطر إعادة التعبئة تحت سيطرة قابلة للنشر

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

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

لا تدعي هذه المقالة أن أي تقنية لتقوية التطبيق بمفردها يمكنها منع جميع عمليات التثبيت المعاد توقيعها. إن حوكمة إعادة التعبئة هي جهد هندسي منظومي يُنفَّذ jointly عبر إدارة التوقيع، وضوابط الترقية، وإدارة القطع الأثرية، ومرونة العميل، وإشارات المنصة، وسياسات جانب الخادم.

  • يمكن تدقيق هوية القطعة الأثرية الرسمية بشكل مستقل
  • لا يمكن للشهادات الشاذة أن تحل محل التثبيتات الرسمية بصمت
  • يحتوي الخادم على سياسات متدرجة للعملاء المجهولين
  • يمكن للمستخدمين الاسترداد إلى قنوات الإصدار الموثوقة
  • أكملت حزم التراجع التحقق المسبق من صحة الترقية

حدود الأدلة وقابلية التطبيق

يفصل هذا القسم حقائق النظام الموثقة، والأحكام الهندسية، والحدود التي لا يمكن تعميمها على مطالبات المنتج التي لم يتم التحقق منها.

حكم المادةالحقيقة أو الأساس الهندسيحد قابلية التطبيق
لا تعادل قابلية تثبيت الحزمة المعاد توقيعها هوية الناشر الرسمي.يتطلب نظام أندرويد أن تكون لتوقيعات ملفات APK إمكانية التحقق؛ إذ يمكن للمهاجمين إنشاء توقيعات متسقة ذاتيًا باستخدام مفاتيحهم الخاصة على المحتوى المُعدّل.تتأثر قابلية التثبيت أيضًا باسم الحزمة وسياسات الجهاز وإصدار نظام التشغيل ومصدر التثبيت؛ ولا يمكن استنتاج نتائج عينات محددة بناءً على مبادئ التصميم فقط.
يجب أن تتحقق ترقيات الطبقة العلوية (Overlay) من استمرارية هوية التوقيع.تنص الوثائق الرسمية لنظام أندرويد على أن المنصة تستخدم مفتاح توقيع التطبيق للتأكد من أن التحديثات صادرة عن حامل المفتاح نفسه.يجب التحقق من تدوير الشهادات وقواعد توقيع منصة التوزيع وفقًا لتكوين المشروع.
يجب التحقق من إشارات نزاهة المنصة ومعالجتها في الخلفية (Backend).تشمل أحكام Play Integrity معلومات حول التعرف على التطبيق والجهاز والحساب والبيئة؛ ويوصي المسؤولون باتخاذ استجابات في الخلفية بناءً على مستوى المخاطر.لا تغطي إشارات Play جميع البلدان أو القنوات أو الأجهزة أو السيناريوهات غير المتصلة بالإنترنت.
يجب أن تتوافق ملفات التسليم النهائية واحدًا لواحد مع أدلة الاختبار.يؤدي إعادة البناء أو تعديل الموارد أو إعادة التوقيع إلى تغيير هوية المخرجات والسلوك المحتمل أثناء التشغيل.تُرسخ ملخصات الملفات (File Digests) ارتباط الهوية لكنها لا توفر بحد ذاتها قدرات منع العبث.
لا يثبت فشل التثبيت بمفرده إغلاق مخاطر إعادة التعبئة (Repackaging).قد تظل الحزم الشاذة تشكل مخاطر عبر تغيير أسماء الحزم أو دورات إلغاء التثبيت وإعادة تثبيته أو استخدام قنوات أخرى أو استغلال غياب سياسات الإصدار من جانب الخادم.يجب التحقق من مسارات الهجوم المحددة ضمن نطاقات الاختبار المصرح بها مقابل بنى التوزيع والأعمال الواقعية.

أسئلة هندسية

لماذا لا يرفض النظام مباشرة جميع ملفات APK الموقعة بشهادات غير رسمية؟

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

إذا تعذر على الحزمة المعاد توقيعها إجراء ترقية طبقة علوية (Overlay)، فهل يعني ذلك انعدام المخاطر؟

كلا. قد يستمر المهاجمون في تحفيز دورات إلغاء التثبيت وإعادة تثبيته أو تعديل أسماء الحزم أو استغلال غياب سياسات الإصدار من جانب الخادم للوصول إلى منطق الأعمال؛ فمنع ترقية الطبقة العلوية هو مجرد عنصر واحد في مصفوفة الحوكمة.

هل يكفي أن يقرأ العميل ملخص شهادة نفسه؟

كلا. فقد يقوم العميل المُعدّل بتغيير عمليات الفحص المحلية أو منطق الإبلاغ في الوقت نفسه. يمكن لمعلومات الشهادة المشاركة في الدفاع متعدد الطبقات، لكن قرارات التفويض عالية المخاطر يجب أن يتخذها الخادم بالجمع بين الإشارات القابلة للتحقق.

أي ملخص ملف (File Digest) يجب حفظه بعد إصدار حزمة AAB؟

احفظ هوية حزمة AAB المرفوعة، واحصل أيضًا على المخرجات الفعلية المُسلّمة من منصة التوزيع وفحصها عشوائيًا. قد تتلقى أجهزة مختلفة حزم APK مجزأة؛ لذا فإن حفظ ملف APK عام مُنشأ محليًا فقط غير كافٍ.

متى يمكن صياغة استنتاج بشأن الإصدار؟

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

هل تريد اختبار ذلك على تطبيقك الخاص؟

أرسل الإصدار المرشح والأنظمة المستهدفة ومسارات الأعمال المهمة لتقييم Yudun PoC والتوافق.

تواصل مع: كيفية قبول APK وDEX وتكامل التوقيع معًا