物联网设备软件安全综述

2019-10-11 00:57
关键词:蜜罐固件漏洞

(浙江大学 网络空间安全学院, 浙江 杭州 310027)

随着物联网设备的普及,针对物联网设备的攻击也层出不穷.诸如网络摄像头、智能家居等物联网设备由于厂商对安全性的重视不够导致安全漏洞不断涌现,设备持续在线的特性又使得漏洞被攻击利用的概率大大提高.这严重威胁了用户的安全和隐私,甚至威胁整个互联网的安全性.例如,一些网络摄像头使用默认的用户名和密码[1](如 admin/admin)或者有隐藏的后门[2],攻击者可以远程控制设备窥视用户隐私.由物联网设备组成的 Mirai 僵尸网络对域名解析服务商 Dyn 发动拒绝服务(DDoS)攻击,导致美国和欧洲很多知名网站如 Netflix、 GitHub 等停止工作,造成了极大的影响[3].

本文从物联网设备软件安全的感知、分析和防御角度出发,梳理已有的研究工作,并且对这一领域一些新的研究方向和趋势进行初步展望.本文主要关注设备的软件安全方面,对于设备的通信安全、硬件安全等方面则不做探讨.

1 物联网设备安全问题感知

1.1 物联网蜜罐系统

蜜罐系统作为感知威胁的传统手段之一,用其感知和捕获攻击有着广泛的应用.近年来出现了一些针对物联网设备的蜜罐系统.然而由于物联网设备的特点(硬件和软件的碎片化),将蜜罐系统使用在物联网设备中遇到了不小的挑战.

IoTPOT[4]是用来捕获对物联网设备Telnet程序进行攻击的蜜罐.由于设备中的Telnet服务器会采用弱密码,攻击者可以通过预置的密码字典来登陆服务器.IoTPOT通过模拟不同设备对于Telnet请求的响应同攻击者进行交互.在交互的过程中记录下攻击者的来源、发起的命令等信息.作者将该蜜罐部署在165个IP地址中,并且模拟了29个不同设备的响应.在一个月的数据收集中,总共捕获到将近5万次的成功攻击.对攻击的进一步分析发现,现实攻击者在成功登录设备后,往往会下载载荷(payload)以发起进一步的攻击.IoTPOT虽然成功捕获到一些攻击,但是其缺点在于交互性交叉,而且只能捕获单一攻击行为.

SIPHON采用真实的物联网设备来组成蜜罐系统[5].通过分布在各地的虚拟机接入点(称为 Wormholes)来接收外来请求并将请求分发到后端真实设备,然后通过分析流量来检测攻击.最近的一个系统HoneyCloud通过真实的硬件平台和软件模拟器混合的方式来构建蜜罐系统[6].通过近两年的持续监测,该系统捕获了八种不同的攻击行为,比如窃取数据(设备的登录密钥)、发起DDoS攻击等.采用硬件平台的蜜罐系统虽然交互性较好,但是构建成本高(需要购买不同的真实设备),并且很难对攻击的过程进行插桩(对真实设备上的软件进行插桩难度较大).而基于软件系统的蜜罐(如HoneyCloud中的软件蜜罐)虽然部署容易,但是交互程度差,对目标系统的模拟完整度不高,容易被攻击者识别.

为了解决这些问题,提高蜜罐系统的交互性,IoTCandyJar采用了机器学习的方法自动学习物联网设备的行为[7].具体来说,IoTCandyJar 通过对互联网上公共的物联网设备的行为进行学习记录来不断完善行为数据库.当接收到新的网络请求后,IoTCandyJar 首先判断该请求是否已经学习过.如果是,则返回之前保存的行为.否则,向互联网上其他设备发送相同的请求以获得真实设备的响应数据.图1是该系统结构图.该方法能以较低成本获得物联网设备的真实交互行为,因此蜜罐系统交互性高.不过该方法只能获得真实设备中较低层次的响应信息(如 HTTP 响应中的头信息),不适用于需要多次交互的攻击场景.同样由于没有插桩机制,无法对攻击的整个过程进行实时监测和记录.

图1 IotCandyJar系统结构图Fig.1 The system architecture of IoTCandyJar

虽然可以通过蜜罐系统来感知针对物联网设备的威胁,但由于设备的硬件碎片化(采用不同的CPU架构)以及软件的碎片化(基于多种操作系统平台),导致目前没有一个较好的软件模拟平台,因此,蜜罐系统的可扩展性和交互性都还比较差.如何设计开发一个交互性好、仿真度高的蜜罐系统仍然是一个具有挑战的问题.

1.2 物联网设备僵尸网络行为分析

除了主动通过蜜罐系统捕获攻击意外,研究人员也对目前由物联网设备组成的僵尸网络进行了测量和行为分析.比较典型的工作是对于Mirai[3]和Hajime[8]的分析.Mirai是第一个引起公众注意的物联网僵尸网络.它第一次出现在2016年年中,在长达半年的过程中,衍生出很多的变种.该网络高峰期感染了将近60万台设备.图2显示了Mirai僵尸网络感染主机数量随着时间迁移图.通过对DNS服务器发起DDoS攻击,导致了很多知名网站的瘫痪.研究显示物联网设备的安全状态不容乐观,一个基于字典的简单攻击就可以感染成千上万台物联网设备.Hajime是一个新的僵尸网络,虽然其目标很多与Mirai相同,但在设计和操作上有很大差异.Hajime使用公共点对点网络作为其命令和控制(C&C)的基础设施,并定期引入新的攻击,从而提高其可恢复性.

图2 Mirai僵尸网络感染主机数量示意图[3]Fig.2 The number of infected hosts by Mirai[3]

图2的不同深浅线条表示通过不同的端口进行扫描和感染的主机数量.从图2可见,该网络使用了不同的协议和端口来实施感染行为.

Cetin等[9]研究了如何清除Mirai僵尸网络中受感染的机器.研究表明,ISP在僵尸网络节点清理方面扮演着至关重要的角色,ISP可以通过建立隔离网络的方式来清除僵尸网络;其次,对感染用户进行主动通知是可行的,尽管目前基于用户通知和清理建议的可用性比较低.不过笔者也发现,ISP目前并没有太高的积极性对僵尸网络进行主动的清理.如何从经济和法律的层面来促使ISP担负起相关的责任需要进一步的探讨.

2 物联网设备安全分析

针对物联网设备碎片化的特点,研究人员通过静态大规模分析寻找设备安全性问题,开发动态分析平台分析设备固件安全,以及使用模糊测试进行漏洞挖掘.

Costin等[10]在 2014 年发布了第一个大规模物联网固件安全性的研究报告,该研究收集了超过3万个物联网设备的固件,然后使用工具对固件进行分析.他们的研究发现了多个之前没有被报道的零日漏洞,如私钥没有被正确保护等.他们的后续工作则从固件的 Web 服务器入手,分析其中潜在的安全威胁[11].Firmalice利用二进制分析的方法,寻找固件中一类特殊的安全漏洞[12]:厂商预留的后门.这里的后门不一定是具有恶意的,也可能是厂商为了调试方便而预置在固件中.不过攻击者仍然可以利用这样的后门来获得设备的控制权.Firmalice使用符号执行等技术自动检测固件中隐藏的后门并能获取登录的密钥.不过由于该系统是一个静态分析系统,不能对发现的安全问题进行自动化的测试和确认.

静态分析虽然能快速发现问题,然而静态分析的误报率比较高,并且很难对设备的安全问题做动态行为监控和确认.为了解决这个局限性,研究人员开发了不同的动态分析系统.Firmadyne是第一个能大规模地动态分析设备固件的系统[13].它通过使用软件模拟器(QEMU)对物联网设备的动态进行仿真和分析.其利用修改过的Linux内核启动固件的用户态程序,并且自动化生成设备网络配置.针对超过2万个固件的实验表面,FIRMADYNE能对已知的攻击行为进行分析并且能发现未知的漏洞.Avatar[14]和Avatar2[15]通过混合使用硬件真实执行和软件模拟执行来分析设备固件.它可以选择性地在真实设备和虚拟机平台之间进行切换,并且结合S2E进行符号执行和浮点分析来分析固件行为.虽然系统的分析完整度较高,但是其依赖JTAG硬件调试端口导致很难大规模使用该分析平台.

近年来的研究表明,模糊测试在发现漏洞方面具有非常好的效果.因此,研究人员也尝试将模糊测试引入到物联网设备安全中.IoTFuzzer在无法访问固件的情况下,可以自动化发现物联网设备中的内存破坏(memory corruption)漏洞[16].他们分析物联网设备通常是可以通过官方的应用来进行控制的.因此,可以通过分析应用和设备之间的交互协议,识别和重用特定的程序的逻辑(如加密)来改变测试用例(特别是消息字段),自动生成通信数据.然后观察设备的返回值,从而检测设备固件的软件漏洞.该方法的缺点在于只能作用于有官方控制应用的物联网设备,适用度不高.Muench等[17]对物联网设备和内存错误漏洞的影响进行分类.研究在不同种类的设备中所存在的内存错误漏洞后,评估了应对这些漏洞的方法,然后提出了一个基于Avatar和Panda的模糊测试系统.该系统使用了6种不同的现存部分仿真或全部仿真的启发式分析方法.通过对这个系统一系列的实验,得出结论,这6种分析方法可以有效提高对嵌入式设备的模糊测试效率.该系统能分析的设备固件种类受限,并且分析的速度也有待提高.Firm-AFL将用在桌面系统上的AFL移植到物联网设备中[18],通过将进程级别分析平台同全系统分析平台Firmadyne结合,使用不同的模糊测试用例策略来自动化发现系统固件中的安全问题.采用进程级别的分析可以大幅度提高系统的分析效率.实验结果表明,该平台能重现旧的安全威胁和发现新的漏洞.

另外,最近的一些研究尝试通过代码相似度的方法来进行固件安全性分析.该方面的基本思想是如何快速准确地通过已经有的漏洞模式,快速判断一个新的固件中是否也存在类似的漏洞.这里的挑战在于往往要分析的固件没有源代码,并且代码的架构、编译器工具、编译选项等都有不同.这给相似度分析带来了比较大的挑战.Pewny等[19]提出了基于输入和输出的赋值表达式的方法来表达一个程序中基本块的语义,然后通过I/O的行为来寻找和漏洞代码具有相似模式的代码路径.另外,David等[20]发现,在通过相似度进行漏洞匹配的时候,基于函数级别的相似度往往不能准确进行匹配,还需要配合函数周围的信息,其提出的FirmUp系统能对不同体系架构中的固件中的漏洞进行快速准确的匹配.另外,研究人员还尝试基于神经网络对跨体系架构的固件进行代码相似度分析[21].

3 物联网设备软件安全性的增强

对于设备软件安全性增强的工作主要集中在提供新的安全原语,基于编译器对于软件进行安全加固,实现新的轻量级的保护方案等.

Dominance是一个新的物联网系统的可信计算原语[22],它可以保证在短时间内对被攻击的物联网设备进行恢复,即使攻击者已经控制了这些设备.并且它可以对设备进行强制的安全固件升级.C-FLAT通过在设备上使用控制流完整性来进行安全性保证[23].具体来说,该系统首先计算合法的控制流图,然后通过在运行时计算控制流信息,并且采用远程认证的方式将控制流信息发送到认证服务器进行验证.一旦有非法的控制流跳转发生,认证服务器能感知到威胁并采取行动.C-FLAT的缺点在于其计算控制流跳转哈希值的开销过大,并且也不能保证数据流完整性.EPOXY通过权限覆盖(Privilege Overlaying)的方式对代码进行权限分割[24].也就是说只有需要执行特权操作的代码才需要运行在特权态,其他的代码只需要运行在普通的特权等级即可.系统通过编译器对软件代码进行自动分析并且自动对代码进行特权分割.图3显示了一个典型的系统的内存映射.EPOXY通过对代码的特权分割,规定哪一些代码可以访问哪一些具体的内存地址.Abbasi等[25]分析了现有的嵌入式操作系统中采用的安全措施,然后提出了μArmor系统.它基于编译器将现有的软件安全措施应用到操作系统中,对软件代码进行加固.

图3 一个典型的基于ARM Cortex-M芯片的系统内存映射图

Fig.3 A typical memory mapping for systems based on the ARM Cortex-M architecture

4 物联网设备软件安全研究展望

针对设备软件安全研究越来越受到重视,从近年来的安全会议上可见收录的相关文章逐渐增多.本文对一些新的研究方向提出初步的展望.

(1)新的威胁感知方法.虽然通过蜜罐系统可以感知到针对物联网设备的攻击,但是目前的蜜罐系统交互性和仿真性还比较差.如何设计出一个比较好的物联网设备蜜罐系统是需要研究的问题.另外,还可以通过对网络中多维的数据信息进行融合分析来感知威胁,如融合DNS数据、ISP网络流量数据以及设备固件中提取访问模式,从而能感知可疑和未知的威胁.

(2)新的静态分析工具和方法.目前的静态分析方法在扩展性和准确度方面还有比较大的提升空间.特别是目前的物联网设备软件多基于ARM和MIPS架构,而目前的静态分析工具对于这两类架构支持程度不高.初期研究表明现有的反编译工具在分析ARM代码方面准确度比较低,对于代码/数据,函数边界识别还需要很大提升空间.因此,如何提出新的静态分析的工具和方法也是将来可以进行研究的方向之一.

(3)新的动态分析平台.FIRMADYNE作为为数不多的动态分析平台[13],对固件分析成功率比较低.实验结果表明,FIRMADYNE只能成功运行约30%的基于Linux操作系统的物联网设备固件.因此,如何能提高运行的成功率,自动化寻找失败的原因并且进行修复是值得探索的方向.同时,对于非Linux软件平台如何去进行动态分析,也是目前还没有解决的难题.

猜你喜欢
蜜罐固件漏洞
漏洞
蜜罐蚁
被自己撑死的蜜罐蚁
基于博弈的蜜罐和入侵检测系统最优配置策略
基于SHA1的SCADA系统PLC固件完整性验证方法
哈密瓜:乡间蜜罐
三明:“两票制”堵住加价漏洞
基于UEFI固件的攻击验证技术研究*
漏洞在哪儿
基于固件的远程身份认证