我们有一个使用统一游戏引擎构建的多用户企业培训应用程序,并且正在讨论在运行该应用程序的系统上为该应用程序在全球范围内添加一个Windows Defender防火墙规则的安全含义。由于应用程序的体系结构,在安装时不知道一组可执行路径,所以我们还没有找到一种比全局打开所需端口更好的方法,只在需要的可执行文件上显示所需的端口。
该应用程序在非管理帐户下运行,安装程序目前不需要任何提升的权限。它不做普通磁盘IO,它只读取自己的数据文件并将日志写入硬编码位置。应用程序运行的系统不属于公司域,也不用于任何其他用途(它们不应将任何敏感数据存储在系统上)。
人们对全球开放港口对安全的影响有些担忧。在我看来,现实世界的风险相当低。我们可以选择在机器上运行的任何其他应用程序或服务都不使用的端口,因此唯一真正的风险将是在应用程序运行时对应用程序本身进行成功的远程权限升级攻击(这是多人/多用户游戏类型应用程序所固有的风险)。不过,我可能忽略了一些潜在的安全问题。我很想听听人们对这一安全问题在实践中有多大的想法。
发布于 2018-02-07 08:35:50
打开端口的风险是可以利用侦听应用程序。这意味着,例如,如果发现了统一零日,这些系统将面临风险。仅仅6个月前,在Unity (CVE-2017-12939)中发现了一个远程代码执行错误。注意,这影响了编辑器,而不是它创建的游戏。新的安全漏洞总是会被发现,因此任何通过开放端口监听的应用程序都可能受到攻击。
确保端口只为特定应用程序打开,以防止端口为将来可能安装的其他应用程序打开。
如果你疑神疑鬼,并想降低风险,有几个选择。
如果您构建应用程序的方式只有服务器侦听,并且客户端启动连接,则不需要打开端口(除非在这些客户端上还有一个出站防火墙)。这也为您省去了在网络中的NAT设备上手动转发端口的麻烦。
创建一个最小特权用户帐户
您提到您的应用程序只需要对特定文件夹中的几个文件进行只读权限。您可以在安装应用程序的系统上创建一个新的用户帐户,并且只授予该文件夹特权。如果这样做,请确保应用程序使用该用户帐户运行。这意味着,如果攻击者利用该应用程序,他将有更多的麻烦,以提高权限。然而,这需要很多额外的工作,只对真正的偏执狂。
发布于 2018-02-09 21:14:43
我同意你的分析。
从顶部开始,打开端口意味着任意(可能是恶意的)通信可以并将被路由到侦听该端口的进程。你保证这个游戏将是唯一能在那个端口上听的东西。
我们可以选择在机器上运行的任何其他应用程序或服务不使用的端口。
因此,正如您所指出的,攻击范围是游戏应用程序:
唯一真正的风险是有人在应用程序运行时成功地对应用程序本身进行远程权限升级攻击。
所以问题归结为:你有多信任一个游戏应用程序的设计考虑到安全性,并正确处理所有可能的错误输入到该端口?就我个人而言,我不太相信这一点。@Snappie的回答证实了这一点。
由于我们不相信应用程序会被强化,所以我们需要将其视为“潜在的危害”,并适当地对其进行沙箱化。扪心自问:“如果这个盒子被完全破坏了,并且完全处于攻击者的控制之下,它会造成什么伤害?”听起来你已经在朝正确的方向思考了,所以,干得好!
应用程序运行的系统不属于公司域,也不用于任何其他用途(它们不应将任何敏感数据存储在系统上)。
https://security.stackexchange.com/questions/178915
复制相似问题