Японский специалист по кибербезопасности Рёта К. из компании GMO Flatt Security Inc. обнаружил критическую уязвимость в среде выполнения Unity, позволяющую выполнение произвольного кода. Проблема, получившая идентификатор CVE-2025-59489, затрагивает игры и приложения, созданные на Unity 2017.1 и более поздних версиях.
Детали уязвимости
Открытие было сделано в мае 2025 года во время участия исследователя в Meta Bug Bounty Researcher Conference. Уязвимость связана с механизмом обработки интентов (намерений) в Unity Runtime для Android. Как выяснилось, любое приложение, установленное на устройстве, может отправлять специально сконструированные интенты с параметром unity, который затем интерпретируется как аргументы командной строки.
Технический анализ показал, что через аргумент xrsdk-pre-init-library злоумышленники могут загружать произвольные разделяемые библиотеки формата .so. Это происходит потому, что значение данного аргумента передается напрямую в функцию dlopen, что позволяет выполнять вредоносный код в контексте целевого Unity-приложения с его правами доступа.
Наиболее вероятным сценарием эксплуатации является локальная атака, когда вредоносное приложение, уже установленное на устройстве, запускает Unity-приложение с аргументом -xrsdk-pre-init-library, указывающим на заранее подготовленную библиотеку. При этом эксплойт извлекает нативную библиотеку с установленным атрибутом android:extractNativeLibs в true из файла AndroidManifest.xml.
Теоретически возможна и удаленная эксплуатация через браузер, если приложение экспортирует UnityPlayerActivity или UnityPlayerGameActivity с категорией android.intent.category.BROWSABLE. В этом случае веб-сайты могут использовать intent-URL для передачи вредоносных параметров. Однако строгая политика SELinux в Android препятствует загрузке файлов из каталога загрузок, что значительно усложняет удаленную атаку.
Для успешной удаленной эксплуатации необходимо выполнение двух условий: приложение должно экспортировать соответствующие активности с категорией BROWSABLE, а также записывать файлы с контролируемым злоумышленником содержимым в свое приватное хранилище, например, через механизм кэширования.
Важно отметить, что уязвимость затрагивает не только Android, но и другие платформы, включая Windows, macOS и Linux. По данным официального сайта Unity, на этом движке построены 70% ведущих мобильных игр, включая такие популярные проекты как Among Us и Pokemon GO.
Компания Unity уже выпустила патчи для версий, начиная с Unity 2019.1, а также предоставила инструмент Unity Binary Patch для устранения проблемы. Разработчикам настоятельно рекомендуется загрузить обновленные версии движка, перекомпилировать affected игры и приложения, а также повторно опубликовать их в магазинах приложений.
Эксперты отмечают оперативность реакции компании Unity на обнаруженную проблему и ее продолжающиеся усилия по повышению безопасности платформы.
Данный случай демонстрирует, что уязвимости могут присутствовать не только в самом коде приложений, но и в фреймворках и библиотеках, которые разработчики используют в своих проектах. Это подчеркивает важность регулярного обновления зависимостей и проведения тщательного анализа безопасности всего программного стека.
Обнаружение уязвимости CVE-2025-59489 вновь подтверждает необходимость комплексного подхода к кибербезопасности, когда защита выстраивается на всех уровнях - от базовых библиотек до конечных приложений. Для миллионов пользователей Unity-приложений во всем мире оперативное обновление разработчиками своих продуктов становится критически важной мерой защиты.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2025-59489
- https://unity.com/security#security-updates-and-patches
- https://unity.com/security/sept-2025-01
- https://flatt.tech/research/posts/arbitrary-code-execution-in-unity-runtime/