JuCify:迈向 Android 代码统一以增强静态分析
软件工程
2022-01-25 v2
摘要
原生代码如今在 Android 应用包中已十分常见,它通过 Java 原生接口与 Dex 字节码共存并交互,以提供丰富的应用功能。然而,最先进的静态分析方法大多忽视了此类原生代码的存在,而这些代码可能实现了应用行为中某些关键的敏感甚至恶意部分。现有技术的这一局限对大量不具备应用可执行代码完整视图的静态分析的有效性构成了严重威胁。为解决此问题,我们在构建 Android 应用中所有代码统一模型这一宏大研究方向上提出了新的进展。本文提出的 JuCify 方法是迈向该模型的重要一步,我们提取并合并原生代码与字节码的调用图,使最终模型能被通用的 Android 分析框架直接使用:在我们的实现中,JuCify 基于 Soot 内部中间表示构建。我们进行了实证研究,以说明若无统一模型,在良性软件与恶意软件中,由原生代码调用的相当数量的 Java 方法在应用调用图中是“不可达”的。借助 JuCify,我们使静态分析器能够揭示恶意软件依赖原生代码隐藏支付库代码或 Android 框架中其他敏感代码调用的情况。此外,JuCify 的模型使最先进工具在检测经由原生代码的数据泄露时获得更好的精确率与召回率。最后,我们展示了通过使用 JuCify 可以发现经由原生代码传输的敏感数据泄露。
引用
@article{arxiv.2112.10469,
title = {JuCify: A Step Towards Android Code Unification for Enhanced Static Analysis},
author = {Jordan Samhi and Jun Gao and Nadia Daoudi and Pierre Graux and Henri Hoyez and Xiaoyu Sun and Kevin Allix and Tegawendé F. Bissyandé and Jacques Klein},
journal= {arXiv preprint arXiv:2112.10469},
year = {2022}
}
备注
In the proceedings of the 44th International Conference on Software Engineering 2022 (ICSE 2022)