
Analyseur automatisé qui détecte la vulnérabilité d'injection au runtime Unity CVE-2025-59489 dans les APK Android en extrayant la version d'Unity et en la vérifiant par rapport aux versions corrigées, avec traitement par lots et intégration CI/CD.
Outil de détection automatisée de la vulnérabilité d'injection du runtime Unity, spécialement conçu pour les plateformes de jeux Android.
En résumé : Un attaquant peut prendre le contrôle total du jeu/application Unity affecté et obtenir toutes les autorisations de cette application.
Point clé : Sur Android, une application malveillante peut détourner les autorisations déjà obtenues par l'application Unity
Point clé : Sur Windows, si le jeu a enregistré un gestionnaire d'URI personnalisé, cliquer sur un lien spécialement conçu peut déclencher la vulnérabilité
| Si le jeu a cette autorisation | L'attaquant peut |
|---|---|
| 📸 Caméra | Vous filmer en secret |
| 🎤 Microphone | Vous écouter |
| 📍 Localisation | Vous suivre à la trace |
| 📱 Contacts | Voler votre répertoire |
| 💾 Stockage | Lire/supprimer vos fichiers |
| 💰 Paiement | Effectuer des paiements frauduleux dans le jeu |
| 🔐 Compte | Voler le compte du jeu |
Bonne nouvelle : L'attaquant ne peut pas dépasser les limites d'autorisations de l'application elle-même
Mauvaise nouvelle : De nombreux jeux exigent de nombreuses autorisations (caméra, microphone, stockage, localisation, etc.), que l'attaquant peut exploiter pleinement
En tant qu'exploitant d'une plateforme de jeux Android, les pires conséquences :
[Source : avis de sécurité officiel d'Unity, analyse technique de GMO Flatt Security]
# Nécessite uniquement la bibliothèque standard Python 3.7+, aucune dépendance supplémentaire
python3 --version # Vérifier la version de Python
# Étape 1 : Exécuter les tests
python test_demo.py
# Étape 2 : Détecter un seul APK
python unity_vulnerability_checker.py your_game.apk
# Étape 3 : Détection par lots
python unity_vulnerability_checker.py --batch /path/to/apks
# Étape 4 : Consulter les exemples d'utilisation
python usage_examples.py
from unity_vulnerability_checker import check_unity_vulnerability
# Détecter un seul fichier APK
result = check_unity_vulnerability("your_game.apk")
# Méthode 1 : Utiliser les propriétés pratiques
if result.is_vulnerable:
print(f"⚠️ Application affectée ! ({result.version})")
print(f"Recommandation : {result.recommendation}")
elif result.is_safe:
print(f"✅ Application sécurisée")
print(f"Raison : {result.message}")
else:
print(f"❓ Nécessite une vérification manuelle")
print(f"Raison : {result.message}")
# Méthode 2 : Utiliser le champ status
if result.status == "positive":
print(f"Affectée : {result.version}")
from unity_vulnerability_checker import batch_check
# Analyser un répertoire par lots
results = batch_check("/path/to/apk/folder")
# Filtrer les applications affectées
vulnerable_apps = [
(name, result)
for name, result in results.items()
if result.is_vulnerable
]
print(f"{len(vulnerable_apps)} application(s) affectée(s) trouvée(s)")
for name, result in vulnerable_apps:
print(f" - {name} : {result.version}")
from unity_vulnerability_checker import UnityVulnerabilityChecker
class MyPlatform:
"""Votre système de plateforme de jeux"""
def __init__(self):
self.checker = UnityVulnerabilityChecker()
def check_new_upload(self, apk_path: str) -> bool:
"""Vérifier un APK nouvellement téléchargé, retourner s'il peut être publié"""
result = self.checker.check_apk(apk_path)
if result.is_vulnerable:
# Affecté - refuser la publication
self.notify_developer(
f"Votre application est affectée par la vulnérabilité Unity\n"
f"Version : {result.version}\n"
f"Recommandation : {result.recommendation}"
)
return False
elif result.is_safe:
# Sécurisé - approuver la publication
return True
else:
# Impossible de déterminer - vérification manuelle
self.queue_manual_review(apk_path, result.message)
return False
def notify_developer(self, message: str):
"""Notifier le développeur (implémenter votre logique de notification)"""
pass
def queue_manual_review(self, apk_path: str):
"""Ajouter à la file de vérification manuelle (implémenter votre logique)"""
pass
L'outil retourne trois types de résultats :
Exemple de sortie (format concis sur une ligne) :
# Application affectée
⚠️ Cette application est affectée par CVE-2025-59489 (Unity 2019.2.6f1)
# Application sécurisée (3 cas)
✅ Cette application est sécurisée - Application non Unity
✅ Cette application est sécurisée - Déjà corrigée avec l'outil Unity patcher
✅ Cette application est sécurisée - Version corrigée (2019.4.41f1)
# Impossible de déterminer
❓ Impossible de déterminer - Application Unity mais version impossible à extraire, peut être protégée ou obfusquée, vérification manuelle recommandée
⚠️ Fichier trop volumineux pour être traité (1500.0MB, limite 1024MB) - Modifier MAX_APK_SIZE_MB à la ligne 15 du code pour une valeur plus grande