Part 01 固件获取
智能家居安全风险主要来源于网络通信、服务平台和智能设备3个方面,如图1所示。网络通信为网络攻击提供了入口,网络攻击的主要目标是智能家居环境中的智能家居设备;服务平台可能存在数据泄露的风险;而作为数据采集和反馈执行的终端,智能家居设备的安全直接关乎整个智能家居系统的安全。
图1 智能家居安全风险
区别于其他信息设备,智能家居环境下的设备安全和家庭环境的物理安全息息相关,例如:存在安全漏洞的智能门锁不通过预设密码或指纹就能打开,智能摄像头被攻破可能带来家庭或工作隐私视频的泄露,智能手表被攻击可能带来行动轨迹的泄露等等,这些都将对使用者的生命财产安全造成威胁。
Part 02 设备固件安全分析
智能家居设备的核心功能主要依托设备固件实现,因此智能家居设备的安全分析焦点也集中在智能家居设备固件的安全分析上。
2.1 风险分析
导致设备固件安全隐患的原因有很多,比如:固件安全认知缺乏、源码复用、固件更新滞后等等。
①固件安全认知缺乏
由于智能家居设备上运行着各种功能的固件,很多人不知道当前哪些固件存在安全隐患。此外,大多数智能设备既没有键入密码的键盘,也没有在屏幕上显示随机“配对代码”,这使得用户放弃了使用强密码,而选择使用默认密码,从而使得黑客有机可乘。
②源码复用
为了节约开发成本、提高开发效率、缩短开发周期,部分智能家居设备在研发过程中会复用大量第三方开源框架和组件。若复用的源码中存在安全缺陷,其影响的覆盖面可想而知。
③固件更新滞后
固件更新过程可能很复杂且很耗时,又涉及多方参与者,因此很多厂商会推迟甚至取消固件的更新,导致攻击者可以利用低版本固件中存在的已知漏洞对设备进行攻击。
2.2 难点分析
智能家居漏洞数量和危害性日益增长,针对智能家居设备固件的分析变得尤为重要。
然而目前固件分析面临如下几方面的挑战:
固件获取难:大多数厂商为了保证设备安全与知识产权,不公开固件相关源码的下载,导致固件源码获取困难;另外,由于固件代码中混有多种代码类型,如Java、Python、C等,导致反编译工作执行十分困难。
- 固件格式差异大
固件格式复杂多样、缺乏统一标准,且运行在不同硬件上的处理器架构和内存架构也存在较大差异,导致不同固件的格式差异较大。
- 符号信息缺失
为了有效压缩程序体积、提高代码运行效率,开发者一般使用静态链接方式向设备写入固件。但静态链接抹去了函数名、变量名等库函数的符号信息,无法区分设备厂商自定义函数和标准库中的函数信息,增加了固件反编译的成本。
- 仿真困难
不同固件格式差异较大,很难构造合适的输入场景和测试用例,从而导致仿真困难。
Part 03 设备固件安全防护
保障设备固件安全的关键在于及时解决固件安全分析中的诸多难点,采用自动化的流程进行高质量的固件分析和检测,提前发现固件漏洞,才能有效地发现和防御攻击行为。
3.1 分析流程
目前设备固件漏洞分析流程包括固件获取、文件系统获取和漏洞挖掘等三部分,具体流程如图2所示。
图2 设备固件漏洞分析
3.2 安全防护
虽然无法消除所有风险,但做好安全防护至少可以降低设备固件中存在风险,从而降低智能家居设备的攻击面。安全防护具体方法有:
①建立完整资产清单
建立完整的智能家居设备清单,包括设备版本、型号、固件版本、序列号、运行服务、证书和凭据等信息。同时,定期更新也有利于发现问题,并在必要时对风险进行补救。
②管理设备密码
有大量已在运行的智能家居设备仍在使用初始密码,因此针对它们的攻击就很容易实施。建议智能家居设备在初次使用时,更换初始密码,并定期更新。
③固件加固更新
同软硬件设备一样,智能家居设备也应及时对固件版本和安全补丁进行更新。另外,需要确保它们保持这种加固状态。
Part 04 总结
在万物互联的今天,人们对智能家居安全的需求日益增加,但目前针对智能家居设备安全分析技术尚未形成完整体系。我们需要尽快走出盲区,提升固件安全的防御优先级,定期进行固件更新,启用可用的安全功能及策略,以增强智能家居设备固件的机密性、完整性、可用性,最终提升智能家居系统整体安全性。