物联网的高速发展与普及催生了消费物联网产品及市场的发展与繁荣。消费物联网通常是指面向普通消费者(如个人或家庭)的物联网应用系统,包括智能家居、可穿戴设备、个人监护设备等。其中,智能家居在近几年得到了飞速的发展,包括小米、阿里巴巴、京东、华为、Google、Samsung、Amazon等在内的国内外互联网公司纷纷推出自己的智能家居产品与系统,为全球各地的用户及其家庭提供智能家居服务。
智能家居服务为物联网的使用带来了设备共享的场景:非管理员用户被临时授予对设备的访问权限并在一段时间后被取消设备访问权限。这样的场景在家庭房屋、房屋租赁等情形十分常见。另一方面,随着民宿服务的发展(如Airbnb、小猪、途家等),智能家居设备共享的场景更是越来越普遍。例如,为了方便租客随时入住(如深夜抵达的租客),民宿主人会安装智能门锁,通过对租客的临时授权,使得租客在其租赁期间能够正常操控门锁,而在租约结束后,撤销租客的权限,使其不再能够开锁进入房间。
在上述智能家居设备共享的场景中,如何正确的管理设备访问权限,杜绝对智能家居设备的非法访问是十分重要的问题。然而,我们的研究发现,目前主流的智能家居服务平台在设备共享场景下的权限管理存在漏洞,攻击者能够在其权限被撤销后获得对设备的非法访问。下面将详细介绍其中的3个漏洞。
漏洞1:设备ID泄露导致非法访问
Google Home是由Google推出的智能家居云服务平台。Google Home支持很多其他厂商设备的接入,如Samsung SmartThings设备、Philips Hue设备、LIFX设备等。第三方厂商设备接入Google Home平台的方式是OAuth授权,即,用户先在第三方设备厂商的云平台中注册自己的账号并绑定其设备,然后,再通过OAuth协议将其对第三方厂商设备的控制权授权给用户自己的Google Home账户。通过这样的授权,用户可以只用Google Home一个智能家居云平台就能管理其家中的全部设备,极大的便利了用户对来自不同厂商的各类智能家居设备的管理。
图1 设备ID泄露导致非法访问
如图1所示,智能家居系统的主人使用Google Home平台来管理其所有智能家居设备和其他用户。为此,主人使用Google Home和Samsung SmartThings之间的OAuth授权服务,把Samsung SmartThings下的设备(智能开关)控制权限委派到其Google Home账号下,并在Google Home系统中把该智能开关的权限临时授予其访客。当访客离开时,主人再在Google Home系统中撤销访客对智能开关的访问权限。
然而,当访客在具有对智能开关的(临时)访问权限期间,访客可以从Google Home系统中获取到智能开关的设备ID。进而,当主人在Google Home系统中撤销访客的权限后,访客可以直接使用这个设备ID与Samsung SmartThings平台进行交互,继续非法访问Samsung SmartThings的系统服务,最终使得其能够非法的打开主人的智能门锁。该漏洞的详细配置与攻击流程如视频1所示。
视频1 设备ID泄露导致非法访问
漏洞2:回调URL泄露导致非法访问
与Google Home类似,Samsung SmartThings云平台也支持第三方设备的接入,如IFTTT平台的设备、LIFX设备等。另一方面,Samsung SmartThings云平台支持多用户共享,如家庭的主人用户在Samsung SmartThings云平台中创建好Location(一组设备、设备自动管理程序等的集合)后,可以将该Location共享给其他用户,如家庭的其他成员、临时访客或租客等。而获得共享后的其他用户,将可以控制和管理该Location下的全部设备和设置管理程序(如SmartApp)。最后,IFTTT支持用户设置基于事件的自动化响应规则,如,收到门锁的状态改变后,发送短信通知用户,或者是,当某个开关的状态发生变化时,对其他设备发送相关的控制指令。
图2 回调URL泄露导致非法访问
如图2所示,智能家居系统的主人使用Samsung SmartThings平台来管理其智能家居设备和其他用户。为此,主人使用IFTTT和Samsung SmartThings之间的授权服务,把Samsung SmartThings下的智能开关设置为IFTTT平台下智能门锁的触发设备,即,当智能开关打开/关闭时,自动将智能门锁上锁/打开。另一方面,主人通过Samsung SmartThings的用户管理服务,将智能家居设备的访问权限临时授予某个访客。当访客离开时,主人再在Samsung SmartThings系统中撤销访客对设备的访问权限。
然而,当访客在具有对主人的Samsung SmartThings系统(临时)访问权限期间,访客可以利用API调用,获取到IFTTT和Samsung SmartThings之间的回调URL,通过给该URL发送HTTP Post请求,可以触发对IFTTT下的智能门锁的操作。由于该URL在主人撤销访客权限之后仍然有效,因此,该访客可以在其权限被撤销后仍然对主人的智能门锁进行非法控制。该漏洞的详细配置与攻击流程如视频2所示。
视频2 回调URL泄露导致非法访问
漏洞3:OAuth token泄露导致非法访问
LIFX是一个知名的智能灯泡生厂商,其支持通过OAuth协议将用户的LIFX设备授权给用户在其他云平台的账户,如Samsung SmartThings云平台、Google Home云平台、IFTTT云平台等。对于授权给其他云平台的设备,LIFX云平台会将OAuth token以及设备的ID发送给授权方。这样,任意一个获得正确的OAuth token和设备ID的实体,都可以使用LIFX官方的API对该设备发送控制指令。此外,为了便于用户对其LIFX设备的管理,LIFX还提供了设备信息查询API,任何拥有正确的OAuth token的实体,都可以使用该设备信息查询API获得设备的各种信息,如设备ID、设备分组等。
图3 OAuth token泄露导致非法访问
如图3所示,智能家居系统的主人使用Samsung SmartThings平台来管理其所有智能家居设备和其他用户。为此,主人使用Samsung SmartThings和LIFX平台之间的OAuth授权服务,把LIFX下的智能灯泡1(ID1)控制权限委派到其Samsung SmartThings账号下,并在Samsung SmartThings系统中把该智能灯泡的权限临时授予其访客。当访客离开时,主人再在Samsung SmartThings系统中撤销访客对智能灯泡的访问权限。
然而,当访客在具有对主人的Samsung SmartThings系统(临时)访问权限期间,访客可以从Samsung SmartThings系统中获取到LIFX与Samsung SmartThings之间的OAuth授权token。使用该OAuth token,访客可以直接向LIFX平台发送请求,获取主人的所有LIFX智能灯泡的ID并对其进行任意控制。由于该OAuth token在访客的权限被撤销后仍然有效,因此,访客可以在获得一次授权后,在任意时间和地点,对主人的LIFX设备进行远程(恶意)控制。该漏洞的详细配置与攻击流程如视频3所示。
视频3 OAuth token泄露导致非法访问(袁斌)
声明:本文来自穿过丛林,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。