CVE-2025-59489:Unity运行时中的任意代码执行
漏洞是怎么被发现的?
这次的问题不是Unity 自己发现的,而是由日本资安团队flatt.tech找出的。
他们在确认漏洞后立即私下通报Unity,双方采用「负责任揭露」方式同步公开。 漏洞的根本原因在于Unity
的Runtime(执行环境)设计缺陷。 游戏启动时,Unity 会处理外部传入的参数(本来是给开发者用的), 但系统并没有做好安全检查。
这让攻击者有机可乘,能在启动时注入恶意指令、 甚至让游戏下载并执行外部程式。
Unity 运行时的 Intent 处理流程中存在一个漏洞,该流程针对 Unity 游戏和应用程序。
此漏洞允许恶意 Intent 控制传递给 Unity 应用程序的命令行参数,从而使攻击者能够.so根据平台加载任意共享库(文件)并执行恶意代码。
在默认配置下,此漏洞允许安装在同一设备上的恶意应用程序劫持授予 Android Unity 应用程序的权限。
在特定情况下,该漏洞可被远程利用来执行任意代码,但我并未调查第三方 Unity 应用程序,以找到具备此漏洞所需功能的应用程序。
Unity 已解决此问题,并从 2019.1 开始更新所有受影响的 Unity 版本。强烈建议开发者下载更新, 重新编译游戏和应用程序,然后重新发布,以确保项目安全。
Unity 的 Intent Handler
为了支持在 Android 设备上调试 Unity 应用程序,Unity 会自动将包含 extra 的 Intent 的处理程序添加unity到 UnityPlayerActivity。此 Activity 用作应用程序的默认入口点,并可导出到其他应用程序。
https://docs.unity3d.com/6000.0/Documentation/Manual/android-custom-activity-command-line.html
adb shell am start -n "com.Company.MyGame/com.unity3d.player.UnityPlayerActivity" -e unity "-systemallocator"
如上所述,unity额外内容被解析为 Unity 的命令行参数。
虽然 Android 的权限模型通过向应用程序授予权限来管理功能访问,但它并不限制可以向应用程序发送哪些 Intent。
这意味着任何应用程序都可以unity向 Unity 应用程序发送额外信息,从而允许攻击者控制传递给该应用程序的命令行参数。
xrsdk-pre-init-library 命令行参数
将 Unity Runtime 二进制文件加载到 Ghidra 后,我发现了以下命令行参数:
initLibPath = FUN_00272540(uVar5, "xrsdk-pre-init-library");
该命令行参数的值稍后会传递给dlopen,从而导致在中指定的路径xrsdk-pre-init-library被加载为本机库。
lVar2 = dlopen(initLibPath, 2);
这种行为允许攻击者在 Unity 应用程序的上下文中执行任意代码,通过使用 -xrsdk-pre-init-library 参数启动它们来利用其权限。
攻击场景
本地攻击
安装在同一设备上的任何恶意应用程序都可以通过以下方式利用此漏洞:
提取本机库,并在 AndroidManifest.xml 中android:extractNativeLibs设置属性true
-xrsdk-pre-init-library使用指向恶意库的参数启动 Unity 应用程序
Unity 应用程序随后会使用自己的权限加载并执行恶意代码
通过浏览器进行远程利用
在特定情况下,尽管条件允许,此漏洞仍可能被远程利用。
例如,如果应用程序导出UnityPlayerActivity或UnityPlayerGameActivity带有android.intent.category.BROWSABLE类别(允许浏览器启动),则网站可以使用 Intent URL 指定传递给活动的额外信息:
intent:#Intent;package=com.example.unitygame;scheme=custom-scheme;S.unity=-xrsdk-pre-init-library%20/data/local/tmp/malicious.so;end;
乍一看,恶意网站似乎可以通过强制浏览器下载.so文件并通过xrsdk-pre-init-library参数加载它们来利用此漏洞。
远程利用的要求
要远程利用此漏洞,必须满足以下条件:
应用程序导出UnityPlayerActivity或UnityPlayerGameActivity与android.intent.category.BROWSABLE类别
应用程序将包含攻击者控制内容的文件写入其私有存储(例如,通过缓存)
即使没有这些条件,任何 Unity 应用程序仍然可以进行本地开发。
Unity 平台保护:立即采取行动保护您的游戏和应用
修补方案:
修补工具
Unity编辑器下载
https://discussions.unity.com/t/cve-2025-59489-patcher-tool/1688032

杂项:
https://www.4gamers.com.tw/saged/detail/qmrkdx93xelmd0
https://flatt.tech/research/posts/arbitrary-code-execution-in-unity-runtime/
发现此漏洞的人:
https://x.com/ryotkak
2426

被折叠的 条评论
为什么被折叠?



