随着物联网云的兴起,越来越多的智能设备接入了云。现在人们可以随时随地拿起手机,打开APP远程控制家里的路由器、摄像机、扫地机等等。但这种前所未有的便利也引入了各种安全隐患。笔者最近在usenix上读到一篇关于智能物联网家居平台安全隐患的论文:"Discovering and Understanding the Security Hazards in the Interactions between IoT Devices, Mobile Apps, and Clouds on Smart Home Platforms",本文以这篇论文为主线,聊聊智能物联网家居平台的安全隐患。
2.设备注册:设备注册后,物联网设备被赋予一个唯一的设备 ID。不同类型的平台以不同的方式提供设备 ID。对于 I 类平台,设备将其设备身份信息发送到它所属的物联网云,云然后生成一个设备ID 并将其返回给设备,云端还保留了一个设备 ID 记录以供将来验证。对于 II 型平台,设备的设备 ID 由平台事先硬编码到设备。
3.设备绑定:移动应用账户和设备直接建立绑定关系,只有授权用户可以通过云端访问设备。对于Type I平台,绑定请求直接由移动应用程序发送到物联网云,由物联网云负责维护绑定信息并执行权限检查(即用户帐户是否具有访问设备的权限)。对于 Type II 平台,移动应用程序首先将帐户信息发送到设备,有了设备 ID 和用户帐户,设备向物联网云发出绑定请求。
6.设备解绑和重置:当用户不再使用该设备,可以解除绑定或重置它。 当用户请求解绑时,对于 I 类平台, 物联网云直接擦除绑定信息。对于II类平台,因为设备本地也存有绑定信息,解绑请求从云端下发到设备擦除绑定信息。
这里文中假设攻击者有能力收集必要的信息,包括设备身份信息和合法性信息。针对不同的平台,收集这些信息项的难度不同。根据获取特定身份信息项的方式,可以对这些信息项进行分类分为三类:公共信息(P)、可猜测信息(G)和硬编码信息(H)。例如,设备型号和设备芯片id (CID) 是公共信息,可猜测的信息是指能够被暴力猜解的,比如MAC 地址就是一种典型的可猜测的信息。硬编码的信息是指不易预测的、不可变的,并且设备固有的。例如,嵌入在设备硬件中设备 ID 是 Type II 平台的一种典型的硬编码信息。此外,对于某些Type I 平台,硬编码信息(例如,序列号(SN)) 也包含在设备 ID 的生成中。虽然硬编码的信息不容易获得,但它是不变的,一旦这些信息泄露,受害者设备将存在潜在风险。要获取这些信息,攻击者可以通过嗅探设备应用流量或进入设备shell等方式来获取设备的硬编码设备 ID,另外二手平台上售卖的设备或公寓酒店的设备ID信息也可能会被攻击者恶意收集。
F1: Insufficient State Guard。实验发现这些平台对三个实体都没能够正确地处理它们的states。这可能导致严重后果。由于物联网云负责设备识别管理等安全关键服务,因此物联网云受到的影响最大。在物联网云的状态机中(Figure 2a),当云工作时处在状态 4(Running)中,理想情况下它应该只接受已授权用户请求(edge 6)或设备解除绑定请求(edge3)。但实际测试中发现物联网云也接受其他请求。根据物联网云处于状态 4 时正确接受的请求,将缺陷F1分解为三个子缺陷:
F1.1:这个缺陷是特定于 I 型平台的。拥有所有设备识别信息的攻击者可以使用虚拟设备向云端发送注册请求。(Figure 3F1.1)。 F1.2:此缺陷特定于 Type II 平台。 攻击者可以使用虚拟设备发送绑定请求将设备(由设备 ID 标识)与攻击者的帐户相关联(Figure 3F1.2)。在 II 型平台中的设备,绑定请求是从设备发出,云无条件接受绑定请求。结果,虚拟设备可以将攻击者的帐户绑定到受害者设备。 F1.3:物联网云接受设备登录请求,并将相应的设备ID返回给攻击者,即使它处于状态 4。
F2: Illegal State Combination。实验发现这三个实体有时会处于意想不到的非法状态组合中。当一个非法的状态组合被利用时,安全可能会被破坏。例如,理想情况下,当用户重置并取消绑定设备,三个实体都应回到它们的初始状态(即状态组合(S1,S1,S1))。但是,对于 I 型平台,如果用户在没有重新设置设备的情况下解绑设备,设备仍然保留与云的连接,并且状态组合实际上切换到(S1,S4,S1),由于该设备处于这种非法状态组合,如果攻击者远程发出注册该设备的请求,请求被允许,云转移到状态 2。如果攻击者继续发送请求绑定设备,云接受请求并转移到状态4(状态3被跳过,因为连接仍然与受害者设备一起维护)。此时,如果攻击者向设备发送控制命令,云端将错误地将命令转发到被解绑的设备。这个本质上会导致设备劫持攻击。
F4: Unauthorized Device Unbinding。理想情况下,只有拥有当前绑定到设备的用户有解除绑定设备的权限。如果解除绑定,一般在移动应用程序上进行,解除绑定请求中包含用户凭据。但对于Type I平台,发现也可以在设备端实现设备解绑。根据分析,设备端取消绑定命令不包含任何用户凭据。作为结果,攻击者可以构建一个虚拟设备使用设备端 API 伪造解绑请求,然后在用户不知情的情况下设备被解绑(Figure 3F4)。
论文中利用各种组合缺陷,验证了一系列攻击,包括远程设备替换、远程设备 DoS、非法设备占用。
文中实验使用 Alink 设备(Philips smart plug with model SPS9011A)和一个 TP-LINK 设备(WiFi Bulb with model LB110) 分别代表 I 型和 II 型设备,然后设法获得它们的身份和合法信息,Alink 设备使用型号、MAC 和 CID 作为其身份信息。型号和 CID,对于特定的设备类型是固定的,相应移动应用程序维护的日志中可以提取它们。对于 MAC 地址,上文已经提到过可以使用暴力破解。对于 TP-LINK 设备,由于其身份信息(即设备 ID)和合法性信息(即 hwid 和MAC 地址)是硬编码的,必须物理提取它们。具体来说,实验收集了设备 ID、hwid 和MAC 地址通过发起 MITM 攻击来拦截设备-应用程序通信。有了所有可用的所需信息,可以使用Python构建虚拟设备,即用Python程序模拟设备行为。
这里展示了攻击者如何使用虚拟设备远程替换受害者的设备。下文使用 Alice 来表示受害者/合法用户,Trudy 表示攻击者。
在Figure5 的顶部(最高的红色虚线上方),展示了正常的工作流程,Alice 在 Type I 平台上使用她的 IoT 设备。在 Alice 为设备提供 WiFi 凭据后,设备将其合法性凭证和设备身份信息发送到云端以进行注册(步骤 A.1)。基于设备身份信息,云端用设备 ID A 注册设备并将其绑定到 Alice 的帐户(步骤A2)。设备登录后(步骤 A.3),Alice 可以控制她帐户下的设备。然后,攻击者 Trudy 进入,如图中间部分所示(在两条红色虚线之间),他先让虚拟设备发送相同的设备注册请求,由于缺陷 F1.1,云接受此请求并注册具有相同的设备 ID A的虚拟设备,但设备 ID A 仍保持与Alice的绑定,那么Trudy可以利用缺陷 F1.3 和 F3 在没有 Alice 账户信息的情况下登录虚拟设备。由于虚拟设备与真实设备具有相同的设备ID,云与真实设备断开了连接并与虚拟设备建立连接。但是,当真实设备在一段时间内没有收到心跳包,它会再次自动登录到上云并使虚拟设备脱机。相当于真实设备和虚拟设备在竞争与云的连接,攻击者Trudy可以将虚拟设备设置频繁登录,结果就是虚拟设备总能“挤掉”真实设备。
同样,Figure6 的顶部(最高红色虚线上方)显示正常情况下Alice 如何在 Type II 平台上使用她的设备的工作流程。移动应用程序将她的帐户信息发送到设备(步骤A.1),设备发送绑定请求将设备 ID 和合法性信息以及帐户信息发送到云端(步骤 A.2)。云将设备 ID A绑定 到 Alice 的帐户。设备登录到云(步骤 A.3),Alice 可以使用移动应用程序控制/监控设备。图中中间(两条红色虚线之间行),Trudy 发起远程设备替换攻击。由于缺陷 F1.3 和 F3 ,他让虚拟设备使用相同的设备ID成功登录云端。此时,设备 ID A 仍然绑定到 Alice 的帐户。与 Type I 平台一样,虚拟设备通过定期登录来保持与云的连接。通过这种方式,攻击者使用虚拟设备秘密地替代了 Alice 的真实设备。 攻击后果:隐私泄露,在正常操作中,当 Alice 使用她的移动应用程序向云端发送远程控制命令时,云端会转发该命令到设备。然而,在远程替换中,真实设备已被虚拟设备取代,由攻击者控制。结果,来自 Alice 的所有控制命令都暴露给了虚拟设备。例如以智能插头为例,Trudy可以知道 Alice 什么时候打开/关闭智能插头。该信息可用于推断爱丽丝是否在家。 攻击后果:伪造数据,在正常操作中,真实设备将其传感器读数更新到云端,结果反映在 Alice 的移动应用程序中。然而,在远程替换攻击中,传感器读数从虚拟设备发送。这给了 Trudy 一个操纵发送给 Alice 的传感器读数的机会,从而欺骗或误导Alice。例如,实验测试了一个小米烟雾报警器(model: Fire Alarm Detector)和一个Alink智能锁(model: KAADAS KDSLOCK001)。如果烟雾报警器检测到房间内浓烟,智能锁将自动解锁以打开窗门。实验使用远程设备替换攻击来操纵烟雾报警器的传感器读数并成功解锁了智能锁,这会导致严重的后果,因为Trudy可以随意进入Alice的房间。
作为一项基本的安全措施,物联网云应该只允许授权用户控制设备。如果攻击者可以解除绑定合法用户的目标设备,导致合法用户无法再操作设备,本质上导致设备拒绝服务 (DoS) 攻击。为了发动这种攻击,攻击者不需要利用很多缺陷,特别是对于 I 型平台,在攻击者发送设备端解除绑定命令后(step T.3),如图Figure 5,直接请求云撤销受害用户与用户之间的设备绑定关系。对于Type II平台,如图Figure 6所示,攻击者利用F1.2漏洞将攻击者账户绑定到受害者设备。
虽然一个设备可以与多个用户共享,但只有一个用户账号可以绑定一个智能家居设备。如果攻击者可以预测未出售的设备 ID设备并使用脚本将它们与有攻击者账户绑定,这些设备售出后无法再次绑定,我们称这种攻击为非法设备占用。本质上,这种攻击使合法消费者无法使用新设备。此攻击仅适用于 Type I 平台,因为攻击者可以预测设备身份信息。在 Type II 平台中,硬编码在设备中的ID是长且不易预测的,这类设备flash中一般会预留一个分区来存储硬编码的设备ID或证书密钥,比如类似于下图这个flash分区,设备出厂前在factory分区烧录了硬编码信息,设备ID或证书密钥,且每台设备都不一样,很难做到批量预测其他设备硬编码信息。