فئة OWASP: MASVS-NETWORK: الاتصال بالشبكة
نظرة عامة
يشير السماح باتصالات الشبكة بتنسيق نص عادي في تطبيق Android إلى أنّه يمكن لأي شخص يتتبّع حركة الشبكة الاطّلاع على البيانات التي يتم إرسالها ومعالجتها. يشكّل ذلك ثغرة أمنية إذا كانت البيانات المُرسَلة تتضمّن معلومات حساسة، مثل كلمات المرور أو أرقام بطاقات الائتمان أو معلومات شخصية أخرى.
بغض النظر عمّا إذا كنت ترسل معلومات حسّاسة أم لا، يمكن أن يشكّل استخدام النص العادي ثغرة أمنية لأنّه يمكن أيضًا التلاعب بالزيارات التي تستخدم النص العادي من خلال هجمات على الشبكة، مثل ARP أو تسميم نظام أسماء النطاقات، ما قد يتيح بدوره للمهاجمين التأثير في سلوك أحد التطبيقات.
التأثير
عندما يرسل تطبيق Android بيانات أو يتلقّاها بتنسيق نص عادي عبر شبكة، يمكن لأي شخص يراقب الشبكة اعتراض هذه البيانات وقراءتها. إذا كانت هذه البيانات تتضمّن معلومات حسّاسة، مثل كلمات المرور أو أرقام بطاقات الائتمان أو الرسائل الشخصية، يمكن أن يؤدي ذلك إلى سرقة الهوية والاحتيال المالي وغيرها من المشاكل الخطيرة.
على سبيل المثال، يمكن أن يؤدي تطبيق يُرسِل كلمات المرور في نص عادي إلى تعريض بيانات الاعتماد هذه لجهة خارجية ضارة تعترض الزيارات. ويمكن استخدام هذه البيانات بعد ذلك للحصول على إمكانية الوصول غير المصرح به إلى حسابات المستخدمين.
الخطر: قنوات الاتصال غير المشفَّرة
يؤدي نقل البيانات عبر قنوات اتصال غير مشفَّرة إلى تعريض البيانات المشترَكة بين الجهاز ونقاط نهاية التطبيق للخطر. يمكن اعتراض البيانات المذكورة وتعديلها من قِبل مهاجم.
إجراءات التخفيف
يجب إرسال البيانات عبر قنوات اتصال مشفّرة. يجب استخدام البروتوكولات الآمنة كبديل للبروتوكولات التي لا توفّر إمكانات التشفير.
المخاطر المحدّدة
يجمع هذا القسم المخاطر التي تتطلّب استراتيجيات تخفيف غير عادية أو تم تخفيف مخاطرها على مستوى معيّن من حزمة SDK، وهو متوفر هنا لإكمال المعلومات.
الخطر: HTTP
لا تنطبق الإرشادات الواردة في هذا القسم إلا على التطبيقات التي تستهدف الإصدار 8.1 من نظام التشغيل Android (المستوى 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 مع التوافق مع الأنظمة القديمة، إذا لزم الأمر، لاتصالات HTTPS.
المخاطر: بروتوكولات التواصل المخصّصة
قد يكون تنفيذ بروتوكولات اتصالات مخصّصة أو محاولة تنفيذ بروتوكولات معروفة يدويًا أمرًا خطيرًا.
على الرغم من أنّ البروتوكولات المخصّصة تتيح للمطوّرين تصميم حلّ فريد يتكيّف مع الاحتياجات المقصودة، إلا أنّ أي خطأ أثناء عملية التطوير قد يؤدي إلى حدوث ثغرات أمنية. على سبيل المثال، يمكن أن تؤدي الأخطاء في تطوير آليات التعامل مع الجلسات إلى تمكّن المهاجمين من التنصت على الاتصالات واسترداد المعلومات الحسّاسة أثناء التنقل.
من ناحية أخرى، يؤدّي تنفيذ بروتوكولات معروفة، مثل HTTPS بدون استخدام نظام التشغيل أو مكتبات تابعة لجهات خارجية تخضع للصيانة، إلى زيادة احتمال حدوث أخطاء في الترميز، ما قد يصعّب عملية تحديث البروتوكول الذي نفَّذته عند الحاجة، إن لم يكن مستحيلاً. بالإضافة إلى ذلك، قد يتسبب ذلك في ظهور النوع نفسه من الثغرات الأمنية كما هو الحال عند استخدام البروتوكولات المخصصة.
إجراءات التخفيف
استخدام المكتبات التي يتم الاحتفاظ بها لتنفيذ بروتوكولات الاتصال المعروفة
لتنفيذ بروتوكولات معروفة مثل HTTPS في تطبيقك، يجب استخدام مكتبات نظام التشغيل أو مكتبات تابعة لجهات خارجية يتم الاحتفاظ بها.
ويمنح ذلك المطوّرين الأمان في اختيار الحلول التي تم اختبارها بدقة وتحسينها بمرور الوقت والتي تتلقّى باستمرار تحديثات أمان لحلّ الثغرات الأمنية الشائعة.
بالإضافة إلى ذلك، عند اختيار بروتوكولات معروفة، يستفيد المطوّرون من توافق واسع النطاق على مستوى الأنظمة والمنصات وأدوات تطوير البرامج المختلفة، ما يقلل من احتمالية حدوث أخطاء بشرية أثناء عملية التطوير.
استخدام بروتوكول النقل الآمن للملفات (SFTP)
يعمل هذا البروتوكول على تشفير البيانات أثناء نقلها. يجب مراعاة تدابير إضافية عند استخدام هذا النوع من بروتوكول تبادل الملفات:
- يتوافق بروتوكول SFTP مع أنواع مختلفة من المصادقة. بدلاً من المصادقة المستندة إلى كلمة المرور، يجب استخدام طريقة مصادقة المفتاح العام. يجب إنشاء هذه المفاتيح وتخزينها بأمان، ويُنصح باستخدام متجر مفاتيح Android لهذا الغرض.
- تأكَّد من أنّ التشفيرات المتوافقة تتّبع أفضل ممارسات الأمان.
المراجع
- Ktor
- تنفيذ عمليات الشبكة باستخدام Cronet
- OkHttp
- إيقاف الزيارات بتنسيق نص عادي في إعدادات أمان الشبكة
- الاتصال بالشبكة
- الأمان باستخدام بروتوكولات الشبكة
- بروتوكول OAuth 2.0 للتطبيقات المتوافقة مع الأجهزة الجوّالة وأجهزة الكمبيوتر المكتبي
- بروتوكول HTTP عبر بروتوكول أمان طبقة النقل (TLS)
- أنظمة مصادقة HTTP
- اقتراحات أمان الويب من Mozilla
- أداة إنشاء الإعدادات المقترَحة لطبقة المقابس الآمنة (SSL) من Mozilla
- اقتراحات بروتوكول أمان طبقة النقل (TLS) من جهة خادم Mozilla
- صفحة دليل OpenSSH الرئيسي
- بروتوكول SSH RFC الذي يوضّح التفاصيل حول الإعدادات والمخططات التي يمكن استخدامها لهذا البروتوكول
- اقتراحات أمان Mozilla OpenSSH
- نظام "ملف تخزين مفاتيح Android"