Open Source Component Detection in Android APKs

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

There is a need to detect and identify open source components within an Android Application Package (APK) without access to its source code, as well as to determine compliance requirements and security vulnerabilities posed by these components, which is particularly challenging due to the limited resources on mobile devices and the mixing of code to enhance security.

Innovation Solution

A method and system that involves creating an open source class and archive database, retrieving classes from the APK, matching them against the database, and reporting the corresponding archive collection, which includes clustering and removing redundant or revisionary archives to determine the minimal set of open source components, their licenses, bugs, and vulnerabilities.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If code mixing is applied to enhance security in APKs, then security is improved, but difficulty of detecting and measuring open source components increases

Engineering Contradiction:
ImprovesecurityVSAvoiddifficulty of detecting open source components
Core Design Contradiction:
ReliabilityVSDifficulty of detecting and measuring

Solution Approach 1:

The patent uses class files as an intermediary to detect open source components. Instead of directly analyzing mixed source code (which is difficult), the system extracts and analyzes class files that contain metadata about open source components, their licenses, and vulnerabilities. This intermediary approach allows detection without needing to trace through the mixed source code.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent replaces manual source code analysis (mechanical process of reading and understanding code) with automated analysis of class file metadata. The system uses tools to extract information from class files about open source components, replacing the need for manual code review and making detection feasible despite code mixing.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Measurement precision

If comprehensive open source database is created to identify all components, then measurement precision is improved, but device complexity increases

Engineering Contradiction:
Improveprecision of open source component identificationVSAvoidcomplexity of detection system
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent creates a comprehensive open source database in advance, populated with information about known open source components, their class names, licenses, and vulnerabilities. This preliminary preparation allows the detection system to simply query the database during APK analysis, rather than building the database during the detection process itself, reducing operational complexity.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system uses class files as copies or representations of the actual source code. By analyzing these class file copies that contain metadata about open source components, the system achieves precise identification without needing to handle the complex original source code, thereby reducing device complexity while maintaining measurement precision.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS10241759B2Detecting open source components built into mobile applications
Publication Date: 2019.03.26 WHITESOURCE LTD
  • US10241759B2 patent drawing
  • US10241759B2 patent drawing
  • US10241759B2 patent drawing

AI summary

A method, system and computer program product, the method comprising: obtaining an open source class and archive database; receiving an Android Application Package (APK); retrieving one or more class comprised in the APK; matching each of the classes against the open source class and archive database, to obtain a corresponding archive collection, such that each archive in the archive collection comprises at least one of the classes; and reporting the respective archive collection.