ContexIoT: Towards Providing Contextual Integrity to Appified IoT Platforms
摘要
- 提出一个基于情景(Context)的应用权限系统。ContexIoT 为应用化 IoT 平台的访问控制提供一种叫做 Contextual integrity的特性,意即:当用户允许一种应用的行为时,它实际上允许的是 这个应用在当时的Context下进行这种行为,而不是在任何时候。
- 构建了一个物联网攻击应用程序数据集(设备、协议、平台)(针对恶意逻辑的攻击,不考虑拒绝服务攻击)。在这个数据集上对ContexIoT进行评估,我们发现25种不同的攻击执行路径都被成功地区分出来,显示了正确的context信息
- 对contextIOT进行了性能评估,延迟低,权限请求频率远低于用户习惯化或烦扰风险的阈值
问题
- 允许不被信任的第三方代码来控制用户的设备,例如比如用三星生产的运动传感器数据去控制飞利浦生产的灯泡,都可以在三星 SmartThings 平 台上实现,导致访问控制缺陷
- 物联网应用的目标是在尽量少的用户交互下实现自动化设备控制。除了发送通知,通常在应用程序安装过后不需要用户交互,这使得在运行时让用户参与context变得更加困难
- 在智能手机平台上,由于某些权限的请求频率太高,无法在每次请求发生时提示用户,为了不造成用户习惯化或厌烦,因此当前的设计转向只在第一次请求发生时提示用户以提高可用性。但是,这会损害context完整性,因为后续的敏感操作可能在与初始请求完全不同的context中执行
攻击分类
已曝出的物联网攻击
- 脆弱认证
- 恶意app/固件
- 问题使用场景:物联网特定使用场景中的技术滥用
来自平台的漏洞
app漏洞
云平台漏洞
方法
ContexIoT的目标是在运行时触发敏感操作时,可以让用户验证两个重要属性:
- when:是否在用户所需的条件下触发敏感操作
- what:敏感操作是否与用户预期一致
ContexIoT 会基于对应用程序静态分析(static analysis) 的结果进行安全补丁的方式来为程序加入安全执行的逻辑。敏感action发生时会向负责进行访问 控制的远程服务请求,该服务会根据不同的context 来做出访问控制的决定:当该敏感action发生的 context和用户之前允许过的一种 Context 相符时,该行为被允许; 当某种 Context 第一次 出现时,将它显示给用于,让用户做出决定
- context信息收集
ContexIoT采用了一种混合的方法,将静态分析和运行时日志记录结合起来,使用静态分析结果来减少运行时日志记录的开销。
context信息:UID/GID、UI Activity、Control flow、Runtime value、Data flow
- 信息用法
描述敏感action触发动作的Control flow信息,以及运行时的数据应该能够区分攻击执行路径和正常执行路径的context。Data flow信息用于将context信息传递给用户,以便更好地通知用户安全含义。
为每个用户维护一个权限映射
与其他基于context的方法对比
本方法可以检测出以下其他方法可逃避的:
- Asynchronous leakage:对于远程控制攻击,当恶意负载被执行时,ContexIoT向用户提供敏感操作的数据依赖信息,明确告诉用户即将执行的方法来自于在单独的过程中接收到的响应。
- Control flow abuse:例如,当一个恶意的锁管理器应用程序检测到房主回来时,它第一次试图打开房门,它就会被这种基于接收器的访问控制系统授予unlock()功能。ContexIoT检测出这两种场景中控制流的不一致性,并分别要求用户的权限。
- Dynamic code loading:ContexIoT静态地检测动态代码加载的潜在接收器,从而防止恶意逻辑逃避访问控制。
- Policy abuse:基于MAC和DAC的方法根据用户或系统定义的策略在应用程序级别授予访问权限。它们本质上容易受到恶意应用程序逻辑的攻击,这种逻辑滥用了对应用程序本身的信任,这种信任通常出现在重新打包的应用程序中。本方法执行访问控制在程序路径级且可以细粒度的策略控制和良性访问控制。
实现
静态分析:control flow
运行时日志:Method invocation trace、Dynamic method invocation(device&method name)、Runtime data、Data dependency(动态污点分析)
实验
- smartthings simulator
- 使用模糊测试方法以不同的触发顺序随机生成所有类型的外部事件,以确保良好的代码覆盖率。
虚拟设备平均增加26.7%延迟,个别真实设备增加延迟基本不到10%可以忽略。