UPnP有安全风险吗?

默认情况下,许多新路由器都启用UPnP。有一次,FBI和其他安全专家出于安全原因建议禁用UPnP。但是,今天的UPnP有多安全?使用UPnP时是否为了方便而进行安全性交易?

UPnP代表“通用即插即用”。使用UPnP,应用程序可以自动转发路由器上的端口,从而省去了手动转发端口的麻烦。我们将研究人们建议禁用UPnP的原因,以便我们可以清楚地了解安全风险。

图片信用:Flickr上的comedy_nose

您网络上的恶意软件可以使用UPnP

能够感染UPnP的病毒,特洛伊木马,蠕虫或其他恶意程序可以感染UPnP,就像合法程序一样。虽然路由器通常会阻止传入连接,从而防止某些恶意访问,但UPnP可能允许恶意程序完全绕过防火墙。例如,特洛伊木马可以在您的计算机上安装一个远程控制程序,并在路由器的防火墙中为其打开一个孔,从而可以从Internet 24/7全天候访问您的计算机。如果UPnP被禁用,则该程序无法打开端口,尽管它可以通过其他方式绕过防火墙并返回家中。

这有问题吗? 是的。 没有解决的办法– UPnP假定本地程序是可信任的,并允许它们转发端口。如果恶意软件无法转发端口对您很重要,则需要禁用UPnP。

FBI劝说人们禁用UPnP

大约在2001年底,联邦调查局的国家基础设施保护中心建议所有用户禁用UPnP,因为Windows XP中存在缓冲区溢出。此错误已通过安全补丁修复。在意识到问题不在于UPnP本身之后,NIPC稍后实际上针对该建议发布了更正。 (来源)

这有问题吗? 不。 尽管有些人可能还记得NIPC的建议并对UPnP持否定态度,但该建议在当时被误导了,并且该特定问题已由十年前针对Windows XP的补丁程序修复。

图片来源:Flickr上的Carsten Lorentzen

闪存UPnP攻击

UPnP不需要用户进行任何身份验证。您计算机上运行的任何应用程序都可以要求路由器通过UPnP转发端口,这就是上述恶意软件可以滥用UPnP的原因。只要没有任何恶意软件在任何本地设备上运行,您就可以假设自己是安全的,但是您可能错了。

Flash UPnP攻击是在2008年发现的。运行在Web浏览器内部网页上的特制Flash小程序可以将UPnP请求发送到路由器,并要求其转发端口。例如,小程序可以要求路由器将端口1-65535转发到您的计算机,从而将其有效地暴露给整个Internet。但是,攻击者必须在执行此操作之后利用计算机上运行的网络服务中的漏洞–在计算机上使用防火墙将有助于保护您。

不幸的是,情况变得更糟–在某些路由器上,Flash小程序可能会通过UPnP请求更改主DNS服务器。端口转发将是您最少的麻烦–恶意的DNS服务器可能会将流量重定向到其他网站。例如,它可能会将Facebook.com完全指向另一个IP地址-您的网络浏览器的地址栏中会显示Facebook.com,但您使用的是由恶意组织建立的网站。

这有问题吗?是的。 我找不到任何迹象表明该问题已解决。即使它是固定的(这很困难,因为这是UPnP协议本身的问题),但许多仍在使用的较旧的路由器也很容易受到攻击。

路由器上的UPnP错误实现

UPnP Hacks网站包含有关不同路由器实现UPnP的方式的安全问题的详细列表。这些不一定是UPnP本身的问题;它们通常是UPnP实施中的问题。例如,许多路由器的UPnP实施都无法正确检查输入。恶意应用程序可能会要求路由器将网络流量重定向到Internet上的远程IP地址(而不是本地IP地址),并且路由器会遵从。在某些基于Linux的路由器上,可以利用UPnP在路由器上运行命令。 (来源)该网站列出了许多其他此类问题。

这有问题吗?是的! 野外有数百万的路由器容易受到攻击。许多路由器制造商在保护其UPnP实施方面都做得不好。

图片来源:Flickr上的本·梅森(Ben Mason)

您应该禁用UPnP吗?

当我开始写这篇文章时,我期望得出的结论是UPnP的缺陷相当小,为方便起见,交易一些安全性很简单。不幸的是,UPnP确实存在很多问题。如果您不使用需要端口转发的应用程序,例如对等应用程序,游戏服务器和许多VoIP程序,则最好完全禁用UPnP。这些应用程序的重度用户将要考虑是否准备为了方便而放弃一些安全性。您仍然可以在不使用UPnP的情况下转发端口。这只是更多的工作。查看我们的端口转发指南。

另一方面,这些路由器漏洞并未得到有效利用,因此,您会遇到利用路由器UPnP实施中的漏洞的恶意软件的实际机会非常小。有些恶意软件确实使用UPnP来转发端口(例如Conficker蠕虫),但是我还没有遇到利用这些路由器漏洞的恶意软件示例。

如何禁用它? 如果您的路由器支持UPnP,则可以在其网络界面中找到禁用它的选项。有关更多信息,请参阅路由器的手册。

您不同意UPnP的安全性吗?发表评论!


$config[zx-auto] not found$config[zx-overlay] not found