LibScout은 Android/Java 앱에서 타사 라이브러리를 감지하기위한 가벼우면서 효과적인 정적 분석 도구입니다. 검출은 식별자 이름 변경 또는 반사 기반 API 숨기기 또는 제어 흐름 무작위 화와 같은 코드 기반 난독 화과 같은 일반적인 바이트 코드 난독 화 기술에 대해 탄력적입니다. 또한 LibScout은 심각한 버그 또는 보안 문제가 포함 된 버전을 포함하여 정확한 라이브러리 버전을 정확히 찾아 낼 수 있습니다.
LibScout은 Android 앱에서 탐지하는 데 사용할 수있는 라이브러리 프로파일을 추출하기 위해 원래 라이브러리 SDK (compiled .jar/.aar 파일)가 필요합니다. 사전 생성 라이브러리 프로파일은 저장소 LibScout-Profiles에서 호스팅됩니다.
고유 한 탐지 기능 :
시간이 지남에 따라 LibScout은 Apps에서 라이브러리 SDK 및 탐지 된 라이브러리 모두에서 추가 분석을 수행하기 위해 확장되었습니다.
또한 API 호환성 정보를 IDE에 통합하여 개발자가 의존성을 최신 상태로 유지할 수 있도록 Android Studio Extension UP2DEP가 있습니다.
Scripts 디렉토리에는 Maven Central , JCenter 및 Custom MVN 리포지토리 의 완전한 버전 이력을 포함하여 원본 라이브러리 SDK를 자동으로 다운로드 할 수있는 라이브러리 스크래퍼 Python 스크립트가 포함되어 있습니다. 원래 라이브러리 SDK는 프로파일을 생성하고 라이브러리 API 호환성 분석을 수행하는 데 사용될 수 있습니다 (아래 모듈 참조). 라이브러리 프로파일-제너레이터 스크립트를 사용하여 스케일에서 프로파일을 편리하게 생성하십시오.
스크레이퍼는 가져 오기 위해 라이브러리의 메타 데이터를 포함하는 JSON 구성으로 구성되어야합니다 (이름, Repo, GroupId, ArteFactID). Scripts/Library-Specs 디렉토리에는 Maven Central에서 100 개가 넘는 라이브러리를 검색하는 구성 파일과 Google Maven Repository에서 Amazon 라이브러리 및 Android 라이브러리를 다운로드하기위한 구성 (지원, GMS, KTX, JetPack, ..)이 포함되어 있습니다.
New (07/30/19) : 현재 1182 버전 (Trackers.json)을 갖춘 45 개의 AD/추적 라이브러리 목록이 추가되었습니다.
즉시 사용 가능한 라이브러리 프로파일 및 라이브러리 메타 데이터는 저장소 LibScout-Profiles에서 찾을 수 있습니다.
LibScout은 다음 보안 취약점으로 라이브러리 버전을보고하는 기능을 구축합니다.
취약한 버전에 대한 사전 생성 프로파일에는 [Security] , [Security-Fix] 가있는 패치가 태그됩니다.
이 정보는 프로파일을 생성하는 데 사용 된 Library.xml 파일에서 인코딩됩니다. 새로운 보안 문제가 발생할 때마다 목록/프로필을 업데이트하려고합니다. 정보를 공유 할 수 있다면 알려주십시오.
| 도서관 | 버전 | 수정 버전 | 취약성 | 링크 |
|---|---|---|---|---|
| 에어 푸시 | <8.1 | > 8.1 | 비 사양화 된 기본 웹 뷰 설정 | 링크 |
| 아파치 CC | 3.2.1 / 4.0 | 3.2.2 / 4.1 | 사막화 취약성 | 링크 |
| 드롭 박스 | 1.5.4-1.6.1 | 1.6.2 | 취약성을 떨어 뜨 렸습니다 | 링크 |
| 페이스 북 | 3.15 | 3.16 | 계정 납치 취약성 | 링크 |
| Mopub | <4.4.0 | 4.4.0 | 비 사양화 된 기본 웹 뷰 설정 | 링크 |
| 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를 통한 안전하지 않은 기능 노출 | 링크 |
| vungle | <3.3.0 | 3.3.0 | MITM 공격 취약성 | 링크 |
| Zeroturnaround | <1.13 | 1.13 | 지퍼 슬립 취약점 | 링크 |
Google Play (05/25/2017)에서 무료 앱을 마지막으로 스캔 한 LibScout은 여전히 이러한 취약한 LIB 버전 중 하나를 포함하는> 20k 앱을 감지했습니다. 결과는 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 sdks (.jar 및 .aar 파일 지원)에서 고유 한 라이브러리 지문을 생성합니다. 이 프로파일은 각 라이브러리 버전이 앱에 포함되어 있는지 테스트하는 데 사용될 수 있습니다. 각 라이브러리 파일에는 메타 데이터 (예 : 이름, 버전, ..)가 포함 된 Library.xml 이 추가로 필요합니다. 템플릿은 자산 디렉토리에서 찾을 수 있습니다. 편의를 위해서는 라이브러리 스크레이퍼 (./scripts)를 사용하여 Maven 저장소에서 전체 라이브러리 이력을 다운로드 할 수 있습니다. 기본적으로 LibScout은 패키지 및 클래스 정보 (메소드 생략)로 Hashtree 기반 프로파일을 생성합니다.
java -jar libscout.jar -o 프로파일 [-a android_sdk_jar ] -x path_to_library_xml path_to_library_file
사전 생성 프로파일을 사용하여 앱의 라이브러리를 감지합니다. 선택적으로 LibScout은 탐지 된 라이브러리에 대한 API 사용 분석을 수행합니다. 즉, 앱 또는 다른 라이브러리 (-U 스위치)에서 사용하는 라이브러리 API가 사용되는 라이브러리 API.
분석 결과는 다른 형식으로 작성할 수 있습니다.
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는 라이브러리 항아리를 재귀 적으로 검색합니다 | aars (잎 디렉토리는 최대 하나의 jar | 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는 암시 됨). 또한 lib_api_analysis 모드에서 생성 된 라이브러리 API Compat 데이터 (-L 스위치를 통해)가 필요합니다. LibScout은 앱의 LIB API 사용량과 Compat Info를 기반으로 중고 LIB API 세트와 여전히 호환되는 가장 높은 버전을 결정합니다.
참고 : 새로운 구현에는 여전히 일부 기능이 부족합니다. 예 : 결과는 현재 로그인되었지만 아직 JSON에 기록되지 않았습니다. 자세한 내용은 코드 주석을 참조하십시오.
java -jar libscout.jar -o updatability [-a android_sdk_jar ] [-j json_dir ] -l lib_api_data_dir path_to_app (s)
기술적 인 세부 사항 및 대규모 평가 결과는 간행물을 참조하십시오.
안드로이드 및 보안 응용 프로그램의 신뢰할 수있는 타사 라이브러리 탐지 (CCS'16)
계속 업데이트 : Android에 대한 타사 라이브러리 업데이트 가능성에 대한 경험적 연구 (CCS'17)
과학적 간행물에서 libscout을 사용한다면, 우리는 이러한 bibtex 항목을 사용하여 인용에 감사 할 것입니다 : [BIB-CCS16] [BIB-CCS17]