大多数家用路由器的防火墙能有效拦截未经请求的入站流量,但鲜少有人关注通用即插即用(UPnP)。这一几乎标配的功能允许内网设备在无需管理员确认的情况下,直接穿透防护层。
UPnP是发现协议而非安全协议
UPnP本质上是一组发现协议,允许应用或设备请求路由器进行外部端口转发。问题在于,路由器执行该操作时不进行合法性校验:无密码、无提示、无确认。只要请求源自内网,路由器便会无条件执行。
在启用UPnP的Linux环境中,普通用户无需sudo权限,仅通过miniupnpc工具即可强制路由器将特定端口(如8080 TCP)转发至本地机器。此时防火墙虽仍在运行,但UPnP在其上添加了例外规则,导致整体防护水平取决于网络中最不谨慎的设备。
任何联网设备均可利用此漏洞
使用UPnP的唯一门槛是拥有本地IP地址,这意味着智能电视及各类IoT设备均具备此能力。一旦这些设备被入侵,攻击者可利用UPnP将端口转发至自身或内网其他机器,使其暴露于公网。
此类漏洞曾遭大规模利用。2018年,Akamai报告称攻击者利用UPnP缺陷入侵了6.5万台家用路由器,该活动被追踪为“UPnProxy”。随后的“EternalSilence”攻击则通过注入映射,将内网设备的TCP 139和445端口(Windows文件共享)暴露于外网。尽管部分攻击依赖于能响应外网UPnP请求的缺陷路由器,但这充分展示了无身份验证端口映射服务的潜在危害。
关闭UPnP的利弊权衡
UPnP的存在旨在解决NAT对点对点(P2P)网络的破坏。关闭该功能可能导致依赖P2P的游戏大厅连接失败、语音聊天中断,或影响Tailscale、NetBird等Mesh VPN的直接连接效率,迫使其回退至高延迟的中继模式。此外,若内网已存在恶意代码,开放端口并非唯一风险点,这也是厂商默认开启UPnP以降低客服压力的原因之一。
然而,现实中的局域网由安全记录参差不齐的设备组成,开启UPnP意味着信任所有设备均已妥善防护。对于处于运营商级NAT(CGNAT)后的用户,虽然IPv4端口无法从公网访问,但若ISP提供公共IPv6地址,UPnP仍可能在IPv6防火墙上“打孔”,带来同等安全风险。
建议行动:检查并关闭UPnP
建议用户登录路由器管理页面查看UPnP映射表,并尝试关闭该功能数周。若发现特定服务异常,再针对该服务手动配置端口转发,以在便利性与安全性之间取得平衡。