إلى الخلف
ذكاء نقاط الضعف
جدول المحتوى

 

تطبيق Android هو برنامج يعمل على الأجهزة التي تعمل بنظام التشغيل Android. تتم كتابة تطبيقات Android بشكل شائع بلغة برمجة Java ويتم تجميعها إلى bytecode. هذه التطبيقات هي في الأساس مجموعات حزم Android (ملفات APK) التي تتيح توزيع وتثبيت تطبيقات Android. هذا مشابه لكيفية استخدام ملفات.exe في نظام التشغيل Windows. تم تسجيل الربع الثاني من عام 2020 إجمالي 2.96 مليون تطبيق Android مقارنة بـ 2.6 مليون في عام 2018 (على Google Play). وفي عام 2018، تم العثور على نقاط ضعف عالية الخطورة في 43٪ من تطبيقات Android.

يحتوي ملف APK على المكونات التالية:

  • AndroidManifest.xml: الذي يحتوي بدوره على تفاصيل مثل اسم الحزمة ووصف حقوق الوصول بالإضافة إلى مكونات API.
  • الراحة/: مجلد يحتوي على موارد التطبيق، والتي لا تتضمن موارد التطبيق التي تم تجميعها مسبقًا.
  • classes.dex: كود التطبيق الذي تم تجميعه بصيغة dex والذي يمكن تنفيذه بواسطة جهاز Dalvik الافتراضي.
  • معلومات وصفية/: مجلد يحتوي على تجزئات وتوقيعات جميع الملفات.

 

وضع الحماية للتطبيق

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

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

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

 

التطبيقات والعمليات

على الرغم من أن تطبيقات Android مكتوبة بلغة Java، إلا أن ملفات الفئة التي تحتوي على تعليمات Java الافتراضية للجهاز (Java bytecode) يتم تحويلها إلى ملفات Dalvik القابلة للتنفيذ (ملفات.dex) التي تحتوي على رموز Dalvik bytecodes، قبل تثبيتها.

تدير النواة التي يستخدمها نظام التشغيل Android عمل كل تطبيق على الجهاز، حيث تقوم آلة Dalvik الافتراضية بتشغيل عمليات أو تطبيقات مستقلة تحت معرفات مستخدم مختلفة.

Android app Kernel

  

الهروب من الرمال

تحتوي تطبيقات الويب على روابط عالمية للتفاعل مع التطبيقات الأخرى، على عكس تطبيقات Android.

الاتصالات من تطبيق إلى تطبيق Android محدودة، ومع ذلك، يتم تحقيق ذلك من خلال الطرق التالية:

 

  • النوايا/ الروابط العميقة

 

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

الروابط العميقة هي روابط توجهك إلى وجهة معينة من التطبيق.

Deeplinks هو ما يجعل من الممكن للمستخدمين مشاركة رابط مقالة Medium على Twitter.

 

  • بيندر IPC

 

يتيح الموثق الاتصال بين العمليات (IPC) داخل النواة. يسمح للعمليات بإدارة البيانات المشتركة. يعد ربط الكائنات وتضمينها (OLE) بواسطة Microsoft مثالاً على IPC.

 

  • موفرو المحتوى

 

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

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

 

ما الخطأ الذي يحدث؟

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

 

أوراق اعتماد مشفرة

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

في الآونة الأخيرة، تعرض تطبيق CSC BHIM لخرق البيانات، مما أدى إلى كشف 70 ألف سجل مستخدم، بسبب قاعدة بيانات AWS غير الآمنة. يُزعم أن المطورين قاموا بترميز بيانات اعتماد AWS في التطبيق نفسه. في مثل هذه الحالات، يمكن لتحليل التعليمات البرمجية الثابتة تصحيح شفرة المصدر قبل تنفيذ البرنامج. إنه يكشف أي ثغرة أمنية داخل شفرة المصدر الثابتة. هذه العملية قابلة للتشغيل الآلي أيضًا. ومع ذلك، يمكن أن يكون هناك الكثير من الإيجابيات الكاذبة.

 

تشفير ضعيف

يستخدم التشفير المكسور في تطبيقات Android خوارزميات ضعيفة للتشفير وفك التشفير، أو ينفذ خوارزمية قوية بطريقة غير آمنة.

تم العثور على وظيفة التجزئة المشفرة MD5 المستخدمة على نطاق واسع لتكون عرضة للخطر. يُعرف Stream cipher RC4 ببساطته ومع ذلك تم اكتشاف وجود العديد من نقاط الضعف.

يمكن العثور على تشفير ضعيف/ضعيف تلقائيًا من خلال التحليل الثابت.

 

استخدام محلل ثابت في APK

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

تتضمن ممارسات الترميز السيئة الأكثر شيوعًا للمطورين التشفير المخصص الذي يمكن كسره بسهولة تامة.

 

مشكلات HTTPS

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

يمكن تعطيل التحقق من SSL من خلال التعليمات البرمجية مثل إنشاء اتصال غير مصدق من خلال SSLSocketFactory المخصص الذي سيؤدي إلى إيقاف تشغيل جميع عمليات التحقق من SSL.

يمكن اكتشاف هذه الطرق الالتفافية بسهولة من خلال التحليل الثابت.

 

مشكلة عرض الويب

WebView هو مكون مدعوم بمحرك متصفح يتيح لتطبيقات Android فتح صفحات الويب داخل التطبيق نفسه. نظرًا لأن المتصفحات تتعرض للهجمات من خلال النوايا والروابط العميقة، فليس من الآمن فتح صفحات الويب غير الموثوق بها داخل التطبيق.

على سبيل المثال، عثر مستخدم Twitter على خطأ WebView في ArogyaSetu، والذي كشف الملفات الداخلية في قاعدة البيانات المحلية. كان WebView قابلاً للاتصال عن قصد وكان أي تطبيق مثبت على الهاتف قادرًا على تحميل عنوان URL في WebView. يمكن للمهاجم الذي يتحكم في WebView أن يقرر صفحة الويب التي يجب فتحها. في حالة تمكين JavaScript، يمكن للمهاجمين تنفيذ شفرة JavaScript داخل التطبيق، لتنفيذ أنشطة ضارة.

 

تخزين غير آمن

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

 

التكوينات الخاطئة للمكونات

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

 

الخاتمة

تعمل ميزات الأمان الأساسية لنظام Android مثل وضع الحماية للتطبيق على تقليل مشكلات الأمان إلى حد كبير. ولكن من العيوب التي تمت مناقشتها أعلاه، تجدر الإشارة إلى أن ممارسات الترميز الجيدة تضمن أيضًا أمان تطبيقات Android. أيضًا:

  • قم بتأمين الاتصال بين تطبيقك والتطبيقات الأخرى.
  • ابحث عن نقاط الضعف مثل بيانات الاعتماد المشفرة أو التشفير الضعيف.
  • قم بتخزين المعلومات الحساسة داخل صندوق الحماية /وحدة التخزين الداخلية.
  • اطلب بيانات الاعتماد قبل توفير الوصول إلى المحتوى المتميز داخل التطبيق.
  • استخدم WebView بعناية.
  • ابحث عن التكوينات الخاطئة للمكونات.
لم يتم العثور على أية عناصر.

مدونات ذات صلة