为多人游戏开放端口的现实世界风险是什么?

信息安全 防火墙
2021-08-13 06:14:56

我们有一个使用 Unity 游戏引擎构建的多用户企业培训应用程序,并且正在讨论添加 Windows Defender 防火墙规则在全局范围内为运行它的系统上的该应用程序打开一个应用程序特定端口的安全影响。由于应用程序的体系结构,可执行路径集在安装时是未知的,因此我们还没有找到比全局打开所需端口更好的方法来将所需端口列入我们需要的可执行文件上的白名单。

该应用程序在非管理员帐户下运行,并使用当前不需要任何提升权限的安装程序进行安装。它不做一般的磁盘 IO,它只读取自己的数据文件并将日志写入硬编码位置。运行应用程序的系统不在公司域中,也不用于任何其他目的(它们不应存储任何敏感数据)。

对全球开放港口的安全影响存在一些担忧。在我看来,现实世界的风险很低。我们可以选择一个不被机器上运行的任何其他应用程序或服务使用的端口,因此唯一真正的风险是有人在应用程序运行时成功地对应用程序本身进行远程特权升级攻击(这种风险在某种程度上是固有的到多人/多用户游戏类型的应用程序)。但是,我可能在这里遗漏了一些潜在的安全隐患。我很想听听人们对这在实践中的安全问题有多大的看法。

2个回答

打开端口的风险是监听应用程序可能被利用。这意味着,例如,如果发现 Unity 零日漏洞,这些系统将面临风险。仅半个月前,在 Unity 编辑器中发现了一个远程代码执行错误 ( CVE-2017-12939 )。请注意,这会影响编辑器,而不是它创建的游戏。新的安全漏洞一直在被发现,因此任何通过开放端口侦听的应用程序都可能受到攻击。

确保端口仅对特定应用程序开放,以防止端口对您将来可能安装的其他应用程序开放。

如果您偏执并想降低风险,则有几种选择。

你需要一个监听端口吗?

如果您以只有服务器在侦听并且客户端启动连接的方式构建应用程序,则无需打开端口(除非您在这些客户端上也有出站防火墙)。这也为您省去了在网络中的 NAT 设备上手动转发端口的麻烦。

为应用程序创建一个最小特权用户帐户

您提到您的应用程序只需要特定文件夹中几个文件的只读权限。您可以在安装应用程序的系统上创建一个新用户帐户,并仅授予它对该文件夹的权限。如果您这样做,请确保使用该用户帐户运行应用程序。这意味着如果攻击者利用该应用程序,他将在提升权限方面遇到更多麻烦。然而,这需要大量额外的工作,并且只适用于真正的偏执狂。

我同意你的分析。

从顶部开始,打开端口意味着任意(可能是恶意的)流量可以并且将被路由到侦听该端口的进程。你保证这个游戏将是唯一可以在那个端口上监听的东西。

我们可以选择一个不被机器上运行的任何其他应用程序或服务使用的端口

所以攻击范围是游戏应用程序,正如您所指出的:

唯一真正的风险是有人在应用程序运行时成功地对应用程序本身进行远程提权攻击

所以问题归结为:你在多大程度上相信游戏应用程序的设计考虑了安全性,并正确处理了对该端口的所有可能的格式错误输入?就个人而言,我不会非常相信这一点。@Snappie 的回答证实了这一点。

由于我们不相信应用程序会被加固,因此我们需要将其视为“可能受到威胁”并对其进行适当的沙箱处理。问问自己“如果这个盒子完全被攻击并且完全在攻击者的控制之下,它会造成什么损害?”。听起来您已经在朝着正确的方向思考,所以是的,干得好!

运行应用程序的系统不在公司域中,也不用于任何其他目的(它们不应存储任何敏感数据)。