https://acmccs.github.io/papers/p2123-corinaA.pdf
Github
https://github.com/ucsb-seclab/difuze
Abstract
P1:
1-2 Device Driver重要、数目多
3 安全问题(susceptible to security vulnerabilities and lack proper vetting)
4 挑战:复杂数据结构
P2:
本文:工具DIFUZE
特点:interface-aware
目的:自动生成有效输入并触发kernel drivers的执行
方法:
- 静态分析
- 自动化
- 自动识别driver handlers
- 自动映射handler到device file names
- 自动构建复杂参数实例
实验:
对象:7个Android智能机
效果:
1. 能有效识别kernel driver bugs
2. 报告了32个未知缺陷,其中包括能导致任意代码执行的缺陷
1. Intro
P1 移动设备重要性
P2 安全重要性;
已有方法:1. 沙盒 2. 多种面向userspace的防御(如Address Space Layout Randomization, Data Execution Protection, SELinux)
缺点:对移动设备内核的安全保护不够多
P3 Kernel代码分类:
- 核心-多为syscall, open, execve等代码,其中syscall有详细的规格说明
- driver device- 在POSIX兼容系统上一般为ioctl,需要在特定设备的valid command集中取command和对应的数据结构。Google统计85%Bugs发生在driver device中。
P4 本文 DIFUZE - 自动静态分析,确定相关io ctl interface
- 使用recovered interface来生成inputs
- 指导有意义的变异
- 着重于测试有问题或者暴露过严重安全缺陷的Driver
贡献:
- interface-sensitive targets
- 自动分析device kernel源码