Source : GMO Flatt Security Research – flatt.tech (publication du 3 octobre 2025). Contexte : un chercheur (RyotaK) détaille CVE-2025-59489, une vulnérabilité du Unity Runtime affectant les jeux/apps Unity (2017.1 et +), signalée à Unity qui a publié des correctifs (2019.1 et +) et un outil de patch binaire.

• La vulnérabilité repose sur la gestion des intents Android par Unity : l’extra « unity » est interprété comme des arguments de ligne de commande pour l’application. Un argument spécifique, -xrsdk-pre-init-library, est transmis à dlopen(), permettant de charger une bibliothèque native arbitraire et d’exécuter du code dans le contexte de l’app Unity, avec ses permissions.
• Impact : exécution de code arbitraire et détournement de permissions des apps Unity. Unity a publié un avis officiel et des mises à jour (2019.1 et +) ainsi qu’un Unity Binary Patch tool pour atténuer le risque. Avis Unity : https://unity.com/security/sept-2025-01

Scénarios d’attaque :

  • Local : toute app malveillante sur le même appareil peut lancer l’app Unity avec l’argument -xrsdk-pre-init-library pointant vers une bibliothèque malveillante (p. ex. depuis des libs extraites si android:extractNativeLibs=true).
  • À distance (cas spécifiques) : si l’app exporte UnityPlayerActivity/UnityPlayerGameActivity avec android.intent.category.BROWSABLE, un site peut transmettre des extras via des URLs d’intent. Les politiques SELinux bloquent dlopen depuis le répertoire Downloads, mais un contournement est possible si l’app écrit des fichiers contrôlables par l’attaquant dans son stockage privé (p. ex. via du cache), que dlopen peut charger (pas nécessairement avec extension .so).

Conditions d’exploitation à distance :

  • Activité Unity exportée avec la catégorie BROWSABLE.
  • L’app écrit dans son stockage privé des fichiers au contenu contrôlé (ex. mécanismes de cache).
    Même sans ces conditions, l’exploitation locale reste possible sur toute app Unity.

Portée et environnement : tests menés sur Android 16.0 (émulateur Android Studio) ; le comportement peut varier sur d’anciennes versions d’Android. Unity est largement utilisé dans l’écosystème mobile (nombreux jeux populaires), ce qui augmente la surface de risque, d’où l’importance des patches et de la recompilation.

TTPs observés :

  • Abus d’intents Android et de l’extra « unity » pour injection d’arguments de ligne de commande.
  • Chargement de librairie native via dlopen() (-xrsdk-pre-init-library).
  • Hijacking de permissions par exécution dans le contexte de l’app cible.
  • Contournement SELinux via usage du stockage privé de l’app et fichiers en cache.
  • Déclenchement potentiel via intent URLs lorsque l’activité est BROWSABLE.

IOCs : Aucun indiqué.
Type d’article : publication technique de recherche décrivant une vulnérabilité et ses scénarios d’exploitation, avec lien vers l’avis de sécurité et les correctifs.


🔗 Source originale : https://flatt.tech/research/posts/arbitrary-code-execution-in-unity-runtime/

🖴 Archive : https://web.archive.org/web/20251008160224/https://flatt.tech/research/posts/arbitrary-code-execution-in-unity-runtime/