LIBSCOUT adalah alat analisis statis ringan dan efektif untuk mendeteksi perpustakaan pihak ketiga di aplikasi Android/Java. Deteksi ini tangguh terhadap teknik pengayaan bytecode umum seperti pengidentifikasian pengidentifikasi atau kebingungan berbasis kode seperti API berbasis refleksi yang bersembunyi atau pengacakan aliran-aliran. Lebih lanjut, LIBSCOUT mampu menunjukkan versi perpustakaan yang tepat termasuk versi yang berisi bug parah atau masalah keamanan.
LIBSCOUT membutuhkan SDK perpustakaan asli (dikompilasi file .jar/.aar) untuk mengekstrak profil perpustakaan yang dapat digunakan untuk dideteksi pada aplikasi Android. Profil perpustakaan yang dihasilkan sebelumnya di-host di profil libscout repositori.
Fitur Deteksi Unik:
Seiring waktu LIBSCOUT telah diperluas untuk melakukan analisis tambahan baik di SDK perpustakaan dan perpustakaan yang terdeteksi di aplikasi:
Selain itu, ada ekstensi studio Android UP2DEP yang mengintegrasikan informasi kompatibilitas API ke dalam IDE untuk membantu pengembang menjaga ketergantungan mereka tetap up-to-date (dan banyak lagi).
Direktori skrip berisi skrip python pustaka-pemacu untuk secara otomatis mengunduh SDK perpustakaan asli termasuk riwayat versi lengkap dari repositori Maven Central , JCenter dan MVN khusus. SDK perpustakaan asli dapat digunakan untuk menghasilkan profil dan melakukan analisis kompatibilitas API perpustakaan (lihat modul di bawah). Gunakan skrip Generator-Profile-Library untuk dengan mudah menghasilkan profil pada skala.
Pengikis perlu dikonfigurasi dengan konfigurasi JSON yang mencakup metadata perpustakaan untuk diambil (nama, repo, groupid, artefactid). Direktori Scripts/Library-SPEC berisi file konfigurasi untuk mengambil lebih dari 100 perpustakaan dari Maven Central dan konfigurasi untuk mengunduh pustaka Amazon dan perpustakaan Android dari repositori Google Maven (350 pustaka, termasuk dukungan, GM, KTX, Jetpack, ..).
BARU (07/30/19): Daftar tambahan 45 pustaka iklan/pelacakan dengan 1182 versi (trackers.json).
Profil perpustakaan siap pakai dan meta-data perpustakaan dapat ditemukan di profil libscout repositori.
LIBSCOUT memiliki fungsionalitas builtin untuk melaporkan versi perpustakaan dengan kerentanan keamanan berikut.
Profil yang dihasilkan sebelumnya untuk versi yang rentan ditandai dengan [keamanan] , tambalan dengan [pengikat keamanan] .
Informasi ini dikodekan dalam file Library.xml yang telah digunakan untuk menghasilkan profil. Kami mencoba memperbarui daftar/profil setiap kali kami menemukan masalah keamanan baru. Jika Anda dapat berbagi informasi, beri tahu kami.
| Perpustakaan | Versi | Perbaiki versi | Kerentanan | Link |
|---|---|---|---|---|
| Airpush | <8.1 | > 8.1 | Pengaturan Webview Default Unan | Link |
| Apache CC | 3.2.1 / 4.0 | 3.2.2 / 4.1 | Kerentanan deserialisasi | Link |
| Dropbox | 1.5.4 - 1.6.1 | 1.6.2 | Kerentanan droppedin | Link |
| 3.15 | 3.16 | Kerentanan pembajakan akun | Link | |
| Mopub | <4.4.0 | 4.4.0 | Pengaturan Webview Default Unan | Link |
| Okhttp | 2.1 - 2.7.4 3.0.0- 3.1.2 | 2.7.5 3.2.0 | Bypass Pinning Sertifikat | Link |
| PENGADILAN PLEXUS | <3.6.0 | 3.6.0 | Kerentanan Slip Zip | Link |
| Supersonik | <6.3.5 | 6.3.5 | Paparan fungsionalitas yang tidak aman melalui JS | Link |
| Vungle | <3.3.0 | 3.3.0 | Kerentanan serangan MITM | Link |
| Zeroturnaround | <1,13 | 1.13 | Kerentanan Slip Zip | Link |
Pada pemindaian terakhir aplikasi gratis kami di Google Play (05/25/2017), libscout terdeteksi> 20K aplikasi masih berisi salah satu versi Lib yang rentan ini. Temuan telah dilaporkan ke program ASI Google. Sayangnya, laporan itu tampaknya diabaikan. Karena itu, kami secara manual memberi tahu banyak pengembang aplikasi.
Antara lain, McAfee menerbitkan penasihat keamanan untuk salah satu aplikasi mereka.
|_ 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.
Modul ini menghasilkan sidik jari perpustakaan yang unik dari lib asli SDKS (file .jar dan .aar yang didukung). Profil ini selanjutnya dapat digunakan untuk menguji apakah versi perpustakaan masing -masing termasuk dalam aplikasi. Setiap file perpustakaan juga memerlukan library.xml yang berisi data meta (misalnya nama, versi, ..). Templat dapat ditemukan di direktori aset. Untuk kenyamanan Anda, Anda dapat menggunakan scraper perpustakaan (./scripts) untuk mengunduh sejarah perpustakaan lengkap dari repositori Maven. Secara default, LIBSCOUT menghasilkan profil berbasis Hashtree dengan informasi paket dan kelas (metode penghapusan).
java -jar libscout.jar -o profil [-a android_sdk_jar ] -x path_to_library_xml path_to_library_file
Mendeteksi perpustakaan di aplikasi menggunakan profil yang dihasilkan sebelumnya. Secara opsional, LIBSCOUT juga melakukan analisis penggunaan API untuk perpustakaan yang terdeteksi, yaitu API perpustakaan mana yang digunakan oleh aplikasi atau oleh pustaka lain (-U switch).
Hasil analisis dapat ditulis dalam format yang berbeda.
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)
Menganalisis perubahan dalam set API (publik) API yang terdokumentasi dari versi perpustakaan.
Hasil analisis saat ini termasuk informasi berikut:
Kepatuhan terhadap versi semantik (SEMVER), yaitu apakah perubahan dalam string versi antara versi berturut -turut (yang diharapkan SEMVER) cocok dengan perubahan dalam set API publik masing -masing (SEMVER aktual). Hasil lebih lanjut termasuk statistik tentang perubahan set API (penambahan/pemindahan/modifikasi). Untuk API yang dihapus, LIBSCOUT juga mencoba untuk menyimpulkan API alternatif (berdasarkan fitur yang berbeda).
Untuk analisis, Anda harus memberikan jalur ke SDK perpustakaan asli. LIBSCOUT secara rekursif mencari toples perpustakaan | AARS (direktori daun diharapkan memiliki paling banyak satu jar | file aar dan satu file library.xml). Untuk kenyamanan Anda, gunakan pengikis perpustakaan. Hasil analisis ditulis ke disk dalam format JSON (-J Switch).
java -jar libscout.jar -o lib_api_analysis [-a android_sdk_jar ] [-j json_dir ] path_to_lib_sdks
Mode ini adalah ekstensi ke mode kecocokan. Pertama-tama mendeteksi versi perpustakaan di aplikasi yang disediakan dan melakukan analisis penggunaan perpustakaan (-U tersirat). Selain itu, ini membutuhkan data kompatik API pustaka (melalui sakelar -l) seperti yang dihasilkan dalam mode lib_api_analysis . Berdasarkan penggunaan LIB API di aplikasi dan info compat, LIBSCOUT menentukan versi tertinggi yang masih kompatibel dengan set LIB API yang digunakan.
Catatan: Implementasi baru masih tidak memiliki beberapa fitur, misalnya hasilnya saat ini dicatat tetapi belum ditulis ke JSON. Lihat komentar kode untuk informasi lebih lanjut.
java -jar libscout.jar -o updatability [-a android_sdk_jar ] [-j json_dir ] -l lib_api_data_dir path_to_app (s)
Untuk detail teknis dan hasil evaluasi skala besar, silakan merujuk ke publikasi kami:
Deteksi perpustakaan pihak ketiga yang andal di Android dan aplikasi keamanannya (CCS'16)
Keep Me Updated: Studi empiris tentang Perbarui Perpustakaan Pihak Ketiga di Android (CCS'17)
Jika Anda menggunakan LIBSCOUT dalam publikasi ilmiah, kami akan menghargai kutipan menggunakan entri Bibtex ini: [BIB-CCS16] [BIB-CCS17]