服务端 RCE 漏洞(Bleeding Pipe)在野利用风险警告
摘要
根据 文章 1 和 文章 2 所述,已在许多 Minecraft 模组中发现了一个非常严重的漏洞,允许在客户端和服务端(甚至服务端上所有连接的客户端)上远程执行任意代码。如果您安装了本文列出的模组之一,则应该假定您的设备已被感染。此漏洞主要影响 Forge 用户,但 Fabric 及其他模组加载器仍然可能受到影响。
服务端 RCE 漏洞(Bleeding Pipe)在野利用风险警告
我们建议您(尤其是服务器所有者)认真对待此漏洞。
Minecraft 1.7 及更高版本都易受此漏洞的攻击。该漏洞可通过服务器传播,感染任何可能加入的客户端。此漏洞已被多次利用,且已观察到针对 Minecraft 服务器的攻击。
介绍
Bleeding Pipe 是一个已发现在野使用的漏洞,由于服务器发送到客户端或客户端发送到服务器的网络数据包中不安全地使用 Java 序列化功能,从而留下了漏洞隐患。该漏洞允许实例化 Minecraft 实例中加载的任何 Java 类并执行任意代码。
这是在使用不安全的反序列化代码的 mod 中存在的漏洞,而不是 Forge 本身,因此寻求 Forge 开发者的帮助意义不大。
过去已经存在一个类似的漏洞,称为“Mad Gadget”。您可以在这里阅读更多相关内容:
- https://opensource.googleblog.com/2017/03/operation-rosehub.html
- https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/
我该怎么办?
下方列出了一些通用的检测方法。
服务器管理员
作为服务器管理员,我们建议您检查服务端中的可疑文件,并更新/删除受此漏洞影响的模组。本文列出了一部分可能受此漏洞影响的模组列表。
玩家
作为玩家,如果您不游玩服务器,则大概率不会受到影响,但仍然应该对此防备。
我们建议检查可疑文件,运行防病毒软件进行扫描,并使用 jSus 或 jNeedle 等专用程序对 .minecraft 目录进行扫描。请注意,如果使用第三方启动器(如 HMCL),模组文件可能会存储在不同的目录中。通常可以在 versions 目录下对应的版本找到模组文件。
补救措施
您可以在 Forge 1.7 及更高版本的服务端和客户端上安装 serializationisbad 或 PipeBlocker 来暂时修复此漏洞。
对于其他 Java 应用,请先下载上文提到的 serializationisbad,之后添加以下 JVM 参数:-javaagent:<先前下载的 jar 文件路径>,之后修复程序将会自动工作。
我们还建议将所有模组更新到最新版本。请注意,制作好的整合包可能会因更新模组而导致游玩时不稳定或无法游玩。
如果您是模组开发人员并正在使用 ObjectInputStream,除非您知道自己在做什么,否则建议您立刻切换到其他更安全的序列化库或自己制作一个。
已知受影响的 Mod
请注意,此列表绝对不完整,这些只是我们目前所知的模组。至少 Curseforge 已经在内部调查这个问题,因此我们将来可能会获得几乎完整的易受攻击的模组版本列表。
已知受影响的模组包括但不限于:
- AetherCraft
- Advent of Ascension (Nevermine) (仅影响 Minecraft 1.12.2)
- Arrows Plus
- Astral Sorcery (受影响版本: <=1.9.1)
- BdLib (仅影响 Minecraft 1.8.9-1.12.2)
- Carbonization
- Custom Friends Capes
- CustomOreGen
- DankNull
- Energy Manipulation
- EnderCore (仅影响 Minecraft 1.9-1.13)
- EndermanEvolution
- Extrafirma
- Gadomancy
- Giacomo's Bookshelf
- Immersive Armors (已在适用于 Minecraft 1.18.2, 1.19.2-1.19.4, 1.20 的 1.5.6 版本修复,1.16.5, 1.17.1, 1.18.1, 1.19.0, 1.19.1 仍受影响, 相关记录)
- Immersive Aircraft
- Immersive Paintings
- JourneyMap (在 1.16.5-5.7.1 引入并在 1.16.5-5.7.2 修复,其他版本不受影响)
- LanteaCraft / SGCraft
- LogisticsPipes (仅影响 Minecraft 1.4.7-1.7.10,在适用于 MC 1.7.10 的 0.10.0.71 版本修复,相关安全公告)
- Minecraft Comes Alive (MCA) (仅影响 Minecraft 1.5.2-1.6.4)
- MattDahEpic Core (MDECore) (仅影响 Minecraft 1.8.8-1.12.2)
- mxTune (仅影响 Minecraft 1.12-1.16.5)
- p455w0rd's Things
- Project Blue
- RadixCore
- RebornCore (受影响版本: >= 3.13.8, <4.7.3,相关安全公告)
- SimpleAchievements
- SmartMoving
- Strange
- SuperMartijn642's Config Lib (已在 1.0.9 版本修复,相关安全公告)
- Thaumic Tinkerer (已在适用于 Minecraft 1.7.2 的 2.3-138 版本修复,1.6-1.6.4 版本仍受影响,相关记录)
- Tough Expansion
- ttCore (仅影响 Minecraft 1.7.10)
发现过程
最初,这个漏洞在 Java 社区中是众所周知的,并且之前已经在其他 mod 中修复过。此漏洞通常被称为反序列化攻击,并且有许多被利用的案例,但在 Minecraft 社区中较为少见。
此漏洞的第一个警告可以追溯到 2022 年 3 月,当时有关这个漏洞的 issue 发布在 BDLib 的 GitHub 上,并告知 ObjectInputStream 中存在漏洞。GTNH 团队迅速将修复合并到他们的分支中。
在此之后,这个 issue 没有人回复,直到 MineYourMind 在其 Enigmatica 2 Expert 服务器上发布了有关漏洞的信息。
2023 年 7 月 9 日,有人在 Forge 论坛发布了一篇关于服务器上利用 RCE 漏洞的帖子,该帖子阐述了某些模组设法破坏服务端并向客户端发送异常数据包,表明漏洞会通过服务端向客户端传播。涉事模组有 3 个:EnderCore、BDLib 和 LogisticsPipes。然而,这篇文章并没有引起太大的重视,大多数人都没有关注。
2023 年 7 月 24 日,MineYourMind 突然宣布他们已经“修复”了该错误,并将与开发人员合作制作漏洞补丁。没有发布其他信息。
在这一系列公告之后,该漏洞在 GTNH 的其余分支中迅速修复,但漏洞仍然存在于大多数安装了这些模组的服务器以及这些模组的原始版本中。
大规模滥用
我们还发现有黑客正在扫描有 IPv4 公网地址的所有 Minecraft 服务器,以大规模利用易受攻击的服务器。然后将可能的恶意程序部署到所有易受攻击的服务器上。
我们不知道黑客将如何利用漏洞,或者漏洞是否被用来攻击其他客户端,尽管这种可能性始终存在。
技术细节
该漏洞是使用 ObjectInputStream 进行反序列化的已知问题。受影响的模组使用 OIS 作为网络代码,这允许发送带有恶意序列化的数据包。此漏洞允许在服务器上执行任意代码,然后可以利用这些服务端对所有客户端执行相同的操作,从而反向感染所有客户端。
如果您有任何关于 BleedingPipe 的信息,您可以前往 https://github.com/dogboy21/serializationisbad 联系文章 1 的作者,也可以加入 MMPA 的 Discord 服务器或通过邮件地址 contact@mmpa.info 联系文章 2 的作者。
本文转自 MCBBS《[2023.7.30] 服务端 RCE 漏洞(Bleeding Pipe)在野利用风险警告》