LIBSCOUT هي أداة تحليل ثابتة وخفيفة الوزن وفعالة لاكتشاف مكتبات الطرف الثالث في تطبيقات Android/Java. يكون الاكتشاف مرنًا ضد تقنيات التغلب الشائعة مثل إعادة تسمية المعرفات أو التغلب القائم على الكود مثل تخفي API القائم على الانعكاس أو العشوائية في التدفق. علاوة على ذلك ، فإن libscout قادر على تحديد إصدارات المكتبة الدقيقة بما في ذلك الإصدارات التي تحتوي على أخطاء شديدة أو مشكلات أمان.
يتطلب LIBSCOUT SDKs المكتبة الأصلية (ملفات .jar/.AAR) لاستخراج ملفات تعريف المكتبات التي يمكن استخدامها للكشف عن تطبيقات Android. يتم استضافة ملفات تعريف المكتبات التي تم إنشاؤها مسبقًا في مستودع Libscout-profiles.
ميزات الكشف الفريدة:
مع مرور الوقت تم توسيع libscout لإجراء تحليلات إضافية على حد سواء على SDKs المكتبة والمكتبات المكتشفة في التطبيقات:
بالإضافة إلى ذلك ، هناك ملحق Android Studio UP2DEP يدمج معلومات توافق API في IDE لمساعدة المطورين على الحفاظ على تبعياتهم على تحديث (وأكثر).
يحتوي دليل البرامج النصية على برنامج نصي Python المكتبة لتنزيل SDKs المكتبة الأصلية تلقائيًا بما في ذلك تاريخ الإصدار الكامل من مستودعات Maven Central و JCenter و MVN المخصصة . يمكن استخدام SDKs المكتبة الأصلية لإنشاء ملفات تعريف وإجراء تحليلات توافق واجهة برمجة تطبيقات المكتبة (انظر الوحدات أدناه). استخدم البرنامج النصي المولود للمكتبة لإنشاء ملفات تعريف مريحة على نطاق واسع.
يجب تكوين الكاشطات مع تكوين JSON يتضمن بيانات تعريف للمكتبات ليتم جلبها (الاسم ، repo ، groupiD ، anttefactid). يحتوي دليل البرامج النصية/المكتبة على ملفات التكوين لاسترداد أكثر من 100 مكتب من Maven Central و Config لتنزيل مكتبات Amazon ومكتبات Android من مستودع Maven من Google (350 مكتبًا ، بما في ذلك الدعم ، GMS ، KTX ، Jetpack ، ..).
جديد (07/30/19): قائمة مضافة من 45 مكتبة/تتبع مع 1182 إصدارات (trackers.json).
يمكن العثور على ملفات تعريف مكتبة جاهزة للاستخدام والمكتبة الوصفية في مستودع libscout-profiles.
قامت LIBSCOUT ببناء وظائف للإبلاغ عن إصدارات المكتبة مع نقاط الضعف الأمنية التالية.
يتم وضع علامة على ملفات التعريف التي تم إنشاؤها مسبقًا للإصدارات الضعيفة بـ [Security] ، تصحيحات مع [Security-Fix] .
يتم ترميز هذه المعلومات في ملفات library.xml التي تم استخدامها لإنشاء الملفات الشخصية. نحاول تحديث القائمة/الملفات الشخصية كلما واجهنا مشكلات أمان جديدة. إذا كنت تستطيع مشاركة المعلومات ، فيرجى إخبارنا بذلك.
| مكتبة | الإصدار (s) | إصلاح الإصدار | وهن | وصلة |
|---|---|---|---|---|
| Airpush | <8.1 | > 8.1 | إعدادات WebView الافتراضية غير المصاحبة | وصلة |
| Apache CC | 3.2.1 / 4.0 | 3.2.2 / 4.1 | الضعف الهفر | وصلة |
| Dropbox | 1.5.4 - 1.6.1 | 1.6.2 | الضعف DroppedIn | وصلة |
| فيسبوك | 3.15 | 3.16 | الحساب الاختطاف الضعف | وصلة |
| موبوب | <4.4.0 | 4.4.0 | إعدادات WebView الافتراضية غير المصاحبة | وصلة |
| Okhttp | 2.1 - 2.7.4 3.0.0- 3.1.2 | 2.7.5 3.2.0 | شهادة تثبيت الالتفاف | وصلة |
| أرشيف الضفيرة | <3.6.0 | 3.6.0 | الثغرة الأمنية الرمز البريدي | وصلة |
| الأسرع من الصوت | <6.3.5 | 6.3.5 | التعرض غير الآمن للوظائف عبر JS | وصلة |
| فونجل | <3.3.0 | 3.3.0 | MITM هجوم الضعف | وصلة |
| zeroturnaround | <1.13 | 1.13 | الثغرة الأمنية الرمز البريدي | وصلة |
في آخر فحص لدينا للتطبيقات المجانية على Google Play (05/25/2017) ، تم اكتشاف LIBSCOUT> تطبيقات 20K لا تزال تحتوي على أحد إصدارات LIB الضعيفة هذه. تم الإبلاغ عن النتائج لبرنامج ASI من Google. لسوء الحظ ، يبدو أن التقرير قد تم تجاهله. نتيجة لذلك ، أبلغنا يدويًا العديد من مطوري التطبيقات.
من بين أمور أخرى ، نشر McAfee استشارية أمنية لأحد تطبيقاتها.
|_ gradlew / gradlew.bat (gradle wrappers to generate runnable LibScout.jar)
|_ assets
| |_ library.xml (Library meta-data template)
|_ config
| |_ LibScout.toml (LibScout's config file)
| |_ logback.xml (log4j configuration file)
|_ data
| |_ app-version-codes.csv (Google Play app packages with valid version codes)
|_ lib
| Android axml
|_ scripts
| |_ library-specs (pre-defined library specs)
| |_ library-scraper.py (scraper for mvn-central, jcenter, custom mvn)
| |_ library-profile-generator.sh (convenience profile generator)
|_ src
source directory of LibScout (de/infsec/tpl). Includes some open-source,
third-party code to parse AXML resources / app manifests etc.
تقوم هذه الوحدة بإنشاء بصمات أصابع مكتبة فريدة من ملفات LIB SDKs الأصلية (. يمكن استخدام هذه الملفات الشخصية لاحقًا لاختبار ما إذا كانت إصدارات المكتبة المعنية مدرجة في التطبيقات. يتطلب كل ملف مكتبة بالإضافة إلى ذلك مكتبة . يمكن العثور على قالب في دليل الأصول. لراحتك ، يمكنك استخدام مكشطة المكتبة (./scripts) لتنزيل تاريخ المكتبة الكاملة من مستودعات Maven. بشكل افتراضي ، تقوم LibsCout بإنشاء ملفات تعريف تعتمد على هاشري مع معلومات الحزمة والفئة (حذف أساليب).
java -jar libscout.jar -o profile [-a android_sdk_jar ] -x path_to_library_xml path_to_library_file
يكتشف المكتبات في التطبيقات باستخدام ملفات تعريف تم إنشاؤها مسبقًا. اختياريًا ، تقوم LIBSCOUT أيضًا بإجراء تحليل استخدام API للمكتبات المكتشفة ، أي ما هي واجهات برمجة تطبيقات المكتبة التي يستخدمها التطبيق أو المكتبات الأخرى (-u Switch).
يمكن كتابة نتائج التحليل بتنسيقات مختلفة.
java -jar libscout.jar -o match -p path_to_profiles [-a android_sdk_jar ] [-u] [-j json_dir ] [ -M ]
تحليل التغييرات في مجموعات API الموثقة (العامة) من إصدارات المكتبة.
تتضمن نتائج التحليل حاليًا المعلومات التالية:
الامتثال للإصدار الدلالي (SEMVER) ، أي ما إذا كان التغيير في سلسلة الإصدار بين الإصدارات المتتالية (SEMVER المتوقع) يطابق التغييرات في مجموعات API العامة المعنية (Semver الفعلي). تتضمن النتائج أيضًا إحصائيات حول التغييرات في مجموعات API (الإضافات/عمليات الإزالة/التعديل). بالنسبة إلى واجهات برمجة التطبيقات التي تمت إزالتها ، يحاول LibsCout بالإضافة إلى استنتاج واجهات برمجة التطبيقات البديلة (استنادًا إلى ميزات مختلفة).
للتحليل ، يجب عليك توفير طريق إلى SDKs المكتبة الأصلية. يبحث libscout بشكل متكرر عن جرار المكتبات | AARS (من المتوقع أن يكون لدى أدلة الأوراق ملفًا واحدًا على الأكثر | AAR وملف Library.xml). لراحتك استخدم مكشطة المكتبة. تتم كتابة نتائج التحليل إلى القرص بتنسيق JSON (مفتاح -J).
java -jar libscout.jar -o lib_api_analysis [-a android_sdk_jar ] [-j json_dir ] path_to_lib_sdks
هذا الوضع هو امتداد إلى وضع المطابقة. يكتشف أولاً إصدارات المكتبة في التطبيقات المقدمة ويجري تحليلًا لاستخدام المكتبة (-u ضمني). بالإضافة إلى ذلك ، يتطلب بيانات Compat API المكتبة (عبر مفتاح -L) كما تم إنشاؤه في وضع lib_api_analysis . استنادًا إلى استخدام API LIB في التطبيق ومعلومات COMPAT ، تحدد LIBSCOUT أعلى إصدار لا يزال متوافقًا لمجموعة واجهات برمجة تطبيقات LIB المستخدمة.
ملاحظة: لا يزال التطبيق الجديد يفتقر إلى بعض الميزات ، على سبيل المثال ، يتم تسجيل النتائج حاليًا ولكن لم يتم كتابتها بعد إلى JSON. راجع تعليقات الرمز لمزيد من المعلومات.
java -jar libscout.jar -o updatable [-a android_sdk_jar ] [-j json_dir ] -l lib_api_data_dir path_to_app (s)
للحصول على التفاصيل الفنية ونتائج التقييم على نطاق واسع ، يرجى الرجوع إلى منشوراتنا:
اكتشاف مكتبة طرف ثالث موثوق في Android وتطبيقات الأمان الخاصة به (CCS'16)
تبقيني على اطلاع دائم: دراسة تجريبية لمكتبة الطرف الثالث على Android (CCS'17)
إذا كنت تستخدم libscout في منشور علمي ، فسنقدر الاستشهادات باستخدام إدخالات bibtex هذه: [Bib-CCS16] [Bib-CCS17]