بقلم Denise Giusto Bilić، الباحثة في أمن المعلومات لدى ESET
الهواتف الذكية تلعب دورًا رئيسياً يتزايد بشكل يومي في حياتنا. إن إصدار التطبيقات الاَمنة بات أمراً ملحاً لحماية المستخدمين. واكتسب خبراء الأمن دور هام في تحديد السلوكيات الغير مرغوب فيها، مثل تسريب البيانات، أو السماح بالأخطاء للتطبيقات المثبتة على الأجهزة، أو توليد تكاليف غير متوقعة، أو رفض خدمة معينة لمستخدم الهاتف.
شاركنا سابقاً بعض النصائح للتطورات الآمنة في نظام iOS. ومن الهام قراءة هذه المقالات، لأنها ستساعدك على اكتشاف بعض الأخطاء التي يقوم بها المطورون عند انشاء تطبيقات لنظام iOS. و نشاركك هنا الإرشادات التالية، والتي يمكن استخدامها لدعم تحليلاتك.
1 – ضع نفسك مكان المبرمج
حاول أن تفهم الأشخاص الذين يقفون وراء تطوير الشفرة التي تدقيقها. اكتشف لغة البرمجة التي يعملون بها أو ما هي أول لغتهم الترميزية (الرئيسية). إن اسلوب المبرمجين عادة يكون واضحاً في بنية الأكواد الخاصة بهم، وطبيعة أخطائهم. و تضعك المعرفة بهذه الأشياء في الاتجاه الصحيح عندما يتعلق الأمر بعمليات التحقيق.
على سبيل المثال، يقوم المبرمجون الذين لديهم خلفية Java بتكرار أنماط التصميم، مما يؤدي إلى تجريد الوظائف مراراً وتكراراً. و الأمر مختلف لمطوري الأجهزة النقالة الذين يعتمدون على برمجيات الويب التي توفر قدرأكبر من الوظائف المودعة في تطبيقات الويب، ويعتمدون بشكل كبير على استخدام WebKit. و كلا نوعي المطورين على دراية باستخدام واجهات برمجة التطبيقات عالية المستوى، ولكنهم عرضة للأخطاء عند معالجة واجهات برمجة التطبيقات ذات المستوى المنخفض.
2 – احصل على الكود المصدري (source code)
وبالرغم من أن الكود المصدري ليس بالمكان المتواجد فيه المهاجم عادةً، فإن الحصول عليه سيساعدك على اكتشاف معظم الأخطاء في وقت قصير. إن اختبارات الاختراق عادةً ما ترتبط بموارد محدودة تتعلق بالوقت والمال، ومن الأفضل الحصول على أقصى استفادة منها. ولا ينبغي أن يكون هدفك تكرار سيناريو هجوم حقيقي، فالهدف هو العثور على أكبر عدد من الثغرات الأمنية لجعل التطبيق النهائي أكثر أمانًا.
تعمل البرمجة الكائنية التوجه ( Objective-C) مع الهندسة العكسية ومن الممكن الحصول على نظرة واضحة إلى حد ما على الآليات الداخلية للتطبيق، حتى بدون البدء من الكود المصدري. ويمكن للمهاجم النظر- سواء بشكل نسبي أو كلي- إلى ما ستحصل عليه باستخدام الشفرة خلال وقت غير محدود. فمن الأفضل توفير الوقت وتكريس جهودك لإيجاد تلك العيوب الأمنية.
3 – ضع في اعتبارك نقاط الضعف في اللغة
بالرغم من أن Objective-C و Cocoa يمنعان بعض الأخطاء الأمنية المتكررة في C و C++، فإن استخدام واجهات برمجة التطبيقات الخطيرة، مثل strcpy و strcat، أو آليات ضعيفة التنفيذ، مثل الفئات أو swizzling، يمكن أن يتسبب في حدوث سلوكيات غير متوقعة تؤدي إلى أخطاء أمنية خطيرة . لهذا السبب، تأكد من التحقيق في كيفية تأثير هذه التقنيات على التطبيق.
4 – تحديد إمكانية إعادة استخدام الكود الضعيف
عادة سيئة طورها العديد من المبرمجين في منتديات استشارات برمجية عبر الإنترنت وهي القيام بنسخ الشفرة دون اختبار كيفية عملها، خاصة عندما يتعلق الأمر بالوظائف المساعدة ذات المستوى المنخفض، والاتصال بالشبكة، والتشفير. وهناك أيضاً، دمج الطرف الثالث والتطوير في رمز أساسي دون التحقق من وجود عيوب أمان. ويمكن أن يؤدي ذلك إلى وجود كود ضعيف ثابت عبر تطبيقات متعددة.
5 – استخدام فريقين اختبار: واحد مع jailbreak و الاَخر مع المصنع
سيساعدك وجود جهاز مع نظام تشغيل المصنع على تقييم كيفية تصرف التطبيق في بيئة المستخدم النهائي الحقيقية، مع تمكين كافة آليات الأمان وعدم وجود مشكلات في تسجيل إعلامات الدفع. وفي المقابل، يمكنك استخدام الجهاز مع jailbreak لتحليل نظام الملفات بمزيد من التفاصيل ومعرفة كيف يعمل نظام التشغيل.
ونأمل أن تساعدك هذه النصائح في العثور على وجهات نظر تحليلية جديدة للتطبيق الذي تعمل عليه.