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

简介:

目前,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 号等都可以通过猜测、枚举的方式得到,从而批量控制大量设备,如下图所示。这个漏洞的危害在智能硬件里是最大的,因为它能够影响到全部的智能硬件。

身份认证措施不当

6. 密钥保护措施不当

有些IoT 产品在开发过程中考虑到了安全加密,比如使用AES128 位加密做为传输加密的内容,使用MD5 加密用户密码。在对于对称性加密方式的处理过程中,密钥的保存方式是至关重要的。在IoT 解决方案中,手机客户端发起的请求需要对数据内容进行加密,也就是说,手机客户端内需要有AES 的密钥。如果对于密钥存放的方式不当,可以轻而易举地将数据还原成明文进行逆向分析,从而进行进一步的攻击。在对大量的IoT 设备进行安全研究后发现,设备基本上都会把AES 的密钥存放在手机客户端中,有的做得很简单,写在了一个加密函数里。有的做得很深,放在了一个Lib 库中。但这些只是提高了一定的技术门槛而已,不是解决安全问题的办法,如下图所示。

密码保护措施不当

7. 会话处理不当

有很多智能设备都会由于会话管理措施不当,造成能够通过会话劫持攻击,直接控制设备,达到设备被破解的一种程度,所以说永远不要使用设备唯一标示符(如UDID、IP、MAC 地址、IEME)来标示一个会话。保证令牌在设备丢失/被盗取、会话被截获时可以被迅速重置。务必保护好认证令牌的机密性和完整性(例如,只使用SSL/TLS 来传输数据)。使用可信任的服务来生成会话。

8. 敏感数据泄露

对于智能设备的安全研究,可以通过智能设备所泄露出来的数据,进行进一步利用,从而获得控制权限。所以必须保证安全的东西都不放在移动设备上;最好将它们(如算法、专有/机密信息)存储在服务器端。如果安全信息必须存储在移动设备上,尽量将它们保存在进程内存中。如果一定要放在设备存储上,就要做好保护。不要硬编码或简单地存储密码、会话令牌等机密数据。在发布前,清理被编译进二进制数据中的敏感信息,因为编译后的可执行文件仍然可以被逆向破解物。

敏感数据泄露


作者:佚名

来源:51CTO

相关文章
|
资源调度
Vue3富文本编辑器wangEditor 5使用总结
Vue3富文本编辑器wangEditor 5使用总结
1999 0
|
消息中间件 存储 运维
Zabbix与ELK整合实现对安全日志数据的实时监控告警
Zabbix与ELK整合实现对安全日志数据的实时监控告警
Zabbix与ELK整合实现对安全日志数据的实时监控告警
|
9月前
|
数据采集 监控 前端开发
建议用API来获取电商的商品数据,但还是需要用爬虫
在电商数据获取中,“优先用 API、辅以爬虫”是务实策略。API 满足合规稳定的核心需求,而爬虫则在权限限制、数据不全、成本过高或跨平台整合时发挥关键补充作用。本文从 API 局限性、爬虫不可替代场景及协同方案三方面,详解如何高效结合两者,实现合规又全面的数据采集与应用。
|
自然语言处理 算法 数据可视化
《一文吃透!NLTK与SpaCy,自然语言处理的神兵利器》
在自然语言处理(NLP)领域,NLTK和SpaCy是Python中两大利器。NLTK功能全面、语料库丰富,适合学术研究与教学;SpaCy则以高效、准确和易用性著称,专为工业级应用设计。两者各有所长,可根据需求选择或结合使用,助力开发者实现强大的NLP功能。
689 9
|
供应链 安全 物联网
物联网(IoT)安全:风险与防护策略
【6月更文挑战第26天】物联网(IoT)安全风险包括数据泄露、设备劫持、DDoS攻击、超级漏洞和不安全设备。防护策略涉及强化设备安全设计、建立认证授权机制、加密数据传输、实施安全监控、加强供应链管理、提升用户安全意识及采用零信任模型。多层面合作以降低安全威胁,确保物联网稳定安全。
1638 2
|
Android开发
Eclipse 修改字符集
Eclipse 修改字符集
270 2
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
733 3
|
移动开发 小程序 数据可视化
DIY可视化导出源码整合uniapp环境搭建+调试+运行发布
DIY可视化导出源码整合uniapp环境搭建+调试+运行发布
842 0
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:序列建模与生成模型的博客教程
【7月更文挑战第2天】 使用Python实现深度学习模型:序列建模与生成模型的博客教程
352 1
|
测试技术
【sgAutocomplete】自定义组件:基于elementUI的el-autocomplete组件开发的自动补全下拉框组件(带输入建议的自动补全输入框)
【sgAutocomplete】自定义组件:基于elementUI的el-autocomplete组件开发的自动补全下拉框组件(带输入建议的自动补全输入框)