当前位置: 首页 > news >正文

[论文笔记] Detecting Vulnerable Android Inter-App Communication in Dynamically Loaded Code

最近翻 DroidBench 发现 Reflection-ICC 不能被 FlowDroid + Iccta 解决,ICSE 25 的 PacDroid 在列实验结果的时候也忽略了这一部分。

这篇文章来自 INFOCOM 18,之后扩展到了 TIFS 20。

Introduction

Java 反射机制在安卓应用程序中广泛用于维护代码版本兼容性、访问隐藏/内部安卓接口等,给静态分析工作带来的一定的挑战。而且反射机制也被用来实现动态类加载 DCL,这种情况下包含恶意行为的方法甚至可能不在静态分析工具已知的范围内。此外,应用的 ICC/IAC 可能被反射掩盖。现有工具很难处理这些问题。

文章提出了一种结合静态分析和动态分析的方法 DINA,并在 3000 个良性应用和 14000 个恶意应用上做了评估。

image

image

image

这个例子展示了:恶意应用通过 DCL 调用 getIntent 方法获取包含敏感信息的 Intent 后再使用 Messenger 泄露敏感信息的攻击路径。

image

这个例子来自真实应用,展示了:可疑方法 toCall 被掩盖在反射调用之后,如果静态分析工具不解析这个反射调用,toCall 实际上不可达。

DINA

DINA 的 workflow 如下:

image

DINA 包含三个主要的模块:

  1. 静态分析:生成 IAC 图和识别 DCL 和反射调用

  2. 动态分析:运行 DCL 和反射调用对应的代码增强 IAC 图

  3. 利用 IAC 图的生成结果识别可疑路径

Static analysis

DINA 的实现基于 JITANA。

  1. Preprocessing:反编译生成字节码,为每个 app 生成方法调用图 MCG 和指令图 IG。

  2. Reflection/DCL analyzer:检查 DCL 和反射 API 调用

  3. Static IAC analyzer:对每个方法的指令图做遍历,匹配 manifest 文件中的 Intent 字符串,如果找到匹配,则会在两个与匹配的 Intent 动作相关的应用组件之间添加一条新边。

image

Dynamic analysis

  1. Resolving reflection and loading new codes:之前提取的反射信息包括每个应用程序中实现反射和 DCL 的组件名称及相应的方法名称。这些应用程序的方法/组件被视为关注的方法(MoI),采用模糊测试来触发包含反射和DCL调用点的组件。

  2. Dynamic IAC analyzer:一旦 DCL 加载新 dex 文件,DINA 会即刻拉取并解析整个类,而不仅限于被触发的 MoI;类内所有方法都会被增量扫描,随时发现二次反射/DCL,持续把新发现的跨应用通信边写回静态图。

image

IAC vulnerability analyzer

使用双向 DFS 寻找可能的缺陷路径。

image

Evaluation

在 DroidBench 的 Reflection 和 DCL 相关的测试中干掉了 FlowDroid + Iccta。

image

另一个结果比较有意思,展示了真实世界中的安卓应用是否真的包含这种模式。实验结果显示,92.0%(即 26,361/31,894)的 AndroZoo 应用实现了反射调用,51.1%(即 16,313/31,894)的应用实现了 DCL 调用。这表明 DCL 和反射机制在 Android 应用中得到了广泛应用。更值得注意的是,99.4% 的 3,000 款热门应用实现了反射调用,90.1% 的应用实现了 DCL 调用。因此,反射和 DCL 机制在热门应用中的采纳更为广泛。就恶意软件应用而言,85.0% 实现了反射机制,而仅有 24.3% 的应用采用了 DCL 机制。

image

在实验中还发现了一些被真实利用的隐蔽 IAC 漏洞。应用程序 appinventor.ai_created4each.My_Diary 和 com.my.mail 之间存在 Intent spoofing 漏洞,攻击过程如下图,

image

http://www.gsyq.cn/news/117457.html

相关文章:

  • “管理员阻止你运行此应用”怎么办?详解系统权限解除与一键修复方案
  • 【从 “堵车” 到 “飙车”:Java 并发 / 并行终极解析 + 接口抗并发实战指南】
  • 商品颜色/尺码选项太多|谷歌爬虫不收录怎么办
  • 交换机基础拥塞处理机制(Tail Drop 、RED、ECN)
  • 给AI“考题”换个计分方式,谷歌SigLIP让多模态模型学得又快又好!
  • 【漏洞】Druid未授权访问漏洞及修复方案
  • 【2025最新】植物大战僵尸融合版玩法革新、下载安装教程与策略解析
  • 15、Linux 网络文件系统(NFS)使用指南
  • 2025年12月打圈机公司推荐,专业制造与品牌保障口碑之选 - 品牌鉴赏师
  • 【单片机毕业设计】【mcugc-mcu929】基于单片机的智能环境监测与控制
  • 2025年12月全国集装箱液袋,高温液袋,沥青液袋厂家品牌推荐榜,彰显国产技术实力 - 品牌鉴赏师
  • java 16
  • 求职兼职招聘系统源码 Python+Django+Vue 前后分离 设计文档
  • FastGS = 在 3DGS 框架下,引入「多视图一致性驱动的结构优化(VCD + VCP)」
  • 15、高效使用浏览器:Konqueror的实用技巧与操作指南
  • [MoeCTF 2022]nyanyanya
  • “知数善用”漫画番外(下):从“沼泽困局”到“产品超市”,业务妹子与数据哥的协同共生之路
  • lxy_蓝桥杯C++_系列四_时空复杂度
  • CF1391D 505 - Rye
  • sg.Multiline 的用法
  • 学生寝室管理系统源码 Python+Django+Vue 前后分离
  • 网络安全必备工具收藏指南:20款神器助你快速入门
  • 公司人员管理系统源码 Python+Django+Vue 前后分离 设计文档
  • 【LangChain4J】图生文文生图,以及第三方平台集成
  • lefthook如何与其他工具组合使用?
  • [GKCTF 2020]CheckIN
  • 基于大数据的交通信号智能控制系统的设计与实现开题报告
  • 在职备战法考,先择校还是先备考?
  • LangChain 1.0重大革新:如何结合Milvus构建生产级Agent全攻略!
  • 多线程核心:互斥与同步