APP下载

面向智能路由器远程管理应用的漏洞检测工具

2020-07-13李明琪杨哲慜

计算机应用与软件 2020年7期
关键词:安全漏洞路由器入口

李明琪 张 磊 杨哲慜

(复旦大学软件学院 上海 201203)

0 引 言

随着智能移动设备的普及,无线网络变得愈发重要,无线路由器作为无线网络的通信枢纽,正扮演着不可或缺的角色。与此同时,随着用户对无线路由器的功能提出新的需求,智能路由器也逐渐在用户群体中流行。2017年,无线路由器在中国市场共销售了6 625万台,其中智能路由器的销量达1 650万台,占路由器总销量的24.91%,较2016年增加了7.89%[1]。

智能路由器在传统路由器的基础上,增加了独立的操作系统。一方面,与传统路由器类似,用户可以利用该操作系统中自带的软件对路由器进行本地管理,实现限制指定网站的访问、控制带宽和限制上网时长等功能。另一方面,用户也可以在该操作系统中安装软件来实现自定义的功能。此外,为了更加方便用户能够实时实地的管理路由器,取消本地管理必须在路由器附近的物理限制,智能路由器还提供了可运行于移动设备的管理应用软件。通过该软件,用户既可以在移动设备直连路由器时对路由器进行本地管理,也可以在任何有网络的地方使用本地管理具有的功能,即对智能路由器进行远程管理。

但是,这种方便的远程管理模式却也因为自身存在的安全漏洞对用户的合法权益造成了新的威胁。2017年2月,NETGEAR的多款智能路由器被发现存在能窃取管理员密码的漏洞。攻击者通过利用该漏洞,可以在访问路由器的网页端远程管理页面时被重定向到特定的页面,而该页面包含了可以用于用户密码恢复的token。攻击者可以利用该token轻易获取到路由器的管理员密码。此外,2017年4月,数十款Linksys智能路由器被发现存在远程命令执行漏洞。攻击者可以利用该漏洞,以管理员权限执行命令并创建后门账号,从而完全控制受害者的路由器。而且攻击者创建的后门账号并不会在智能路由器的网页管理界面中显示,极具隐蔽性。

因此,面向智能路由的安全漏洞研究是一个亟待解决的重要安全问题。虽然已有相关工作可以对路由器进行漏洞挖掘,但是他们的检测方法主要是在路由器固件中查找路由协议和固件代码实现上的安全缺陷。而现代智能路由器所引入的远程管理模式却不能被前人的方法覆盖。而且这种新型模式下的安全问题与智能路由器的生态环境及远程管理功能的设计理念都息息相关。因此,本文通过分析主流路由器厂商中远程管理功能的设计与实现,从远程管理模式本身的漏洞特点出发,设计并实现了面向智能路由器远程管理应用软件的通用漏洞检测工具RMVD(Remote Management Vulnerability Detector)。

在设计并实现该检测工具时,本文先后解决了多个关键问题。首先,本文解决了应用软件中程序执行路径与管理指令发送之间的映射关系识别问题。在安卓应用软件中,因异步调用的大量使用,入口函数以及程序执行路径等都比常规应用软件多出很多,这直接导致在远程管理软件中存在大量与远程管理指令发送无关的执行路径,影响漏洞检测的效率。为了剔除无关路径的影响,RMVD先采用静态程序分析与动态程序分析相结合的技术定位管理指令的发送语句,再利用后向的程序切片技术,生成可达该发送语句的程序执行路径。为了确保能发现所有可发送的指令,在检测管理指令发送语句和后向生成路径时,RMVD会尝试发现所有可连接的函数入口。一般情况下,每一个入口函数都对应应用软件中可供用户使用的一个管理功能,即一个有效的管理指令。

其次,本文解决了同类管理功能入口函数的聚类问题。在确定了管理应用软件发送管理指令的入口函数及其对应的执行路径后,检测工具还需要对入口函数进行区分,以判断其触发的执行路径是进行了本地管理还是远程管理。由于纵然是相同的功能,其指令参数的格式也可以差异巨大,因此检测工具无法通过指令参数来区分同类管理功能在不同管理环境下的入口函数。但是本文发现,在应用软件中,相同管理功能对应的用户界面会复用或具有高度的相似性。因此,本文提出了一种基于用户界面相似度的方法对入口函数进行聚类,得到同类管理功能在进行本地管理和远程管理时所使用的入口函数组合,进而利用该组合进行权限校验分析,同时利用该组合对应的指令参数进行一致性分析。

最后,本文解决了应用软件中权限校验与远程管理执行路径的映射问题。在发现大量有效的程序执行路径后, RMVD下一个要解决的问题就是识别这些路径中存在的权限校验逻辑。一个直接的传统做法[2]是依赖专家经验预先定义一个权限校验的函数集合,再从这些路径中识别这些特殊的函数调用。但是,远程管理应用软件中存在大量的自定义接口,而在缺乏专家经验的情况下,并不能列出一个有效的函数集合。因此,本文提出了一种基于控制流图中执行路径差异的新型权限校验识别方法。在本地管理模式下,远程管理应用软件因认为自身处于可信环境而不需对管理指令进行权限校验,而在远程管理模式下则恰恰相反。因此,可以通过对比二者在控制流图执行路径上的差异,来检测远程管理执行路径是否进行了权限校验。

本文使用RMVD对当前流行的TP-Link、D-Link、华为路由器和NETGEAR智能路由器的管理应用软件进行了检测,并发现了多处安全漏洞。恶意攻击者可以利用这些安全漏洞,窃取路由器的本地管理用户名和密码或在未授权的情况下直接使用路由器的部分远程管理功能,进而利用路由器来窃取用户的隐私信息,侵犯用户的合法权益。RMVD在对管理应用软件进行检测时,最长耗时为463 s,最短耗时为337 s,这表明RMVD对管理应用软件的检测也能在相对合理的时间范围内完成。

1 智能路由器的远程管理

1.1 功能描述

用户可以下载智能路由器提供的管理应用软件,在移动设备上直接对智能路由器进行远程管理。如图1所示,在智能路由器的远程管理生态模型中,主要有运行管理应用软件的移动设备、远程服务器和智能路由器这三种角色。

图1 智能路由生态模型

用户在对智能路由器进行管理时,若运行管理应用软件的移动设备直连到了智能路由器,则管理应用软件可以采用本地管理的模式,直接对智能路由器进行管理。当运行管理应用软件的移动设备未与智能路由器进行直接连接时,管理应用软件则可以通过远程服务器对智能路由器进行管理。

智能路由器在提供远程管理的功能时,为了防止恶意攻击者进行攻击,部分智能路由器会限制远程管理的功能。例如对TP-Link智能路由器来说,用户在对其进行远程管理时,无法修改管理员的密码。但智能路由器的大部分功能,用户都可以通过远程管理功能来使用,其中也包含了会威胁智能路由器安全的多项功能。例如对TP-Link智能路由器来说,用户可以对TP-Link智能路由器进行远程操作的部分功能如表1所示。

表1 TP-Link智能路由器的部分远程管理功能

1.2 功能实现

如图2所示,在智能路由器的管理应用软件中,有负责与智能路由器进行通信的基础设施功能模块,利用该模块,管理应用软件的基础功能模块和插件功能模块便可以对智能路由器发送指令,进而控制智能路由器。

图2 远程管理流程

若管理应用软件具有本地管理的功能,则管理应用软件在启动时,会对管理环境进行检测,即检测同一网段中持有特定IP的设备是否为被管理的智能路由器。

A路由器为运行管理应用软件的移动设备所直接连接的路由器。管理应用软件在启动时,如果进行管理环境检测,则会向同一网段中的特定IP发送检测数据包。如果A路由器为管理应用软件所管理的路由器,则A路由器会持有该特定的IP地址,进而会接收到检测数据包,并会对检测数据包进行响应。此时管理应用软件便能识别A路由器,并对A路由器进行本地管理,后续对路由器进行控制的指令便会直接发送给A路由器。

如果持有该特定IP地址的设备未对检测数据包进行响应,则管理应用软件会对智能路由器进行远程管理,即对智能路由器的控制指令会通过A路由器发送给远程服务器,然后远程服务器再对被管理的路由器B进行控制。

若管理应用软件不具有本地管理的功能,则管理应用软件发送给智能路由器的指令都会先发送给远程服务器,再由远程服务器对被管理的智能路由器进行控制。

用户在使用应用软件对智能路由器进行管理时,既可以使用应用软件已提供的各种功能,也可以利用应用软件提供的插件功能来安装插件,进而对智能路由器的功能进行扩展。当前的管理应用软件在实现插件的功能时,通常都会启动一个HTTP server,然后将插件作为一个独立的网页应用软件运行于HTTP server中。用户可以使用运行于HTTP server中的插件,对智能路由器进行本地或远程控制。

1.3 安全性分析

在智能路由器的远程管理生态模型中,由于管理应用软件能对智能路由器的多项重要功能进行远程控制,且恶意应用软件可以运行于和管理应用软件相同的移动设备中,因此管理应用软件的安全对于整个智能路由器生态系统的安全至关重要。通过对智能路由器远程管理功能的设计与实现进行分析,我们发现其主要具有如下两个方面的安全漏洞:

(1) 未授权发送控制指令的安全漏洞。管理应用软件在管理功能被触发并发送指令时,会执行其控制流图中相应的路径。如果该管理路径未对管理功能触发者的权限进行校验,则恶意应用软件也能触发该管理功能,使得管理应用软件在用户不知情的情况下发送指令。例如,管理应用软件在启动HTTP server来运行插件网页应用软件时,若未对插件使用者的身份进行校验,则恶意应用软件也能访问HTTP server中的内容,并将恶意参数发送给HTTP server来使管理应用软件发送恶意的控制指令。

(2) 控制指令可重放的安全漏洞。管理应用软件在通过网络发送控制指令时,若控制指令参数中缺少保护字段,则恶意攻击者可以通过中间人攻击的方式,捕获控制指令参数并进行重放攻击。例如,若管理应用软件在获取已连接的设备时,未在指令中设置相应的保护字段,则恶意攻击者可以监测管理应用软件所发送的指令,并使用该指令进行重放攻击,来实时获取已连接到智能路由器的设备。

2 相关工作

当前的路由器安全漏洞检测方法主要对路由器的固件进行了检测。在对固件进行检测时,当前的检测方法从固件所采用的路由协议与固件的代码实现两方面进行了检测。

在对固件所采用的路由协议进行检测时,Smith等[3]通过分析BGP路由协议,确认了其中存在的安全漏洞,同时给出了减少漏洞危害的修改建议。Robbins[4]通过对OSPF路由协议以及链路状态通告伪造攻击进行研究,提出了基于OSPF和EIGRP协议的冗余网络系统架构,来抵御链路状态通告伪造攻击。Wang[5]通过对OSPF路由协议的认证机制、可靠的泛洪机制以及分层路由机制等进行分析,发现OSPF路由协议主要有空密码与简单密码认证漏洞、加密认证漏洞、老化时间漏洞和网络阻塞漏洞,进而设计了相应的保护方法并实现了漏洞攻击检测系统。

在对固件的代码实现进行检测时,Cui等[6]针对Cisco可应用于路由器的ASA软件设计了一个模糊测试的方法,该方法通过对ASA中的IKEv2协议进行模糊测试,发现了多个安全漏洞。Zhou等[7]采用模糊测试的方法来检测Cisco路由器iOS系统相关的安全漏洞。Zhang等[8]通过扩展Peach模糊测试工具,使其能检测IKE协议相关的安全漏洞。李佳莉等[9]则利用协议状态图来对RTSP协议进行模糊测试,以检测其中的安全漏洞。Costin等[10]采用动态分析和静态分析相结合的方法,对路由器等嵌入式设备固件中的网页界面进行了全自动化的分析,以检测其中存在的安全漏洞。Stephens等[11]结合模糊测试方法和选择性混合执行设计了一个二进制漏洞挖掘工具,该工具可以对路由器等嵌入式设备所使用的固件进行分析。

3 工具的基本架构

为了检测智能路由器在进行远程管理的过程中所存在的未授权发送控制指令以及控制指令可重放的安全漏洞,本文设计并实现了相应的检测工具,来对管理应用软件进行权限校验分析以及参数一致性分析。

图3展示了检测工具的整体架构图。检测工具在利用控制流图提取执行路径之前,通过解析应用软件的APK文件,识别了应用软件的入口函数并将该入口函数的起始语句作为执行路径的起点。在识别管理指令的发送语句并将该语句作为执行路径的终点时,由于应用软件可以采用多种方式发送网络请求,因此检测工具通过动态分析与静态分析相结合的方法来确定指令发送的语句以及相应的指令参数。同时检测工具还记录了触发指令发送的入口函数以及入口函数对应的界面布局属性信息。

图3 工具整体架构图

为了提取控制流图执行路径以及分析参数一致性,检测工具首先应该确认各执行路径的入口函数,并对远程管理路径和本地管理路径的入口函数进行配对。由于代码复用和模块化开发,远程管理和本地管理通常共享很多安全校验代码和用户界面布局代码,因此检测工具在获取了入口函数对应的界面布局属性信息后,对其进行了聚类,进而将同类管理功能在不同管理环境中对应的入口函数进行配对。根据配对结果,检测工具便能得到同类管理功能在不同管理环境下的入口函数及其触发的指令参数,从而可以进行控制流图执行路径的提取以及参数一致性分析。

在确定了指令发送的语句以及对应的入口函数后,检测工具从指令发送的语句开始,利用后向的程序切片技术,生成了从入口函数的起始语句可达的执行路径,并根据入口函数的聚类结果将执行路径分为了本地管理执行路径与远程管理执行路径。在得到了应用软件的控制流图执行路径后,检测工具便开始利用执行路径进行权限校验分析以检测未授权发送控制指令的安全漏洞。

检测工具在对执行路径进行权限校验分析时,会对本地管理的执行路径和远程管理的执行路径中的分支节点进行对比。由于管理应用软件在进行远程管理时,会因为面临更加复杂的网络环境而更加容易地被攻击者进行攻击,因此管理应用软件需要进行更多额外的判断操作,来检查远程管理的操作是否安全。这些额外的判断操作会造成远程管理执行路径中分支节点数量的增多,因此若在去除了相同的分支节点后,远程管理执行路径的分支节点数量少于本地管理执行路径的分支节点数量,则检测工具会认为远程管理的执行路径存在潜在的安全漏洞。得到存在潜在安全漏洞的执行路径后,检测工具会对执行路径进行触发,以验证安全漏洞的有效性。

该检测工具的参数一致性分析模块会检测管理应用软件在进行本地管理和远程管理时,是否使用了保护字段来避免重放攻击。根据先验知识,指定执行路径在发送指令时,所应具有的保护字段。若某条本地与远程管理执行路径具有的保护字段的数量不一致,则该模块会认为保护字段数量较少的执行路径存在可重放攻击的安全漏洞。若本地与远程管理路径均缺失了保护字段,则该模块会认为管理路径使用了指定字段以外的其他保护字段。在得到了具有安全漏洞的控制指令参数后,检测工具对控制指令进行重放,来验证安全漏洞的有效性。

4 工具的设计与实现

4.1 软件入口识别

在提取安卓应用软件的入口函数时,由于应用软件的执行既可以由用户触发,也可以由其他应用软件触发,因此检测工具将应用软件的入口函数分为了用户触发类的入口函数和无用户触发类的入口函数。

用户触发类的应用软件入口函数包括组件界面中控件绑定的事件函数,以及用户在操作组件时所触发的组件回调函数。无用户触发类的应用软件入口函数包括组件启动时即可触发的回调函数,以及HTTP server在处理连接时触发的回调函数。

在检测应用软件组件的回调函数时,检测工具使用了开源的AXMLPrinter2[12]工具,对安卓应用软件解压得到的AndroidManifest.xml二进制文件进行处理,得到了可读文本形式的AndroidManifest.xml文件。随后检测工具对该文件进行解析,得到了该文件中所声明的组件属性以及对应的实现类。检测工具进而根据Android官方网站[13]提供的组件回调函数的资料,确定了应用软件组件类中的回调函数。检测工具还根据组件的属性判断了组件是否能被其他的应用软件所启动。当组件能被其他应用软件启动时,其启动时所触发的回调函数会被划分为无用户触发类的入口函数,组件中的其他回调函数,以及其他应用软件无法启动的组件中所包含的回调函数,都会被划分为用户触发类的入口函数。

在检测组件界面中控件绑定的事件函数前,我们会先分析安卓操作系统的源码,确定安卓操作系统中所有控件的事件函数签名。检测工具随后使用soot[14]静态分析工具对应用软件进行解析,得到组件实现类中所包含的函数列表。检测工具会对函数列表进行遍历,并判断列表中的函数签名是否与控件的事件函数签名一致,若一致则认为该函数为控件绑定的事件函数。

在检测应用软件中的HTTP server回调函数前,我们会整理HTTP server常见的实现方式以及对应的回调函数签名。随后检测工具会利用soot静态分析工具对应用软件进行解析,来判断应用软件中是否有在使用HTTP server时所应具有的包名,进而判断应用软件是否使用了HTTP server。若应用软件使用了HTTP server,则检测工具会根据应用软件所使用的HTTP server的类型,来检测对应的回调函数。

4.2 管理指令发送语句识别

在确定控制流图中的指令发送语句时,安卓应用软件可以采用多种方式发送网络请求,因此为了快速确定相应的指令发送语句,检测工具采用了动态分析与静态分析相结合的方法。

在对应用软件进行动态分析时,检测工具会自动将应用软件安装于移动设备中并使其运行。检测工具随后利用运行于移动设备中的Xposed模块[15],来获取应用软件运行时的主界面实现类的对象,并根据已获取的入口函数列表,利用反射调用的方式触发主界面实现类对象中的入口函数。由于界面中的入口函数还会启动其他的应用软件界面,因此该Xposed模块可以模拟正常用户的操作来启动应用软件为用户提供的所有界面,并触发该界面实现类中所包含的所有入口函数。Xposed模块还对弹窗等需要用户确认的界面进行处理,使得Xposed模块也能模拟用户的授权操作。对于Xposed模块未启动的界面,检测工具会利用默认的参数将其启动,并触发其中的入口函数。Xposed模块在触发与应用软件界面相关的入口函数时,还会利用视图对象来获取入口函数对应的界面布局属性信息。

运行于移动设备中的Xposed模块在触发入口函数时,还会监测应用软件所发送的网络请求。在监测网络请求时,检测工具利用了运行于移动设备的抓包应用软件[16],通过hook抓包应用软件中的特定函数,实时获取被检测应用软件所发送的网络请求。由于管理应用软件可能会具有本地管理的功能,因此检测工具在触发入口函数并监测网络请求时,将移动设备直连被管理路由器网络与非直连被管理路由器网络的情况都进行了测试,并记录了相应的网络请求的内容。检测工具通过对网络请求的内容进行解析,最终获取到了在触发应用软件的入口函数时,应用软件所发送网络请求的地址以及相应的参数。

在获取到了入口函数对应的网络请求后,检测工具会将未能触发网络请求的入口函数进行排除。对于能触发网络请求的入口函数,利用全局控制流图,从该函数的起始语句开始,来判断控制流图中的语句是否对相应网络请求的参数进行了赋值,并使用了对应的网络请求地址。若某条路径对参数进行了赋值,并使用了对应的网络请求地址,则将这一系列操作的最后一条语句作为管理指令发送的语句。

4.3 入口函数聚类

在得到了管理指令的发送语句,以及发送语句与入口函数的对应关系后,检测工具还需要对入口函数进行聚类,以将同类管理功能在本地管理和远程管理环境下的入口函数进行配对,从而进行后续的分析。

为了识别管理应用软件的同类管理功能在本地管理与远程管理环境下对应的入口函数,检测工具根据同类管理功能通常具有相同或相似的界面布局的特点,利用在识别管理指令发送语句时Xposed模块获取的入口函数对应的界面布局属性信息,对界面布局的属性信息进行聚类[17],获取界面布局相同或相似的入口函数组合。这些入口函数组合即为同类管理功能在本地管理和远程管理环境下所对应的入口函数。同时这些入口函数组合所对应的控制指令参数即为同类管理功能在进行本地管理和远程管理时所使用的参数。

4.4 控制流图执行路径提取

在得到了管理指令的发送语句,以及确定了同类管理功能在不同管理环境下的入口函数组合后,检测工具将指令发送语句设置为控制流图执行路径的终点语句,将入口函数的起始语句作为执行路径的起点语句。检测工具进而从终点语句开始,利用后向的程序切片技术[18],提取了从入口函数可达的执行路径,并根据入口函数的组合结果将执行路径标记为本地管理执行路径或远程管理执行路径。

对于本地管理执行路径和远程管理执行路径,如果其起点语句和终点语句相同,则检测工具会根据Xposed模块在运行时捕获的运行路径信息,将提取的执行路径分为本地管理执行路径和远程管理执行路径。

4.5 权限校验分析

该模块在得到了控制流图的本地与远程管理执行路径后,会对无用户触发类的入口函数所对应的执行路径进行分析,以检测在对智能路由器发送控制指令前,应用软件是否对调用者的权限进行了校验。

该模块在检测执行路径是否缺失权限校验的算法如算法1所示。输入为控制流图的本地管理执行路径与远程管理执行路径。算法先遍历本地管理执行路径中的分支节点,并判断该节点是否也存在于远程管理的执行路径中,若存在则将该节点从本地管理与远程管理的执行路径中删除。最后比较本地管理执行路径和远程管理执行路径中的分支节点数量,若远程管理执行路径中的分支节点数量较少,则该路径中存在潜在的权限校验缺失的安全漏洞。

算法1check(localPath, remotePath)

输入:控制流图本地管理与远程管理的执行路径

输出:远程管理路径是否缺失权限校验

1 Function check(localPath, remotePath)

2 remoteCount<-remotePath.branchNodeNum

3 localCount<-localPath.branchNodeNum

4 if localCount=0 and remoteCount>0 then

5 return true

6 end if

7 for branchNode in localPath do

8 if branchNode in remotePath then

9 localPath.remove(branchNode)

10 remotePath.remove(branchNode)

11 end if

12 end for

13 remoteCount<-remotePath.branchNodeNum

14 localCount<-localPath.branchNodeNum

15 return remoteCount

16 end Function

在通过静态分析的方法获取到未进行权限校验的执行路径后,该模块还采用动态分析的方法,对路径对应的入口函数进行了触发。在触发时,该模块不会对应用软件触发的弹框等涉及用户授权的操作进行模拟。同时该模块会监测应用软件的网络请求,以验证仅通过触发该入口函数,能否导致路由器控制指令的发送。

4.6 参数一致性分析

在通过入口函数聚类得到了应用软件中同类管理功能在进行本地管理和远程管理所使用的控制指令参数后,该模块会对参数进行分析,以检测本地及远程管理执行路径是否使用了相同数量的保护字段。

在进行参数一致性分析之前,我们通过对智能路由器管理应用软件以及其他种类的应用软件进行分析,发现应用软件为了防止恶意攻击者进行重放攻击,都会在请求参数中设置保护字段,字段的值会定时进行改变。该模块通过对控制指令的非空值参数进行检测,得到了本地或远程管理执行路径所使用的保护字段的数量。如果某条执行路径所使用的保护字段数量少于另外一条执行路径,则认为该路径存在安全漏洞。参数一致性分析的算法如算法2所示。

算法2check(localPath, remotePath)

输入:控制流图本地管理和远程管理的执行路径

输出:具有安全漏洞的路径

1 Function check(localPath, remotePath)

2 targetParams<-readFromConfig

3 count<-0

4 for param in localPath do

5 if param in targetParams then

6 count<-count+1

7 end if

8 end for

9 for param in remotePath do

10 if param in targetParams then

11 count<-count-1

12 end if

13 end for

14 if count>0 then

15 return remotePath

16 else if count<0 then

17 return localPath

18 end if

19 return none

20 end Function

表2展示了应用软件进行本地管理以及远程管理的参数示例。应用软件在进行本地管理时,发送的指令中包含有token保护字段,并通过相关函数为token字段生成了值。而管理应用软件在进行远程管理时,却并未调用相应的函数为token生成值,这就使得该远程管理执行路径的参数会被恶意攻击者用来进行重放攻击。

表2 管理路径参数示例

在得到了保护字段缺失的控制指令参数以及相应的网络请求地址后,该模块还利用该参数进行了重放攻击,以验证安全漏洞的有效性。

5 实验与分析

5.1 测试对象与测试环境

选择当前市场上销售量靠前的多款智能路由器品牌,包括TP-Link智能路由器、华为智能路由器、D-Link智能路由器以及NETGEAR智能路由器作为检测对象。同一个品牌的智能路由器通常都使用同一个管理应用软件,因此我们无须考虑智能路由器的具体型号。从这些智能路由器品牌的官方网站下载了相应的管理应用软件,其版本信息如表3所示。

表3 应用软件版本信息

5.2 路径提取

检测工具在提取应用软件中的执行路径之前,需要先分析应用软件中用户触发类与无用户触发类的入口函数的数量。检测工具所检测的四款智能路由器管理应用软件的入口函数的数量如表4所示。

表4 入口函数数量

在获取了管理应用软件的入口函数后,检测工具使用soot静态分析工具获取了应用软件的全局控制流图,并进而采用动态分析与静态分析相结合的方法确定了控制流图中执行路径的终点。利用已确定的路径终点,为应用软件生成了控制流图的执行路径,还根据管理界面的聚类结果,将本地管理和远程管理的执行路径进行了对应。各智能路由器管理应用软件所生成的执行路径数量如表5所示,其中由于TP-Link智能路由器的管理应用软件不支持本地管理的功能,因此其与本地管理相关的执行路径数量均为0。

表5 执行路径数量统计

5.3 权限校验分析

检测工具对无用户触发类的入口函数所对应的控制流图执行路径进行了检测,以判断执行路径是否对路径触发者的权限进行了校验。得到了未进行权限校验的执行路径后,分析执行路径所触发的网络请求是否包含了敏感信息或进行了敏感操作。表6展示了对执行路径进行权限校验分析的结果。

表6 权限校验分析结果

在对无权限校验的执行路径所触发的网络请求进行分析时,我们发现华为、D-Link与NETGEAR智能路由器的管理应用软件在启动时,会通过向同网段中特定的IP地址发送检测数据包的方法来判断管理环境,此过程会泄露智能路由器进行本地管理的用户名和密码。我们还发现TP-Link智能路由器的管理应用软件会启动HTTP server来运行插件,并且未对插件使用者的权限进行校验。

5.4 参数一致性分析

检测工具还对控制流图的本地管理执行路径与远程管理执行路径所触发的网络请求进行了分析,以检测其使用的参数是否使用了相同数量的保护字段,主要检测了token与csrf保护字段。若应用软件控制流图的本地与远程管理执行路径均未使用指定的保护字段,则认为执行路径使用了其他的保护字段;若某条执行路径使用的保护字段数量少于另外一条,则认为该条路径存在安全漏洞。检测中发现华为路由器的管理应用软件在进行本地管理时,使用了csrf字段来防止重放攻击;而在进行远程管理时,管理应用软件并未设置该字段的值,使得攻击者可以对远程管理的功能进行重放攻击。

5.5 案例分析

我们在对检测工具检测出的结果进行深入分析时,发现被检测出的安全漏洞可以分为以下三类:

(1) 插件权限校验缺失的漏洞。TP-Link智能路由器的管理应用软件在实现插件功能时,会启动HTTP server并在其中运行插件网页软件。HTTP server在处理来自插件的请求时,并未对其身份进行校验,这使得恶意攻击者可以在未授权的情况下,直接使用插件网页软件所提供的功能,来对智能路由器的设置进行修改。利用TP-Link管理应用软件的插件,恶意攻击者可以限定管理员身份、控制无线设备的接入以及搭建虚拟服务器等。

(2) 环境检测时密码泄露的漏洞。华为、D-Link和NETGEAR智能路由器的管理应用软件在启动时,会给同网段中的特定IP地址发送检测数据包,以检测移动设备是否直连了被管理路由器的网络。若攻击者在未授权的情况下触发了管理应用软件的环境检测功能,并伪装成智能路由器对检测数据包进行了响应,则可以窃取管理应用软件所发送的路由器进行本地管理所使用的用户名和密码。

(3) 保护字段缺失的漏洞。华为智能路由器的管理应用软件在进行本地管理和远程管理时,所发送的参数具有不一致的保护字段。管理应用软件在进行本地管理时,具有csrf保护字段,并给该字段设置了随机值,而在进行远程管理时,应用软件并未给该字段设置随机值,导致攻击者可进行重放攻击。

6 结 语

智能路由器的远程管理应用软件在实现远程管理的功能时,会引入新的安全漏洞。本文通过对智能路由器远程管理功能进行分析,设计并实现了检测智能路由器远程管理应用软件安全漏洞的检测工具。该工具生成了应用软件的控制流图,并从图中提取出了本地管理路径与远程管理路径。检测工具通过分析管理路径中是否进行了权限校验,以及分析本地管理路径与远程管理路径所使用的参数的一致性,来检测智能路由器远程管理应用软件中所存在的安全漏洞。通过对TP-Link智能路由器、华为智能路由器、D-Link智能路由器以及NETGEAR智能路由器的远程管理应用软件进行分析,发现了多处安全漏洞。

猜你喜欢

安全漏洞路由器入口
买千兆路由器看接口参数
刍议计算机软件中的安全漏洞检测技术
路由器每天都要关
路由器每天都要关
智能设备安全漏洞知多少
秘密入口
第九道 灵化阁入口保卫战
计算机软件安全漏洞检测技术
找准入口,打开思路的闸门
路由器成为木马攻击目标