中文译名:通过日志引导的安卓智慧电视漏洞模糊测试 作者:Yousra Aafer 单位:滑铁卢大学 国家: #法国 年份: #2021年 来源: #USENIX会议 关键字: #fuzzing 代码地址: 笔记建立时间: 2023-04-22 14:16
abstract
开发了一种新的动态模糊方法,其特点是基于日志的动态输入规范推导和反馈收集。我们的解决方案进一步引入了一种新的外部观察者,它可以监测与电视相关的物理症状 (即视觉和听觉),以检测潜在的身体异常。
introduction
- 静态分析发现“有趣”的定值目标,作者专注于供应商集成到操作系统中的 API
- 动态分析曹勇即时日志分析技术,推断目标 API 的输入规范并收集执行反馈。
background
- 操作系统定制化 API 多
- 操作设备物理状态的 API 运行在高权限环境中
- 大多数 API 缺乏保护机制
挑战
- 逆向分析目标接口
- 对输入标准的逆向
- 对本地层的 API 描述符的逆向
- 评估执行反馈——主要是程序肯能不会崩溃,但是设备的物理反应会存在异常 0
Design Overview
4 Fuzzing Target Locator
- 目的:提取程序中的定制服务
- 方法:将提取的 api 和 AOSP 模型的 API 比较,AOSP 中没有的就是定制 api
检测系统服务 API
- java 层 api 可以从相应服务 IBinder 接口的字节码中提取
- 本机层 api 求助于在底层 Binder IPC 中提取本地函数的接口
- 也就是说,对于每个本机 API,我们的目标是从本机二进制文件中恢复事务 id、参数、回复数据类型
提取本地函数接口
对这部分不感兴趣,跳过。
5 Input Generation Through Log-Guidance
- 过滤与目标 API 无关的日志信息
- 过滤与输入验证无关的日志信息
- 提取输入规范
识别目标 api 相关日志信息
- 采用统计方法,因为目标 API 记录的消息应该包含在执行后获得的所有日志转储中,所以通过在调用目标 API 之前和之后获得的日志转储之间执行一组差异来获得目标消息。
- 但是这样并不足以去掉所有的非目标信息
- 为了解决这个问题,我们依靠给定消息在一组目标日志和另一组基线日志上的经验概率来估计它成为目标消息的可能性。直观地说,在目标日志中具有较高经验概率的消息和在基线日志中具有较低经验概率的消息表明它可能是目标消息。
识别输入验证信息
- 通过字符串分析重建大量的日志消息模板,利用污点分析标记是否和输入验证有关。用这些数据来训练一个分类器。
组件 (A)收集并自动标记来自各种 Android 框架的训练样本 (约57000条消息)。组件 (B)使用训练语料库来训练不同的分类器: 我们利用 word2vec,这是最先进的预测模型,用于学习原始文本中的词嵌入,为每个消息构建特征向量。然后我们用特征向量作为 CNN 的第一层来训练 CNN 分类器。
动态 fuzzer
?作者只是用一个例子展示了效果,但是这里 fuzzer 如何依据 log 去变异的?作者貌似没有提到
很可惜。这篇论文没有开源代码。