UPnP 技术简介

屈畅
2023-12-01

面向物联网设备的 UPnP 协议栈威 胁分析

引言

2014 年绿盟科技在全球已发现 700 多万 UPnP(Universal Plug and Play)SSDP 设备可能被利用进 行 DDoS 攻击 [41] ,根据国家互联网应急中心 CNCERT抽样监测数据,2018 年 3 月,利用 SSDP1 反射 发起 DDoS 攻击的境内反射服务器约有 190 万台 [38] 。2018 年 11 月,Akamai 的研究报告 [9] 中提到有 超过 4.5 万的路由器被攻击者用来将局域网中的服务暴露在互联网上,而攻击者利用的就是路由器上的

UPnP SOAP 服务开放端口映射的能力,进行下一步攻击。尽管统计口径和方法有所不同,但足以看出 UPnP 服务暴露面之大、风险之高。《IP 团伙行为分析报告》[12] 通过分析绿盟科技自 2017 年以来搜集

的 DDoS 攻击数据,得到了不同攻击规模下 IP 团伙的攻击类型分布,在攻击总流量区间为 70T-200T 和 200T-400T 的 DDoS 攻击中,SSDP 反射攻击类型占比都达到 40%。

此外,腾讯云鼎实验室发布了 2018 年游戏行业遭受 DDoS 攻击类型分布情况 [40] ,以反射放大攻击 引起的 DDoS 攻击所占比例已经逐渐超过传统的 SYN Flood 和 UDP Flood 等攻击,其中 SSDP 反射攻 击方式最受欢迎,占比高达 20.33%。可见 UPnP 协议栈的安全问题严重,因此我们将在本章对其协议、 实现和服务进行安全分析,并跟踪相关的威胁。

UPnP 技术简介

物联网行业的现状是其碎片化程度非常高,各物联网厂商在设计产品时,没有通用的标准,各自设 计应用层协议,因此类似腾讯的智能音箱控制不了米家插座的情况十分常见。OCF(Open Connectivity Foundation)组织致力于推进物联网行业的发展,提供了规范、代码和认证机制,以便与当前的物联网 设备和传统系统互通,而不必因操作系统、框架等因素的不同导致通信的受限。OCF推动的 UPnP 技术, 为广泛存在的点对点网络互联定义了一个分布式、开放的网络体系结构,其设计目的是无论在家庭、小 型企业或者互联网连接的任何地方,都可以给路由器、打印机、智能灯泡等各类智能设备、无线设备以 及个人电脑带来一种易用、灵活和标准化的连接方式。设备厂商只要遵循通用架构、按照相应的标准设 计产品,不同“物联网”厂商产品间的互通就能得到保障。

目前,UPnP 技术在很多场景下得以应用,如在频网站的 P2P 加速服务、Xbox 游戏服务、聊天软件的 P2P 频服务等传统场景中,在越来越多物联网产品(路由器、 Yeelight 彩光灯泡、飞利浦 照明系统等)的设计过程中,或多或少使用或参考了 UPnP 技术。以网络打印机为例,支持 UPnP 技术 的网络打印机可利用 DHCP 接入网络,然后使用 SSDP 让个人电脑发现自己的 IP 地址,最后到个人电 脑创建、取消打印的任务,整个过程都无需人为配置。

技术上,UPnP 架构 [28] 使用了一系列现有的互联网通信协议,同时也包含了若干 OCF自行制定的 协议,UPnP 的协议栈是一个多层的框架体系,每一层都以相邻的下层为基础,同时又是上层的基础, 直到达到最上层厂商的设备定义层为止,各层之间的关系如表 4.1 所示,自底向上依次每层分别为:

表 4.1 UPnP 架构协议栈

UPnP 厂商
UPnP 论坛
UPnP 设备架构
SSDP
UDP
IP
第一层是 IP 协议层,主要用于 UPnP 架构中设备及控制点的网络地址的获取,IP 层包括允许设备 通过 DCHP或 AUTO-IP获取网络地址,同时承载上层协议的数据。

第二层是 UDP和 TCP 协议层,主要用于传输数据。

第三层规定了 UPnP 工作流程中的几个核心协议:基于 UDP的 SSDP 协议用于局域网内设备发现; 基于 TCP/HTTP 的 SOAP协议用于设备控制;基于 TCP/HTTP 的 GENA协议用于事件的订阅和通知。

第四层定义了 UPnP 设备的架构,仅为一个抽象的、公用的设备模型,但任何 UPnP 设备都必须使 用这一层。

第五层是 UPnP 论坛(自 2016 年 1 月 1 日起,UPnP 论坛将其资产分配给开放连接基金会,即 OCF)的设备定义层,OCF为不同的电器设备制定相应的标准,规定了不同产品的功能。如网关类设备 有网关类设备的标准,允许设备基于 UPnP 完成端口转发等操作。智能灯泡类设备有其相应的标准,允 许设备基于 UPnP 完成开关、变换颜色等操作。厂商在设计产品时参照该层的模板,即可快速设计出支 持 UPnP 的产品。最终,这些用于特定设备的标准,很可能逐渐演变为行业的标准。

第六层是厂商的设备定义层,这部分的信息是由设备厂商来填充的,遵从第五层的标准,使用 OCF 提供的模板,厂商只需要添加如厂商信息、产品序列号等信息即可,无需关心底层的具体实现。

UPnP 的工作流程

UPnP 的工作流程如图 4.1 所示,分为寻址、发现、描述、控制、事件以及展示六个阶段。

寻址阶段是 UPnP 工作流程中的基础,在 IPv4 的环境中,每台设备或每个控制点都应该实现一个 DHCP客户端,在设备或控制点初次加入网络后主动搜索 DHCP服务器。若 DHCP服务器可用,设备或 控制点就应该使用分配给它的 IP 地址。当 DHCP 服务器不可用时,设备或控制点可以使用 Auto-IP 获 取 IP 地址。

发现阶段的流程如图 4.2 所示,SSDP(又被称为 UPnP 发现协议)规定,当开放了 UPnP 服务的 设备加入网络后,该设备将以组播的方式,向网络中的控制点通知自己以及服务的存在。通常来说, SSDP 协议也允许一个控制点在加入网络后,可搜索(通过组播或者单播)网络中的设备和服务。上面 两种情况报文交换的基本内容,包含一些关于设备自身或设备提供服务的基本特征,比如它的类型、身 份标识符、包含服务详细信息的 URL等。

描述阶段。当一个控制点发现了一台设备后,可发送 GET请求到包含服务详细信息的 URL,来获 得设备提供的对应服务描述,包含设备厂商信息(如模型名称、设备名称、序列号、厂商的 URL等)。 同时,描述阶段设备及其相关服务的描述包含了一个关于服务或者子设备的列表,对于服务而言,还包 含了和服务相关的命令、操作等行为的列表。

控制阶段。当控制点获取到设备及其服务的详细信息后,就可以通过发送相应的控制指令,调用设 备或服务定义的操作(如开灯、关灯、创建一个打印服务等)。为了完成这个过程,控制点会给某一个 服务的控制 URL(描述阶段获取)发送一条 SOAP控制报文,服务执行相应操作后,在响应报文中返回 所有操作的执行结果。

事件阶段。描述阶段的服务描述包含了服务相应的操作列表和与运行时服务状态相关变量模型的列 表。当变量发生改变时,服务会通过发送事件报文来通知这些更新,控制点可以通过订阅来接收这些信息。

展示阶段。如果设备提供一个 URL用于前端展示,那么控制点可以通知浏览器加载该 URL对应的 页面,用户可在该页面中控制设备以及查看设备的状态。

参考资料

绿盟 2018物联网安全年报

 类似资料: