LibsCout ist ein leichtes und effektives statisches Analyse-Tool zum Erkennen von Bibliotheken von Drittanbietern in Android/Java-Apps. Die Erkennung ist widerstandsfähig gegen gemeinsame Bytecode-Verschleierungstechniken wie die Umbenennung von Identifikatoren oder codebasierte Verschleierung wie Reflexionsbasis-API-Versteck oder Randomisierung der Kontrollschwäche. Darüber hinaus ist LibsCout in der Lage, genaue Bibliotheksversionen einschließlich Versionen mit schwerwiegenden Fehler oder Sicherheitsproblemen zu stecken.
LibsCout erfordert, dass die ursprünglichen Bibliotheks -SDKs (kompiliert .jar/.AAR -Dateien) Bibliotheksprofile extrahieren, die zur Erkennung von Android -Apps verwendet werden können. Vorgenerierte Bibliotheksprofile werden im Repository Libscout-Profile gehostet.
Einzigartige Erkennungsmerkmale:
Im Laufe der Zeit wurde LibsCout erweitert, um zusätzliche Analysen sowohl auf Bibliotheks -SDKs als auch auf den Erkennungsbibliotheken in Apps durchzuführen:
Darüber hinaus gibt es eine Android Studio-Erweiterung UP2DEP, die die API-Kompatibilitätsinformationen in die IDE integriert, um Entwicklern zu helfen, ihre Abhängigkeiten auf dem neuesten Stand zu halten (und mehr).
Das Skript-Verzeichnis enthält ein Python-Skript für Bibliothekskratzer, um die ursprünglichen Bibliotheks-SDKs automatisch herunterzuladen, einschließlich vollständiger Versionshistorien von Maven Central , JCenter und benutzerdefinierten MVN-Repositories . Die ursprünglichen SDKs der Bibliothek können verwendet werden, um Profile zu generieren und API -Kompatibilitätsanalysen der Bibliothek durchzuführen (siehe Module unten). Verwenden Sie das Skript für Bibliotheks-Profile-Generator-Skript, um Profile im Maßstab bequem zu generieren.
Die Scraper müssen mit einer JSON -Konfiguration konfiguriert werden, die Metadaten der abgerufenen Bibliotheken enthält (Name, Repo, GroupID, Artefactid). Das Verzeichnis von Skripts/Bibliotheksspezifikationen enthält Konfigurationsdateien, um über 100 Bibliotheken aus Maven Central und eine Konfiguration abzurufen, um Amazon-Bibliotheken und Android-Bibliotheken aus dem Maven-Repository von Google herunterzuladen (350 Bibliotheken, einschließlich Support, GMS, KTX, Jetpack, ..).
NEU (30.07.19): Liste von 45 Ad/Tracking -Bibliotheken mit derzeit 1182 Versionen (Trackers.json) hinzugefügt.
Bereit zu bedienende Bibliotheksprofile und Bibliotheks-Meta-Daten finden Sie im Repository LibsCout-Profile.
LibsCout hat Funktionen integriert, um Bibliotheksversionen mit den folgenden Sicherheitslücken zu melden.
Die vorgenerierten Profile für gefährdete Versionen sind mit [Sicherheit] mit [Sicherheit-Fix] mit [Sicherheit] versehen.
Diese Informationen werden in den Dateien der Bibliotheks.xml codiert, mit denen die Profile generiert wurden. Wir versuchen, die Liste/Profile zu aktualisieren, wenn wir auf neue Sicherheitsprobleme stoßen. Wenn Sie Informationen teilen können, teilen Sie uns dies bitte mit.
| Bibliothek | Version (en) | Fixversion | Verwundbarkeit | Link |
|---|---|---|---|---|
| Airpush | <8.1 | > 8.1 | United Standard -WebView -Einstellungen | Link |
| Apache CC | 3.2.1 / 4.0 | 3.2.2 / 4.1 | Verwundbarkeit der Deserialisierung | Link |
| Dropbox | 1.5.4 - 1.6.1 | 1.6.2 | Fallpedin -Verwundbarkeit | Link |
| 3.15 | 3.16 | Konto des Kontos | Link | |
| Mopub | <4.4.0 | 4.4.0 | United Standard -WebView -Einstellungen | Link |
| Okhttp | 2.1 - 2.7.4 3.0.0- 3.1.2 | 2.7.5 3.2.0 | Zertifikatspinnbypass | Link |
| Plexus -Archiver | <3.6.0 | 3.6.0 | ZIP -Slip -Verwundbarkeit | Link |
| Überschall | <6.3.5 | 6.3.5 | Unsichere Funktionalitätsexposition über JS | Link |
| Vungle | <3.3.0 | 3.3.0 | MITM -Angriffsanfälligkeit | Link |
| Zeroturnaround | <1,13 | 1.13 | ZIP -Slip -Verwundbarkeit | Link |
Bei unserem letzten Scan von kostenlosen Apps auf Google Play (25.05.2017) entdeckte LibsCout> 20K -Apps, die immer noch eine dieser gefährdeten LIB -Versionen enthalten. Die Ergebnisse wurden an das ASI -Programm von Google gemeldet. Leider schien der Bericht ignoriert zu werden. Infolgedessen haben wir viele App -Entwickler manuell benachrichtigt.
Unter anderem veröffentlichte McAfee einen Sicherheitsberat für eine ihrer Apps.
|_ 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.
Dieses Modul generiert einzigartige Bibliotheksfingerabdrücke von Original LIB SDKs (.Jar- und .AAR -Dateien unterstützt). Diese Profile können anschließend zum Testen verwendet werden, ob die jeweiligen Bibliotheksversionen in Apps enthalten sind. Jede Bibliotheksdatei benötigt zusätzlich eine Bibliothek.xml , die Meta -Daten enthält (z. B. Name, Version, ..). Eine Vorlage finden Sie im Verzeichnis von Assets. Für Ihre Bequemlichkeit können Sie den Bibliotheksschatzer (./Scripts) verwenden, um die vollständigen Bibliothekshistorien von Maven -Repositories herunterzuladen. Standardmäßig generiert LibsCout Hashtree-basierte Profile mit Paket- und Klasseninformationen (weglassen Methoden).
Java -jar libscout.jar -o Profil [-a android_sdk_jar ] -x path_to_library_xml path_to_library_file
Erkennt Bibliotheken in Apps mit vorgenerierten Profilen. Optional führt LibsCout auch eine API-Verwendungsanalyse für erkannte Bibliotheken durch, dh, welche Bibliotheks-APIs von der App oder von anderen Bibliotheken verwendet werden (-U-Switch).
Analyseergebnisse können in verschiedenen Formaten geschrieben werden.
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)
Analysen Änderungen in den dokumentierten (öffentlichen) API -Sätzen von Bibliotheksversionen.
Die Analyseergebnisse enthalten derzeit die folgenden Informationen:
Einhaltung der Semantic Versioning (SEMVER), dh, ob die Änderung der Versionszeichenfolge zwischen aufeinanderfolgenden Versionen (erwartetem SEMV) mit den Änderungen in den jeweiligen öffentlichen API -Sätzen (tatsächlicher SEMV) übereinstimmt. Die Ergebnisse umfassen ferner Statistiken zu Änderungen der API -Sets (Ergänzungen/Removalen/Modifikationen). Für entferntes APIs versucht libscout zusätzlich, alternative APIs (basierend auf verschiedenen Merkmalen) zu schließen.
Für die Analyse müssen Sie einen Weg zu den ursprünglichen Bibliotheks -SDKs bieten. Libscout sucht rekursiv nach Bibliotheksgläser | AARs (Blattverzeichnisse sollen höchstens eine Jar | AAR -Datei und eine Bibliotheksdatei.xml -Datei haben). Verwenden Sie für Ihre Bequemlichkeit den Bibliotheksschaber. Die Analyseergebnisse werden im JSON-Format (-J Switch) auf Festplatte geschrieben.
java -jar libscout.jar -o lib_api_analysis [-a android_sdk_jar ] [-j json_dir ] path_to_lib_sdks
Dieser Modus ist eine Erweiterung des Match -Modus. Es erkennt zunächst Bibliotheksversionen in den bereitgestellten Apps und führt eine Bibliotheksnutzungsanalyse durch (-U ist impliziert). Darüber hinaus müssen Bibliotheks -API -Kompatdaten (über den -l -Switch) im Lib_API_Analyse -Modus generiert werden. Basierend auf der LIB -API -Verwendung in der App und den Compat -Info bestimmt LibsCout die höchste Version, die noch mit dem Satz gebrauchter LIB -APIs kompatibel ist.
Hinweis: Der neuen Implementierung fehlen noch einige Funktionen, z. B. sind die Ergebnisse derzeit protokolliert, aber noch nicht an JSON geschrieben. Weitere Informationen finden Sie in den Code -Kommentaren.
java -jar libscout.jar -o updatability [-a android_sdk_jar ] [-j json_dir ] -l lib_api_data_dir path_to_app (s)
Weitere technische Details und groß angelegte Bewertungsergebnisse finden Sie in unseren Veröffentlichungen:
Erkennungsbibliothekserkennung von Drittanbietern in Android und seinen Sicherheitsanwendungen (CCS'16)
Halten Sie mich auf dem neuesten Stand: Eine empirische Studie zur Aktualisierbarkeit der Bibliothek von Drittbibliotheken auf Android (CCS'17)
Wenn Sie Libscout in einer wissenschaftlichen Veröffentlichung verwenden, würden wir uns Zitate mit diesen Bibtex-Einträgen freuen: [BIB-CCS16] [BIB-CCS17]