万物互联时代,5G、大数据、人工智能等新技术为物联网(Internetof Things,IoT)带来了创新活力,物联网与个人及家庭生活、工业生产深度融合,为全社会带来深刻变革。我国“十三五”规划将物联网作为战略性新兴产业的重要组成内容,世界各主要国家也纷纷将物联网上升到国家战略高度。全球物联网正进入跨界融合、集成创新和规模化发展的新阶段。
物联网面临着错综复杂的安全风险。从管理角度看,物联网应用涉及国家重要行业、关键基础设施,产业合作链条长、数据采集范围广、业务场景多,各类应用场景的业务规模、责任主体、数据种类、信息传播形态存在差异,为物联网安全管理带来挑战。从技术角度看,物联网涉及通信网络、云计算、移动 APP、WEB 等技术,本身沿袭了传统互联网的安全风险,加之物联网终端规模巨大、部署环境复杂,传统安全问题的危害在物联网环境下会被急剧放大。
随着物联网与个人生活及各行各业的深度融合,物联网呈现出与传统网络不同的特性。首先,终端连接数量非常巨大,且终端形态多样,有各类摄像头、传感器等;在通信层面,终端的接入方式多样化,包括 2/3/4/5G、WiFi、蓝牙、Zigbee、LoRa、NB-IoT 等多种无线接入技术;此外,物联网的业务种类繁多,根据具体业务的不同,短信、数据、语音等不同功能进行组合以满足物联网业务需求。新特性带来新挑战,物联网面临复杂的安全风险与挑战。
大量传统行业,包括交通、电力、家居、物流和安防等,借助物联网技术达成产业升级。这些传统行业的 ICT 系统起步较晚,安全保障能力较难应对物联网安全风险挑战。具体来说,安全风险主要集中在平台侧(服务端)。物联网业务系统和平台使用的基础环境及组件包括虚拟机、云平台、数据库、各类中间件、web 应用等,由于软件本身设计或业务处理流程存在漏洞,存在认证失效、非授权访问、篡改数据、远程控制、服务中断等安全风险。
大部分IoT设备的计算资源较低,使得很多适用于通用计算设备的安全防护功能无法实现,抗攻击能力较差。其次,物联网终端物理位置分散,很多设备均处在户外,无人值守,难于统一管理,容易遭受物理攻击,导致设备非法移动、人为破坏、感知节点丢失甚至无法工作。此外,由于物联网终端数量大、部署分散,升级成本高,用户升级意愿低等因素,导致众多物联网终端长期“带病”运行,易被恶意控制。
物联网终端规模巨大,且以集群的方式存在,攻击者容易通过暴力破解、中间人攻击、利用已知漏洞等方式控制物联网终端,构建僵尸网络,发动 DDoS 拒绝服务攻击,导致网络拥塞、瘫痪、服务中断。由于终端数量庞大,这种攻击造成的危害被急剧放大。
随着物联网与各行业的深度融合,物联网业务种类多,业务场景和逻辑更加复杂多样,存在业务滥用、防护不足等安全风险。物联网重要业务与普通业务在平台、网络方面未实现分级安全防护,业务防护能力不足,易导致业务系统被攻击。此外,在消费者物联网等领域,物联网终端如智能家居设备、智能穿戴设备等贴近终端销售者和用户,易出现机卡分离,易发生物联网卡被滥用于发送垃圾短信、违规获利等,催生黑色产业链。
物联网业务涉及到的合作伙伴多,合作链条长,涉及到用户、设备制造商、网络运营商、服务提供者等多个利益方,一旦出现安全问题,安全责任界面难以划分。例如,若厂家生产的设备存在安全隐患,则直接影响网络及业务平台的安全,同时联网终端大部分属于广大用户,由用户管理,安全管理要求难以要求用户落实,一旦发生安全事件,存在终端用户、运营商、平台厂商责任不清的风险。
物联网采集了大量的个人及行业数据,基于大数据、云计算、AI等技术深挖数据的价值,为个人和行业提供了更高效便捷的服务。数据在物联网时代成为了一项重要的资产。然而,采集的数据不可避免地会包含敏感数据如个人隐私、生产数据、位置信息等,而敏感数据在收集、传输、存储、处理的各个阶段均有被泄露的安全风险。
毫无疑问,移动IoT设备用户面临的最大风险是设备丢失或被盗。任何检到或偷盗设备的人都能得到存储在设备上的信息。这很大程度上依赖于设备上的应用为存储的数据提供何种保护。很多智能硬件手机客户端的开发者对智能硬件的配置信息和控制信息都没有选择可靠的存储方式,可以通过调试接口直接读取到明文或者直接输出至logcat中。用户身份认证凭证、会话令牌等,可以安全地存储在设备的信任域内,通过对移动设备的破解,可达到劫持控制的目的。
由于要降低对服务端的性能损耗,现有大多数IoT设备的安全策略是把安全的过滤规则部署在客户端,没有对所有客户端输入数据的输入检查和标准化。使用正则表达式和其他机制可以确保只有允许的数据才能进入客户端应用程序。在设计时并没有实现让移动端和服务端支持一套共同的安全需求。可以通过将数据参数连接提交至云端或客户端APK对参数过滤的限制,达到破解设备功能的目的。
IoT设备存在连接开放Wi-Fi 网络的情况,故应设计在此场景下的防护措施,确保所有重要应用数据在传输过程中得到保护(保护要确保机密性和完整性)。重要数据应包括身份认证令牌、会话令牌和应用程序数据等。确保传输和接收所有重要数据时使用SSL/TLS加密。确保你的应用程序只接受经过验证的SSL证书。通过动态测试来验证所有的重要数据在应用程序的操作中都得到充分保护。通过动态测试确保伪造、自签名等方式生成的证书在任何情况下都不被应用程序接受。
手机客户端和Web应用程序的输入验证和输出过滤应该进循同样的规则。要标准化转换和积极验证所有的输入数据,即使对于本地SQLite/SQLcipher的査询调用,也使用参数化奋询。当使用URL scheme时,要格外注意验证和接收输入,因为设备上的任何一个应用程序都可以调用URL scheme。当开发一个Web/移动端混合的应用时,保证本地的权限是满足其运行要求的最低权限。另外,控制所有UlWebView的 内容和页面,防止用户访问任意的、不可信的网络内容。
授权和身份认证大部分是由服务端进行控制的,服务端会存在用户安全校验简单、设备识别码规律可循、设备间授权不严等安全问题。目前,可以在分析出设备身份认证标识规律的情况下(如MAC地址、SN号等),批量控制大最设备。
有些IoT设备在开发过程中考虑到了安全加密,比如使用AES128位加密作为传输加密的内容,使用MD5加密用户密码。在对于对称性加密方式的处理过程中,密钥的保持方式是至关重要的。在IoT解决方案中,手机客户端发起的请求需要对数据内容进行加密。也就是说,手机客户端内需要有AES的密钥。如果密钥存放的方式不当,可以轻易地将数据还原成明文进行逆向分析,从而进行进一步的攻击。
很多IoT设备都会因会话管理措施不当,受到攻击会话劫持,使设备被控制, 所以说永远不要使用设备唯一标识符(如UDID、IP地址、MAC地址、IEME)来标识一个会话。保证令牌在设备丢失/被盗取、会话被截获时可以被迅速重置。务必保护好认证令牌的机密性和完整性,另外,使用可信任的服务来生成会话。
对于IoT设备的安全研究,可以通过设备泄露出来的数据,进行进一步分析,从而获得控制权限。所以必须保证安全的东西都不放在移动设备上,最好将他们(如算法、专有/机密信息)存储在服务器端。如果安全信息必须存储在移动设备上,尽量将它们保持在进程内存中。如果一定要放在设备存储上,就要做好保护。不要硬编码或者简单地存储密码、会话令牌等机密数据。在发布钱,清理被编译进行二进制数据中的敏感信息,因为编译后的可执行文件仍然可以被逆向破解。
物联网时代以来,IoT安全在近几年也引起高度关注。作为IoT研发人员、信息安全从业者应该引起高度重视,结合IoT产业特点和技术栈推动IoT安全攻防体系的建设,保护数百亿设备的安全运行。
参考链接:
[1]:https://bbs.pediy.com/thread-255513.htm
[2]: 《智能硬件安全》