[Paper] GAPS: 정적 경로 합성을 통한 동적 안드로이드 분석 가이드
Source: arXiv - 2511.23213v1
Overview
이 논문은 GAPS (Graph‑based Automated Path Synthesizer) 라는 새로운 시스템을 소개한다. GAPS는 정적 코드 분석과 동적 UI‑기반 테스트를 연결하여 Android 앱 내부의 임의 메서드에 안정적으로 도달할 수 있게 한다. 앱의 호출 그래프에서 실행 경로를 자동으로 합성함으로써, 전통적인 GUI‑전용 테스터가 놓치는 라이브러리 함수나 백그라운드 서비스와 같은 코드까지 런타임을 유도한다.
Key Contributions
- 첫 번째 하이브리드 프레임워크로, 경량 정적 역방향 호출‑그래프 탐색과 데이터 흐름 가이드를 결합해 구체적인 상호작용 스크립트를 생성한다.
- 경로 합성 알고리즘은 정적 호출‑그래프의 엣지를 UI 동작(클릭, 인텐트 등)으로 변환하여 런타임에서 실행 가능하게 만든다.
- 포괄적인 평가를 AndroTest 벤치마크와 50개의 인기 실전 앱에 적용했으며, 기존 동적 도구 대비 5‑6배의 메서드 도달률 향상을 보였다.
- 성능‑인식 설계: 정적 분석은 벤치마크에서 앱당 평균 4.27 초(대형 실전 앱에서는 278.9 초) 소요하면서 높은 정밀도를 유지한다.
- 오픈소스 구현(GAPS)으로 기존 Android 테스트 파이프라인에 쉽게 통합할 수 있다.
Methodology
- 정적 호출‑그래프 구축 – GAPS는 빠른 흐름‑무시 분석기를 사용해 메서드 수준 호출 그래프를 만든다.
- 역방향 탐색 – 목표 메서드(예: 취약점이 의심되는 API)에서 시작해 그래프를 역방향으로 걸으며, 목표를 호출할 수 있는 후보 전임 메서드를 수집한다.
- 데이터‑흐름 필터링 – 경량 데이터 흐름 분석을 통해 필요한 객체/파라미터가 실제로 앞선 코드에서 생성될 수 있는지 확인하고, 실행 불가능한 분기를 제거한다.
- 경로 변환 – 남은 호출‑그래프 엣지를 구체적인 UI 이벤트(버튼 클릭, 인텐트 실행, 서비스 시작)로 매핑한다. GAPS는 Android UI‑Automator 프레임워크와 호환되는 스크립트를 출력한다.
- 동적 실행 – 스크립트를 에뮬레이터/디바이스에서 실행하는 런타임 엔진에 전달해 합성된 경로를 따라 목표 메서드를 트리거한다.
- 피드백 루프 – 실행이 실패하면 GAPS는 백트랙하고, 대체 분기를 시도하거나 일반 GUI‑퍼저로 전환한다.
전체 파이프라인은 자동화되어 있다: 개발자는 도달하고자 하는 메서드만 지정하면 된다.
Results & Findings
| 평가 | 정적 도달 가능성 | 정적 시간 (앱당) | 동적 도달 가능성 |
|---|---|---|---|
| AndroTest benchmark | 식별된 목표의 88.24 % | 4.27 s | 실제 실행된 비율 57.44 % |
| 최첨단 동적 도구 (3회 평균) | – | – | APE 12.82 %, GoalExplorer 9.69 %, Guardian 17.12 % |
| 정적 도구 | FlowDroid 58.81 % (35.06 s), DroidReach 9.48 % (23.46 s) | – | – |
| 50개의 인기 실전 앱 | 식별된 목표의 62.03 % | 278.9 s | 실행된 비율 59.86 % |
요약: GAPS는 순수 동적 UI 테스터와 정적 전용 분석을 크게 앞서며, 실제 앱에서 50 % 이상의 동적 도달률을 달성하면서 분석 시간을 몇 분 안으로 유지한다.
Practical Implications
- 보안 감사 – 침투 테스트 담당자는 특정 암호화 또는 권한 검사 API를 직접 UI 흐름을 만들 필요 없이 목표로 삼아 취약점 검증 속도를 높일 수 있다.
- 자동 회귀 테스트 – CI 파이프라인에 GAPS 스크립트를 삽입해 결제 처리와 같은 핵심 코드 경로가 매 빌드마다 실행되도록 보장한다.
- 디버깅 및 크래시 재현 – 개발자는 예외를 발생시키는 메서드에 도달하도록 GAPS에 요청하면, 해당 버그를 디바이스에서 재현하는 단계가 자동으로 생성된다.
- 라이브러리 통합 검증 – 서드파티 SDK를 통합할 때, SDK 초기화 및 사용 경로가 실제 디바이스에서 도달 가능한지 확인할 수 있다.
- 툴체인 호환성 – GAPS는 UI‑Automator/ADB 명령을 출력하므로 기존 Android 테스트 프레임워크(Espresso, Robotium 등)와 바로 사용할 수 있다.
Limitations & Future Work
- 정적 근사 – 호출 그래프가 흐름‑무시이기 때문에, 리플렉션이나 동적 클래스 로딩 같은 고도로 동적인 특성은 여전히 놓칠 수 있어 난독화된 앱의 도달성을 제한한다.
- 환경 의존성 – 특정 경로는 네트워크, 센서 등 특정 디바이스 상태를 필요로 하는데, GAPS는 현재 이를 모델링하지 않아 실행 실패가 발생할 수 있다.
- 매우 대형 앱에 대한 확장성 – 대부분의 마켓 앱에는 충분하지만, 앱 규모가 커질수록 분석 시간이 증가한다. 향후 증분 혹은 병렬 그래프 구축 방안을 탐색할 예정이다.
- 사용자 정의 제약조건 – 로그인 상태, 특정 로케일 등 맞춤 전제조건을 합성 엔진에 전달할 수 있도록 하는 기능을 추가할 계획이다.
전반적으로 GAPS는 개발자와 보안 전문가가 Android 앱을 깊이 있게, 메서드 수준에서 분석하는 것을 실용적으로 만든 중요한 진전이다.
Authors
- Samuele Doria
- Eleonora Losiouk
Paper Information
- arXiv ID: 2511.23213v1
- Categories: cs.SE
- Published: November 28, 2025
- PDF: Download PDF