Libscout-это легкий и эффективный инструмент статического анализа для обнаружения сторонних библиотек в приложениях Android/Java. Обнаружение является устойчивым против общих методов запугивания байт-кодов, таких как переименование идентификатора или запутывание на основе кода, такие как укрытие API на основе отражения или рандомизация контроля. Кроме того, Libscout способен определять точные библиотечные версии, включая версии, которые содержат серьезные ошибки или проблемы безопасности.
Libscout требует исходной библиотеки SDK (скомпилированные файлы .jar/.aar) для извлечения профилей библиотеки, которые можно использовать для обнаружения в приложениях Android. Предварительно сгенерированные профили библиотеки размещаются в репозитории Libscout-Profiles.
Уникальные функции обнаружения:
Со временем Libscout был расширен для выполнения дополнительных анализов как в библиотечных SDK, так и обнаруженных библиотеках в приложениях:
Кроме того, существует Android Studio Extension UP2DEP, который интегрирует информацию о совместимости API в IDE, чтобы помочь разработчикам поддерживать свои зависимости в актуальном состоянии (и больше).
Справочник сценариев содержит сценарий Python в библиотеке для автоматической загрузки оригинальных библиотечных SDK, включая полную историю версий из Maven Central , JCenter и пользовательских репозиториев MVN . Оригинальные библиотеки SDK могут использоваться для создания профилей и для проведения анализа совместимости API библиотеки (см. Модули ниже). Используйте сценарий библиотеки-профиль-генератора, чтобы удобно генерировать профили в масштабе.
Скребки должны быть настроены с помощью конфигурации JSON, которая включает метаданные библиотек, которые будут извлечены (имя, репо, групповое, артефакцид). Каталог сценариев/библиотеки содержит файлы конфигурации для извлечения более 100 библиотек из Maven Central и конфигурации для загрузки библиотек Amazon и библиотек Android из репозитория Google Maven (350 библиотек, включая поддержку, GMS, KTX, JetPack, ..).
Новый (30.07.19): добавлен список 45 библиотек AD/отслеживания с 1182 версиями (Trackers.json).
Готовые к использованию профили библиотеки и библиотечные метадаты можно найти в репозитории Libscout-Profily.
Libscout имеет функциональность, чтобы сообщить о библиотечных версиях со следующими уязвимостями безопасности.
Предварительно сгенерированные профили для уязвимых версий помечены [Security] , исправлениями с [Security-Fix] .
Эта информация кодируется в файлах библиотеки.xml, которые использовались для генерации профилей. Мы стараемся обновить список/профили всякий раз, когда сталкиваемся с новыми проблемами безопасности. Если вы можете поделиться информацией, сообщите нам об этом.
| Библиотека | Версия (ы) | Исправить версию | Уязвимость | Связь |
|---|---|---|---|---|
| Airpush | <8.1 | > 8.1 | Неснациональные настройки веб -просмотра по умолчанию | Связь |
| Apache CC | 3.2.1 / 4.0 | 3.2.2 / 4.1 | Уязвимость пустыни | Связь |
| Dropbox | 1.5.4 - 1.6.1 | 1.6.2 | Уязвимость отбрасывания | Связь |
| 3.15 | 3.16 | Уязвимость с учетом уязвимости | Связь | |
| Мопуб | <4.4.0 | 4.4.0 | Неснациональные настройки веб -просмотра по умолчанию | Связь |
| Okttp | 2.1 - 2.7.4 3.0.0- 3.1.2 | 2.7.5 3.2.0 | Сертификат закрепляет обход | Связь |
| Сплетение архивов | <3.6.0 | 3.6.0 | Уязвимость Zip Slip | Связь |
| Сверхзвуковый | <6.3.5 | 6.3.5 | Небезопасное воздействие функциональности через JS | Связь |
| Вангл | <3.3.0 | 3.3.0 | MITM уязвимость атаки | Связь |
| Zeroturnaround | <1.13 | 1.13 | Уязвимость Zip Slip | Связь |
На нашем последнем сканировании бесплатных приложений в Google Play (25.05.2017) Libscout обнаружены> 20K приложения, которые все еще содержат одну из этих уязвимых версий LIB. Результаты были представлены в программе Google ASI. К сожалению, отчет, казалось, игнорировался. В результате мы вручную уведомили многих разработчиков приложений.
Среди прочего, 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 SDK (.JAR и .AAR поддерживаются). Эти профили могут впоследствии использоваться для тестирования, включены ли соответствующие библиотечные версии в приложения. Каждый файл библиотеки дополнительно требует библиотеки .xml , которая содержит метаданные (например, имя, версия, ..). Шаблон можно найти в каталоге активов. Для вашего удобства вы можете использовать библиотечный скребок (./scripts) для загрузки полных историй библиотеки из репозиториев Maven. По умолчанию Libscout генерирует профили на основе хэштри с информацией о пакете и классе (пропущенные методы).
java -jar libscout.jar -o profile [-a android_sdk_jar ] -x path_to_library_xml path_to_library_file
Обнаружает библиотеки в приложениях с использованием предварительно сгенерированных профилей. Необязательно, Libscout также проводит анализ использования API для обнаруженных библиотек, т.е. Какие библиотечные API используются приложением или другими библиотеками (переключатель -u).
Результаты анализа могут быть написаны в разных форматах.
java -jar libscout.jar -o match -p path_to_profiles [-a android_sdk_jar ] [-u] [-j json_dir ] [-m] [-d log_dir ] path_to_app (s)
Анализирует изменения в документированных (общедоступных) наборах API версий библиотеки.
Результаты анализа в настоящее время включают следующую информацию:
Соответствие семантической версии (SEMVER), то есть соответствует ли изменение в строке версии между последовательными версиями (ожидаемыми SEMVER) изменениями в соответствующих наборах публичных API (фактический SEMVER). Результаты также включают статистику об изменениях в наборах API (добавления/удаления/модификации). Для удаленных API Libscout дополнительно пытается сделать вывод альтернативных API (на основе различных функций).
Для анализа вы должны предоставить путь к оригинальной библиотеке SDK. Libscout рекурсивно ищет библиотечные банки | AAR (ожидается, что каталоги листьев будут иметь не более одного файла JAR | AAR и один файл библиотеки.xml). Для вашего удобства используйте библиотечный скребок. Результаты анализа записаны на диск в формате JSON (-J Switch).
java -jar libscout.jar -o lib_api_analysis [-a android_sdk_jar ] [-j json_dir ] path_to_lib_sdks
Этот режим является расширением в режиме соответствия. Сначала он обнаруживает библиотечные версии в предоставленных приложениях и проводит анализ использования библиотеки (подразумевается -u). Кроме того, для этого требуется библиотечный API Compat (через переключатель -l), сгенерированные в режиме lib_api_analysis . Основываясь на использовании API LIB в приложении и информации COMD, Libscout определяет самую высокую версию, которая все еще совместима с набором использованных API LIB.
Примечание. Новой реализации все еще не хватает некоторых функций, например, результаты в настоящее время регистрируются, но еще не написаны в JSON. См. Код Комментарии для получения дополнительной информации.
java -jar libscout.jar -o обновляемость [-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]