
Автоматический сканер, который обнаруживает уязвимость инъекции в среду выполнения Unity CVE-2025-59489 в Android APK-файлах путём извлечения версии Unity и проверки её на соответствие исправленным версиям, с пакетной обработкой и интеграцией в CI/CD.
Автоматизированный инструмент обнаружения уязвимости внедрения в Unity Runtime для Android-игровых платформ.
Кратко: злоумышленник может полностью контролировать затронутую игру/приложение Unity и получить все разрешения этого приложения.
Ключевой момент: на Android вредоносное приложение может перехватывать разрешения, уже полученные приложением Unity
Ключевой момент: на Windows, если игра зарегистрировала custom URI handler, переход по специально созданной ссылке может вызвать уязвимость
| Если игра имеет это разрешение | Злоумышленник может |
|---|---|
| 📸 Камера | Скрытно фотографировать вас |
| 🎤 Микрофон | Подслушивать вас |
| 📍 Геолокация | Отслеживать вас |
| 📱 Контакты | Похищать вашу адресную книгу |
| 💾 Хранилище | Читать/удалять ваши файлы |
| 💰 Платежи | Совершать мошеннические внутриигровые платежи |
| 🔐 Учётная запись | Похищать игровые учётные записи |
Хорошая новость: злоумышленник не может выйти за пределы разрешений самого приложения
Плохая новость: многие игры запрашивают множество разрешений (камера, микрофон, хранилище, геолокация и т.д.), и злоумышленник может полностью использовать эти разрешения
Как оператор Android-игровой платформы, худшие последствия:
[Источник: официальное уведомление о безопасности Unity, технический анализ GMO Flatt Security]
# Требуется только стандартная библиотека Python 3.7+, дополнительные зависимости не нужны
python3 --version # Проверка версии Python
# Шаг 1: Запуск тестов
python test_demo.py
# Шаг 2: Проверка одного APK
python unity_vulnerability_checker.py your_game.apk
# Шаг 3: Пакетная проверка
python unity_vulnerability_checker.py --batch /path/to/apks
# Шаг 4: Просмотр примеров использования
python usage_examples.py
from unity_vulnerability_checker import check_unity_vulnerability
# Проверка одного APK-файла
result = check_unity_vulnerability("your_game.apk")
# Способ 1: Использование удобных свойств
if result.is_vulnerable:
print(f"⚠️ Приложение затронуто! ({result.version})")
print(f"Рекомендация: {result.recommendation}")
elif result.is_safe:
print(f"✅ Приложение безопасно")
print(f"Причина: {result.message}")
else:
print(f"❓ Требуется ручная проверка")
print(f"Причина: {result.message}")
# Способ 2: Использование поля status
if result.status == "positive":
print(f"Затронуто: {result.version}")
from unity_vulnerability_checker import batch_check
# Пакетное сканирование каталога
results = batch_check("/path/to/apk/folder")
# Фильтрация затронутых приложений
vulnerable_apps = [
(name, result)
for name, result in results.items()
if result.is_vulnerable
]
print(f"Обнаружено {len(vulnerable_apps)} затронутых приложений")
for name, result in vulnerable_apps:
print(f" - {name}: {result.version}")
from unity_vulnerability_checker import UnityVulnerabilityChecker
class MyPlatform:
"""Ваша система игровой платформы"""
def __init__(self):
self.checker = UnityVulnerabilityChecker()
def check_new_upload(self, apk_path: str) -> bool:
"""Проверка нового загруженного APK, возвращает, можно ли публиковать"""
result = self.checker.check_apk(apk_path)
if result.is_vulnerable:
# Затронуто - отклонить публикацию
self.notify_developer(
f"Ваше приложение затронуто уязвимостью Unity\n"
f"Версия: {result.version}\n"
f"Рекомендация: {result.recommendation}"
)
return False
elif result.is_safe:
# Безопасно - одобрить публикацию
return True
else:
# Невозможно определить - ручная проверка
self.queue_manual_review(apk_path, result.message)
return False
def notify_developer(self, message: str):
"""Уведомление разработчика (реализуйте вашу логику уведомлений)"""
pass
def queue_manual_review(self, apk_path: str):
"""Добавление в очередь ручной проверки (реализуйте вашу логику)"""
pass
Инструмент возвращает три типа результатов:
Пример вывода (компактный однострочный формат):
# Затронутое приложение
⚠️ Приложение затронуто CVE-2025-59489 (Unity 2019.2.6f1)
# Безопасное приложение (3 случая)
✅ Приложение безопасно - не приложение Unity
✅ Приложение безопасно - исправлено с помощью инструмента Unity patcher
✅ Приложение безопасно - исправленная версия (2019.4.41f1)
# Невозможно определить
❓ Невозможно определить - приложение Unity, но не удалось извлечь версию, возможно упаковано или обфусцировано, рекомендуется ручная проверка
⚠️ Файл слишком большой для обработки (1500.0MB, лимит 1024MB) - измените MAX_APK_SIZE_MB в строке 15 кода на большее значение