فئة OWASP: MASVS-NETWORK: الاتصال بالشبكة
نظرة عامة
إنّ السماح بالاتصالات غير المشفّرة بالشبكة في تطبيق Android يعني أنّ أي مستخدم يراقب حركة بيانات الشبكة يمكنه الاطّلاع على البيانات التي يتم نقلها والتلاعب بها. ويُعدّ ذلك ثغرة أمنية إذا كانت البيانات المنقولة تتضمّن معلومات حسّاسة، مثل كلمات المرور أو أرقام بطاقات الائتمان أو غيرها من المعلومات الشخصية.
حتى إذا لم تكن تُرسِل معلومات حسّاسة، يمكن أن يظل استخدام النص غير المشفّر ثغرة أمنية، لأنّه يمكن أيضًا التلاعب بحركة البيانات غير المشفّرة من خلال هجمات الشبكة، مثل هجمات بروتوكول دقة العناوين (ARP) أو DNS poisoning، ما قد يسمح للمهاجمين بالتأثير في سلوك التطبيق.
التأثير
عندما يُرسِل تطبيق Android بيانات غير مشفّرة أو يتلقّاها عبر شبكة، يمكن لأي مستخدم يراقب الشبكة اعتراض هذه البيانات وقراءتها. إذا كانت هذه البيانات تتضمّن معلومات حسّاسة، مثل كلمات المرور أو أرقام بطاقات الائتمان أو الرسائل الشخصية، يمكن أن يؤدي ذلك إلى سرقة الهوية والاحتيال المالي ومشاكل خطيرة أخرى.
على سبيل المثال، يمكن أن يعرّض تطبيق يُرسِل كلمات المرور بنص غير مرمّز بيانات الاعتماد هذه لجهة مسيئة تعترض حركة البيانات. ويمكن بعد ذلك استخدام هذه البيانات للوصول إلى حسابات المستخدم بدون إذن.
الخطر: قنوات الاتصال غير المشفّرة
إنّ نقل البيانات عبر قنوات اتصال غير مشفّرة يعرّض البيانات التي تتم مشاركتها بين الجهاز ونقاط نهاية التطبيق للخطر. ويمكن للمهاجم اعتراض هذه البيانات وتعديلها.
إجراءات التخفيف
يجب إرسال البيانات عبر قنوات اتصال مشفّرة. ويجب استخدام بروتوكولات آمنة كبديل للبروتوكولات التي لا توفّر إمكانات التشفير.
المخاطر المحدّدة
يجمع هذا القسم المخاطر التي تتطلّب استراتيجيات تخفيف غير عادية أو التي تم تخفيفها على مستوى معيّن من حزمة تطوير البرامج (SDK) وتم إدراجها هنا من أجل الاكتمال.
الخطر: HTTP
لا تنطبق الإرشادات الواردة في هذا القسم إلا على التطبيقات التي تستهدف Android 8.1 (المستوى 27 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم. بدءًا من Android 9 (المستوى 28 من واجهة برمجة التطبيقات)، تفرض برامج عميل HTTP، مثل URLConnection وCronet وOkHttp، استخدام بروتوكول HTTPS، لذا يتم إيقاف الدعم للنص غير المرمّز تلقائيًا. ومع ذلك، يُرجى العِلم أنّه من غير المرجّح أن تفرض مكتبات عميل HTTP الأخرى، مثل Ktor، هذه القيود على النص غير المرمّز، لذا يجب استخدامها بحذر.
إجراءات التخفيف
استخدِم ميزة NetworkSecurityConfig.xml لإيقاف حركة البيانات غير المشفّرة وفرض استخدام بروتوكول HTTPS لتطبيقك، مع استثناءات للنطاقات المحدّدة المطلوبة فقط (عادةً لأغراض تصحيح الأخطاء):
Xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="false">
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">debug.domain.com</domain>
</domain-config>
</network-security-config>
يساعد هذا الخيار في منع حدوث تراجعات غير مقصودة في التطبيقات بسبب التغييرات في عناوين URL التي تقدّمها مصادر خارجية، مثل خوادم الخلفية.
الخطر: FTP
إنّ استخدام بروتوكول FTP لتبادل الملفات بين الأجهزة يطرح عدة مخاطر، وأهمها عدم تشفير قناة الاتصال. ويجب استخدام بدائل أكثر أمانًا، مثل SFTP أو HTTPS، بدلاً من ذلك.
إجراءات التخفيف
عند تنفيذ آليات تبادل البيانات عبر الإنترنت في تطبيقك، يجب استخدام بروتوكول آمن، مثل HTTPS. يتيح Android مجموعة من واجهات برمجة التطبيقات التي تسمح للمطوّرين بإنشاء منطق برنامج وخادم. ويمكن تأمين ذلك باستخدام بروتوكول أمان طبقة النقل (TLS)، ما يضمن تشفير تبادل البيانات بين نقطتَي نهاية، وبالتالي منع المستخدمين الضارين من التجسس على الاتصالات واسترداد البيانات الحسّاسة.
تعتمد البُنى الأساسية الشائعة للبرنامج والخادم على واجهات برمجة التطبيقات التي يملكها المطوّر. إذا كان تطبيقك يعتمد على مجموعة من نقاط نهاية واجهة برمجة التطبيقات، تأكَّد من توفير أمان شامل باتّباع أفضل ممارسات الأمان التالية لحماية اتصالات HTTPS:
- المصادقة: يجب أن يصادق المستخدمون على هويتهم باستخدام آليات آمنة مثل OAuth 2.0. لا يُنصح عمومًا بالمصادقة الأساسية، لأنّها لا توفّر آليات لإدارة الجلسات، وإذا تم تخزين بيانات الاعتماد بشكل غير صحيح، يمكن فك ترميزها من Base64.
- الترخيص: يجب حصر وصول المستخدمين إلى الموارد المقصودة فقط وفقًا لمبدأ الحدّ الأدنى من الأذونات المميّزة. ويمكن تنفيذ ذلك من خلال اعتماد حلول دقيقة للتحكّم في الوصول إلى مواد عرض التطبيق.
- تأكَّد من استخدام مجموعات التشفير المدروسة والأحدث، باتّباع أفضل ممارسات الأمان. على سبيل المثال، ننصحك بتوفير الدعم لبروتوكول TLSv1.3 protocol مع التوافق مع الأنظمة القديمة، إذا لزم الأمر، لاتصالات HTTPS communications.
الخطر: بروتوكولات الاتصال المخصّصة
يمكن أن يكون تنفيذ بروتوكولات اتصال مخصّصة أو محاولة تنفيذ بروتوكولات معروفة يدويًا أمرًا خطيرًا.
مع أنّ البروتوكولات المخصّصة تسمح للمطوّرين بتصميم حل فريد يتكيّف مع الاحتياجات المقصودة، يمكن أن يؤدي أي خطأ أثناء عملية التطوير إلى ثغرات أمنية محتملة. على سبيل المثال، يمكن أن تؤدي الأخطاء في تطوير آليات معالجة الجلسات إلى تمكّن المهاجمين من التجسس على الاتصالات واسترداد المعلومات الحسّاسة أثناء نقلها.
من ناحية أخرى، إنّ تنفيذ بروتوكولات معروفة، مثل HTTPS، بدون استخدام مكتبات نظام التشغيل أو مكتبات الجهات الخارجية التي يتم صيانتها جيدًا، يزيد من احتمالية حدوث أخطاء في الترميز قد تجعل من الصعب، إن لم يكن من المستحيل، تعديل البروتوكول الذي نفّذته عند الحاجة. بالإضافة إلى ذلك، يمكن أن يؤدي ذلك إلى حدوث النوع نفسه من الثغرات الأمنية التي تحدث عند استخدام بروتوكولات مخصّصة.
إجراءات التخفيف
استخدام مكتبات تتم صيانتها لتنفيذ بروتوكولات الاتصال المعروفة
لتنفيذ بروتوكولات معروفة، مثل HTTPS، في تطبيقك، يجب استخدام مكتبات نظام التشغيل أو مكتبات الجهات الخارجية التي تتم صيانتها جيدًا.
يمنح ذلك المطوّرين الأمان من خلال اختيار حلول تم اختبارها بدقة وتحسينها بمرور الوقت وتلقّي تحديثات أمنية باستمرار لإصلاح الثغرات الأمنية الشائعة.
بالإضافة إلى ذلك، من خلال اختيار بروتوكولات معروفة، يستفيد المطوّرون من التوافق الواسع مع الأنظمة والمنصات وبيئات التطوير المتكاملة المختلفة، ما يقلّل من احتمالية حدوث أخطاء بشرية أثناء عملية التطوير.
استخدام بروتوكول النقل الآمن للملفات (SFTP)
يشفّر هذا البروتوكول البيانات أثناء نقلها. يجب أخذ تدابير إضافية في الاعتبار عند استخدام هذا النوع من بروتوكول تبادل الملفات:
- يتوافق بروتوكول SFTP مع أنواع مختلفة من المصادقة. بدلاً من المصادقة المستندة إلى كلمة المرور، يجب استخدام طريقة المصادقة باستخدام المفتاح العام. يجب إنشاء هذه المفاتيح وتخزينها بشكل آمن، وننصح باستخدام Android Keystore لهذا الغرض.
- تأكَّد من أنّ مجموعات التشفير المتوافقة تتّبع أفضل ممارسات الأمان.
الموارد
- Ktor
- تنفيذ عمليات الشبكة باستخدام Cronet
- OkHttp
- إيقاف حركة البيانات غير المشفّرة في إعداد أمان الشبكات
- الاتصال بالشبكة
- الأمان باستخدام بروتوكولات الشبكة
- بروتوكول OAuth 2.0 للتطبيقات المتوافقة مع الأجهزة الجوّالة وسطح المكتب
- RFC لبروتوكول HTTP عبر TLS
- مخططات مصادقة HTTP
- اقتراحات أمان الويب من Mozilla
- أداة إنشاء الإعدادات المقترَحة لطبقة المقابس الآمنة من Mozilla
- الاقتراحات المتعلّقة بطبقة النقل الآمنة من جهة الخادم من Mozilla
- صفحة دليل OpenSSH الرئيسية
- RFC لبروتوكول SSH، الذي يوضّح الإعدادات والمخططات التي يمكن استخدامها لهذا البروتوكول
- اقتراحات أمان OpenSSH من Mozilla
- نظام Android Keystore