Call Graph Soundness in Android Static Analysis

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Samhi, Jordan, Just, René, Bissyandé, Tegawendé F., Ernst, Michael D., Klein, Jacques
Formato: Preprint
Publicado: 2024
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866910521640353792
author Samhi, Jordan
Just, René
Bissyandé, Tegawendé F.
Ernst, Michael D.
Klein, Jacques
author_facet Samhi, Jordan
Just, René
Bissyandé, Tegawendé F.
Ernst, Michael D.
Klein, Jacques
contents Static analysis is sound in theory, but an implementation may unsoundly fail to analyze all of a program's code. Any such omission is a serious threat to the validity of the tool's output. Our work is the first to measure the prevalence of these omissions. Previously, researchers and analysts did not know what is missed by static analysis, what sort of code is missed, or the reasons behind these omissions. To address this gap, we ran 13 static analysis tools and a dynamic analysis on 1000 Android apps. Any method in the dynamic analysis but not in a static analysis is an unsoundness. Our findings include the following. (1) Apps built around external frameworks challenge static analyzers. On average, the 13 static analysis tools failed to capture 61% of the dynamically-executed methods. (2) A high level of precision in call graph construction is a synonym for a high level of unsoundness; (3) No existing approach significantly improves static analysis soundness. This includes those specifically tailored for a given mechanism, such as DroidRA to address reflection. It also includes systematic approaches, such as EdgeMiner, capturing all callbacks in the Android framework systematically. (4) Modeling entry point methods challenges call graph construction which jeopardizes soundness.
format Preprint
id arxiv_https___arxiv_org_abs_2407_07804
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Call Graph Soundness in Android Static Analysis
Samhi, Jordan
Just, René
Bissyandé, Tegawendé F.
Ernst, Michael D.
Klein, Jacques
Software Engineering
Static analysis is sound in theory, but an implementation may unsoundly fail to analyze all of a program's code. Any such omission is a serious threat to the validity of the tool's output. Our work is the first to measure the prevalence of these omissions. Previously, researchers and analysts did not know what is missed by static analysis, what sort of code is missed, or the reasons behind these omissions. To address this gap, we ran 13 static analysis tools and a dynamic analysis on 1000 Android apps. Any method in the dynamic analysis but not in a static analysis is an unsoundness. Our findings include the following. (1) Apps built around external frameworks challenge static analyzers. On average, the 13 static analysis tools failed to capture 61% of the dynamically-executed methods. (2) A high level of precision in call graph construction is a synonym for a high level of unsoundness; (3) No existing approach significantly improves static analysis soundness. This includes those specifically tailored for a given mechanism, such as DroidRA to address reflection. It also includes systematic approaches, such as EdgeMiner, capturing all callbacks in the Android framework systematically. (4) Modeling entry point methods challenges call graph construction which jeopardizes soundness.
title Call Graph Soundness in Android Static Analysis
topic Software Engineering
url https://arxiv.org/abs/2407.07804