智能硬件设备八大安全问题分析

  目前,IoT 技术还处于起步阶段,与金融、电子商务等其他行业相比,安全性尚未得到充分理解和明确定义。开发一款IoT 产品时,不论是像可穿戴设备这样的小型产品,还是像油田传感器网络或全球配送作业这样的大型IoT部署,从一开始就必须考虑到安全问题。要了解安全的问题所在,就需要了解IoT 设备的攻击方法,通过研究攻击方法提高IoT产品的防御能力。

  作为国内最早从事智能硬件安全攻防研究的团队,基于长期的智能硬件安全攻防实践,360攻防实验室对智能硬件设备的安全隐患进行了系统的分析和梳理,总结了智能硬件设备存在的八大安全隐患。

  以下内容已经收录入即将出版的《智能硬件安全》一书,这将是国内第一本系统介绍物联网安全的专业书籍,该书的核心观点是通过“以攻促防、以防抑攻”的安全理念,全面提高IoT产品自身的安全防御能力。

  以下是智能硬件设备八大安全隐患分析:

  智能硬件主要安全问题比例

  1. 数据存储不安全

  毫无疑问,移动设备用户面临的最大风险是设备丢失或被盗。任何捡到或偷盗设备的人都能得到存储在设备上的信息。这很大程度上依赖设备上的应用为存储的数据提供何种保护。很多智能硬件手机客户端的开发者对于智能硬件的配置信息和控制信息都没有选择可靠的存储方式。可以通过调试接口直接读取到明文或者直接输出至logcat 中。用户身份认证凭证、会话令牌等,可以安全地存储在设备的信任域内,通过对移动设备的破解,即可达到劫持控制的目的。

  2. 服务端控制措施部署不当

  现有智能硬件的安全策略由于要降低对于服务端的性能损耗,很多情况下是把安全的过规则部署在客户端,没有对所有客户端输入数据的输入检查和标准化。使用正则表达式和其他机制来确保只有允许的数据能进入客户端应用程序。在设计时并没有实现让移动端和服务端支持的一套共同的安全需求,可以通过将数据参数直接提交至云端,客户端APK 对参数过滤的限制,达到破解设备功能的目的。

  3. 传输过程中没有加密

  在智能硬件的使用过程中,存在连接开放Wi-Fi 网络的情况,故应设计在此场景下的防护措施。我们列一个清单,确保所有清单内的应用数据在传输过程中得到保护(保护要确保机密性和完整性)。清单中应包括身份认证令牌、会话令牌和应用程序数据。确保传输和接收所有清单数据时使用SSL/TLS 加密(See CFNetwork Programming Guide)。确保你的应用程序只接受经过验证的SSL 证书(CA 链验证在测试环境是禁用的;确保你的应用程序在发布前已经删除这类测试代码)。通过动态测试来验证所有的清单数据在应用程序的操作中都得到充分保护。通过动态测试,确保伪造、自签名等方式生成的证书在任何情况下都不被应用程序接受,如下图所示。

  传输过程没有加密(图中右侧是明文数据编码后的格式)

  4. 手机客户端的注入

  手机客户端和Web 应用程序的输入验证和输出过滤应该遵循同样的规则。要标准化转换和积极验证所有的输入数据。即使对于本地SQLite/SQLcipher 的查询调用,也使用参数化查询。当使用URL scheme 时,要格外注意验证和接收输入,因为设备上的任何一个应用程序都可以调用URL scheme。当开发一个Web/移动端混合的应用时,保证本地/local 的权限是满足其运行要求的最低权限。还有就是控制所有UIWebView 的内容和页面,防止用户访问任意的、不可信的网络内容。

  5. 身份认证措施不当

  授权和身份认证大部分是由服务端进行控制的,服务端会存在用户安全校验简单、设备识别码规律可循、设备间授权不严等安全问题。目前可以在分析出设备身份认证标识规律的情况下,如MAC 地址、SN 号等都可以通过猜测、枚举的方式得到,从而批量控制大量设备,如下图所示。这个漏洞的危害在智能硬件里是最大的,因为它能够影响到全部的智能硬件。