智慧城市让生活更美好!

基于IoT体系安全防护建设方案简析

  

 

  IoT安全态势浅析

  1、IoT发展及市场展望

  互联网的发展改变了人们获取信息的方式,也改变了人与人信息交互的过程和体验。从传统的纸质出版物发展为网络资讯、电子图书,从口口相传到即时通信,从逛商场到手机一点即时下单、送货到家,互联网已逐步改变了人们的生活方式。而物联网的发展将会更彻底打破物与物、人与物的交互模式,进一步加速万物互联新时代的发展进程。

  当前,以芯片技术(如:ARM/Intel/NXP)、通信技术(如:NB-IoT、LTE eMTC、LoRa)、大数据、AI等为基础的物联网应用已渗透到各个领域,例如智慧城市,智慧交通,智能制造,公共安全等。基于低功耗芯片的终端感知和控制系统早在工业领域已开始应用,目前更为广泛的应用不断延展,并逐步渗透到人们生活的方方面面。

  从物联网应用潜在规模看,仅仅是国内市场就有十几亿的人口基数,围绕着我们“衣食住行安”的每一方面都可以是一个庞大的产业体系。零部件制造商、设备提供商、软件开发商、系统集成商、系统运营商、安全厂商等产业链上下游相关角色都可以从中挖掘出商机,并参与到整体的建设中来。根据Gartner预测,到2020年物联网将连接全球40亿的用户、250亿以上的终端设备,在此过程将会有2500万的应用APP会被开发出来,沉淀出超过50万亿GB的数据,同时创造出4万亿美金的收入机会。在这个快速增长且体量庞大的体系中,不同于传统设备和应用场景的差异化安全需求凸显。

  传统模式下,我们主要通过服务器端架设Web服务等方式来实现功能和提供服务,大多数业务逻辑是放在服务器上,所以面临的威胁多是针对服务器的渗透攻击,如APT攻击。在物联网的环境下,随着数字资产的产生和业务场景的变化,大量智能终端将出现在人们身边,并实现物与人或物与物进行通信和互联。但是这些日益渗透到人们生活的众多终端在给人们提供便利的同时,若是受到恶意的利用和攻击将会带来更直接的安全威胁,造成信息泄露、经济受损甚至是人身安全,如智能汽车、智能家居产品的攻击。

  2、系统架构及主要特点

  一个完整的物联网系统架构完全融合了现有的信息和互联网技术,通过智能终端、云服务、面向用户的软件应用和Web服务等实现人与物或者物与物有效的交互。

  通常情况下,终端设备采集数据并将数据上传到服务器进行数据存储和业务处理,再以平台服务的方式提供给各种业务场景下的应用使用,包括桌面应用、Web应用以及移动应用等,最终给用户提供服务。同时在用户使用服务的过程中也会通过云端的接口实现终端设备互联,如视频监控、工业控制等。

  

  图1 物联网系统要素示意图

  物联网系统从范围看涉及领域多、覆盖面广;从应用看涉及人们工作、生活方方面面,与人们的人身财产安全紧密相关;从架构看涉及终端软硬件、应用软件、云平台等关键环节,安全保障需要各关键环节共同实现。

  安全风险分析

  1、特斯拉攻击事件复盘

  腾讯科恩实验室对特斯拉进行长期的分析和漏洞挖掘,并在Black Hat 2018大会上发布了相关演示和详细漏洞情况。整个过程大致分为4个步骤:

  (1) 通过Webkit获取以浏览器权限进行代码执行

  (2) 获取CID(CarInformaticDevice)系统权限

  (3) 挖掘CID-UPdater漏洞

  (4) 刷入后门固件控制网关

  

  图2 特斯拉攻击事件主要步骤复盘

  Webkit组件性能优秀且应用广泛,目前被最大的两大移动阵营Apple和Google同时使用,最近几年一直都是攻击者漏洞挖掘的重点目标,很多系统级的攻击都从Webkit入手,比如iOS、Android、Play Station系统的越狱,通过浏览器攻击的恶意木马攻击。

  对该安全事件进行复盘发现,腾讯科恩实验室团队第一个攻击目标就是基于Webkit的浏览器。首先是通过源代码审计和模糊测试的方式挖到实现内存任意读写的漏洞,并以此为基础实现任意代码执行的功能,从而获取以浏览器身份执行任意代码的权限。接着就是获取CID的系统级权限,也就是人们常说的越狱或者Root的过程。在这个过程中,通过对浏览器能够交互的驱动进行逆向分析,找到存在任意内存读写漏洞的内核,并通过漏洞利用获取Root权限。紧接着,团队对CID固件进行逆向分析,梳理出网关固件更新的业务逻辑和文件传输协议,在CID-UPdater中并找到绕过更新文件签名校验的方式,成功向网关刷入带后门的系统固件从而完成对车控的绝大部分的控制权限。

  整个攻击过程包含四个步骤和软件源码审计、固件逆向、业务漏洞挖掘三种技术手段,缺一不可。

  2、 终端与通信风险

  复盘特斯拉攻击事件发现,主要受攻击点基本都集中在终端上,这意味着终端隐患有可能成为整体安全性攻击的切入点和突破口。从攻击目的来看,主要有以获取终端系统ROOT权限来提高权限控制终端达到完全控制,和以获取密钥为主,通过获取的密钥进行数据解密实现数据盗取两种。从攻击方式来看,通过突破终端安全隐患形成攻击的方式主要有:

  (1)固件提取

  终端的软件部分以固件形式存在,通常是打包为资源和可执行程序的包,例如特斯拉固件boot.img,其中的配置和可执行程序是所有漏洞挖掘和软件攻击的基础,固件的泄露会极大的提供被破解的风险,让更多的人在不接触终端的情况下也能参与到破解过程中。

  (2)业务代码逆向破解

  在没有对代码进行保护的情况下,一旦固件暴露在攻击者的面前,业务代码被逆向分析是轻而易举的事情。现在很多反编译器工具都能把汇编指令翻译成C的伪代码,虽然不一定能直接执行,但业务逻辑还是很容易就能看明白。

  (3)协议接口利用

  CID、网关等都会通过相关协议接口互相进行通信,比如系统更新接口。当我们无法直接和目标设备接触,通过控制硬件直接提取和修改目标设备固件的具体逻辑的时候,可以通过逆向分析其他固件来发现目标设备对提供服务接口,详细分析服务参数,并利用这些服务进行非法调用。

  (4)密钥窃取

  在柯克霍夫原则下,密钥是能解密的关键。在网络终端都是服务器的时候,从网络抓包进行唯密文攻击几乎是不可能的,但是进入物联网的时代,物联网终端遍布我们的周围,如何保证密钥不被泄露是一个巨大的挑战。攻击者可以通过各种方式找到密钥,而公开的算法具有比较明显的特征,攻击者在函数调用和数据流向过程很容易就能拦截获取到密钥。

  3、云服务与漏洞风险

  云端数据中心作为物联网终端数据集中存储和业务应用实现的关键点,也成为攻击的重点,云上节点一旦突破,所造成的损失和影响规模将更加广泛,比如大型工业企业的数据泄露都是百万、千万级别。

  经分析研究,云服务端面临风险主要为两大类:

  (1)安全漏洞的威胁

  OWASP常年跟踪互联网漏洞的出现数量和影响情况,为开发者总结出最需要关注的漏洞类型,推出了OWASP TOP 10。例如2017年最值得开发者和安全人员关注的漏洞依次为:注入、失效的身份认证、敏感信息泄露、安全配置错误、使用保护已知漏洞组件、失效的访问控制、不足的日志记录和监控等等。但是风险如何防控仍是问题,且漏洞风险远不止这些。软件系统安全性与底层架构和开发质量密切相关,且为非标系统,不同开发者、不同开发模式都决定了安全保障能力的不同,其已知或者未知的缺陷将会导致攻击者有机可乘。

  (2)网络级别的拒绝服务

  在万物互联的网络环境中,众多恶意攻击者掌握着对大规模服务器进行拒绝服务攻击的能力,甚至不需要真正入侵核心系统,只让它停止工作就能让运营方遭受巨大的损失,这种古老的攻击手法当前仍然频频出现,俨然已经成为了具有恶性商业色彩的惯用手法。拒绝服务攻击相对简单粗暴,谁有足够的网络资源就能打赢这场战争。有意思的是,IoT的大量终端正在成为这种攻击的强大力量来源之一,比如赛门铁克安全响应团队发现的网络罪犯通过劫持家庭网络和消费互联设备实施分布式拒绝服务 (DDoS) 攻击。

  4、业务运营与信息风险

  在IoT应用过程中,最终用户会通过Web应用服务、移动APP、桌面程序等实现功能的调用,而目前网络黑产所做的事情包括虚假刷量、伪造激活、垃圾注册、脱裤撞库、抽奖套利、黄牛占座、刷单炒信、盗卡盗用、涉黄涉政、垃圾广告等,都是在运营的过程中可能遇见的风险,会造成不利资金成本损失、客户体验下降、品牌商誉受损、违反政府监管、商业信息泄露等不利影响。

  安全解决方案

  1、终端安全加固

  安全永远都是一个对抗攻防的过程,更安全的体系构建和关键点保护能从空间上和时间上延缓攻击、提高攻击者的成本,最终放弃攻击。如果从攻击者的角度来分析和应对,将更利于实行更安全的防护手段。

  根据分析研究,增强终端安全能力的主要方式可分为5种。

  

  图3 终端加固主要方式

  (1)安全测试

  通过安全人员进行业务逻辑梳理,发现安全疏漏,作为上线前的最后一道屏障为质量把关。

  (2)源码保护

  源码保护机制是将业务对抗转变为技术对抗,能从空间和时间上打击攻击者的耐心并且提高技术对抗的门槛,虽然不是从理论层面直接解决问题,但是这也是最简单有效的防止攻击的方法。例如通过源码混淆或更高级的虚拟化保护可有效提升攻击者漏洞挖掘和反编译的难度。但是若缺乏这种保护机制,一旦固件泄露,攻击者将会如源代码审计般轻松了解业务逻辑和协议接口。同时,由于IoT终端架构多,而传统的加壳技术和系统环境强相关,容易导致兼容性问题。基于编译器级别在源码编译器过程中进行代码加密,在依赖于成熟后端组件生成对应系统架构的软件,避免导致兼容性问题。

  (3)数据加密

  柯克霍夫原则下的密码体系中以公开密码算法、自行保存密钥为基础,在不可信环境下使用密钥进行加密、解密会导致密钥泄露。我们通过密钥白盒的方式能够模糊掉固定密钥输入位置来防止泄露的问题。

  (4)通讯保护

  通过数字签名技术对通讯数据进行校验,防止数据在传输过程中被非法篡改。

  (5)使用安全第三方组件

  对自己涉及到的第三方组件资产进行管理,时刻关注相关漏洞信息,并及时进行更新修复。

  2、云端安全保障

  云端安全主要由安全管理和安全加固两方面来进行保障。

  (1)安全管理

  安全管理的内容主要包括以下几点:

  A、安全规范

  和开发团队和运维人员一起制定适合自己团队的安全开发和运维管理规范,例如SDL安全开发管理流程,把安全的理念灌输到整个项目过程中。

  B、资产清点

  只有知己知彼才能百战不殆,由于系统越来越复杂,各种服务、数据、第三方组件充斥其中,了解自己涉及哪些业务资产,是对系统了解的必须步骤。只有在了解自己的情况下,才不会因为突如其来的安全问题而摸不着头脑。

  C、代码审计

  只依靠开发人员个人能力去进行安全设置会存在代码缺陷不可预知、不可控等问题。通过把代码审计作为项目中的一个标准流程,利用专业的代码审计工具,比如Fortify,能够快速的发现大量且常规的安全问题,并且不会花费大量的人力成本。

  D、漏洞扫描

  漏洞扫描的过程主要是由自动化工具来完成,通常是系统已经能正式部署的情况下,安全专家只用对扫描结果进行审核评估,在快速发现问题的同时也为渗透测试提供参考点。

  E、渗透测试

  目前渗透测试已经衍生出了几种不同的形式,比如大型企业除了组建安全团队以外,还成立专门的SRC安全应急响应中心,除了日常应急响应外也承担着渗透测试的工作。另一种是第三方公司提供专业的渗透测试团队以项目的形式进行安全服务。目前也有比较新型的方式,比如众测外包的形式,通过平台面向全体白帽子发布测试任务,按效果付费,平台通过对接厂商和白帽子进行抽成。这种方式面向的测试人员非常广泛,克服了渗透测试人员个人的局限性。

  (2)安全加固

  安全加固主要通过搭建硬件网络防火墙配合DNS分流和恶意流量清洗服务。在终端部署WAF应用防火墙产品来进行应用服务加固主要包括SQL注入、暴力破解、漏洞扫描等。

  3、业务运营安全防控

  业务运营的过程中看似有很多眼花缭乱的风险点,但是通常是采用批量机器行为实现业务欺诈方式,所以解决方案可主要从三个方面展开:

  (1)设备风险防范

  设备指纹和设备风险识别是通过设备的异常行为来识别业务风险的主要方式,相关技术包括设备唯一ID、设备异常标签、系统插件和作弊框架识别、越狱环境识别、应用破解监测。

  一个基于高强度代码防护的设备指纹算法,在攻击者不停的篡改系统参数的情况下也能识别出该设备为风险设备。由于设备的购买成本高,所以这部分防护能极大的提高攻击者的成本,导致其最终放弃攻击。

  (2)账号风险防范

  物联网应用中用户权限设置是通过账号管理进行。一般来说,若同一用户账号在一个平台上面有过恶意行为,那么很有可能会用在多个平台上面进行业务欺诈。我们可以通过获取相关账号风险数据进行匹配,对有风险的用户账号重点关注,对多个平台出现恶意行为的账号采取直接禁止注册等措施。

  (3)机器行为防范

  业务欺诈方式一般为积少成多、批量套利,可通过程序来实现安全防控和降本增效,比如账号注册、账号登录、批量评论。通过图灵测试或者结合环境识别、行为识别一体化的智能验证码功能来阻挡机器的自动化行为。

  安全设计用例解析

  1、基于Android 中控安全

  Android具有开源和应用开发、运营体系完整的特征,随着其在移动终端的普及,越来越多汽车厂商将它作为汽车中控的优先选择。Android系统的应用主要分为系统级应用和普通应用。中控系统级应用除了Android系统本身已有的管理类应用外,主要添加了关于车控相关的应用实现和TBOX或者车机网关的通信,以及从车机获取信息,同时也能通过开放的控制协议来控制汽车的一些动作,比如开关车门、天窗、空调等。第三方应用则类似于移动设备中的应用,如微信、音乐、购物、游戏等。

  系统的安全关乎人车的安全,所以相对移动设备来说,网联智能汽车的权限控制和终端防护要求都将比移动互联网高得多。通过基于Android 中控的安全布控,可将安全防控集成到车上,并增加车控相关的应用。

  

  图4 网联智能汽车终端加固主要方式

  2、Android中控数据安全

  从数据层面来看中控系统的安全风险主要有系统日志泄露风险、系统密钥泄露风险、原车信息泄露风险和配置数据泄露风险:

  (1)系统日志泄露风险

  可通过扩展系统模块对日志系统改造,分为Release版本和Debug版,Release版本不包括系统日志输出。通过对应用进行权限管控,限制读取相关日志信息,包括车控日志、供应商日志、系统应用日志等;

  (2)系统密钥泄露风险

  可通过系统级权限设置实现需获得授权的应用才能访问对应的秘钥文件,同时也可以使用白盒密钥SDK实现数据加解密过程;

  (3)原车信息泄露风险

  对车控APP获取的原车信息进行数据加密,可利用白盒密钥SDK以及通讯数据加密SDK进行加密存储;对车控数据相关API接口代码进行KiwiVM虚拟化保护,隐藏数据获取与处理逻辑。

  (4)配置数据泄露风险

  通过业务梳理整理出需保密配置的数据,并对这些数据进行加密存储和读写权限控制,数据处理过程使用KiwiVM虚拟化进行隐藏。

  3、Android中控软件安全

  从软件安全角度来看,中控系统可从几个方面进行安全加固:

  (1)车控应用防提取

  控制系统车控应用原始文件访问权限控制,保证核心自研APP不被外漏,防止被攻击者进行动静态分析和漏洞挖掘。

  (2)SO业务逻辑代码保护

  SO通过KiwiVM虚拟化保护,主要隐藏代码的真实逻辑和其中处理的相关数据。

  (3)Java层协议接口代码保护

  解析安卓应用中的class.dex文件,提取IR指令并转换成二进制目标文件,最后生成SO。在这个过程中进行混淆等安全编译处理从而提高Java层核心代码的安全性。

  (4)车控应用进程动态防护

  通过从调试监测、防内存修改、关键文件监控等方式对应用进程进行动态攻击防护,相关实现模块基于KiwiVM虚拟化保护。

  总结与展望

  “万物互联,安全先行”,构建安全可靠的IoT体系是一个系统化工作,需要多环节布防和多方联合。在这个新的IoT产业链中,结合特有的业务场景和技术架构特征分析由其而衍生的安全新需求,打通产学研用、共同构建IoT新生态环境任重而道远,我们共同前行。

  

上一篇:第二届小米IoT安全峰会来啦!时间、地点、日程介绍!

下一篇:物联网安全应用实践

延伸阅读