Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
cve-2025-59489 — Автоматический сканер, который обнаруживает уязвимость инъекции в среду выполнения Unity CVE-2025-59489 в Android APK-файлах путём извлечения версии Unity и проверки её на соответствие исправленным версиям, с пакетной обработкой и интеграцией в CI/CD. | Kitploit
Инструменты/GitHubGitHub/taptap/cve-2025-59489
Безопасность AndroidСтатический анализСканеры уязвимостейDevSecOpsМобильная безопасность
GitHubtaptap/cve-2025-59489

cve-2025-59489

Автоматический сканер, который обнаруживает уязвимость инъекции в среду выполнения Unity CVE-2025-59489 в Android APK-файлах путём извлечения версии Unity и проверки её на соответствие исправленным версиям, с пакетной обработкой и интеграцией в CI/CD.

Репозиторий
15210 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Инструмент обнаружения уязвимости Unity CVE-2025-59489

Автоматизированный инструмент обнаружения уязвимости внедрения в Unity Runtime для Android-игровых платформ.

Обзор уязвимости

  • CVE ID: CVE-2025-59489
  • Оценка CVSS: 8.4 (High)
  • Затронутые версии: Android-приложения, созданные с Unity 2017.1 и новее
  • Официальное уведомление: https://unity.com/security/sept-2025-01

Подробное описание ущерба от уязвимости

Максимальный ущерб (худший случай)

Кратко: злоумышленник может полностью контролировать затронутую игру/приложение Unity и получить все разрешения этого приложения.

Сценарии ущерба на платформе Android

  1. На телефоне пользователя установлено вредоносное приложение A
  2. На телефоне пользователя также установлена затронутая игра Unity B
  3. Вредоносное приложение A может:
    • Выдавать себя за игру B и выполнять произвольный код
    • Похищать все данные, доступные игре B (сохранения, данные учётной записи, фотографии, контакты и т.д.)
    • Использовать все разрешения игры B (камера, микрофон, геолокация, сеть и т.д.)

Ключевой момент: на Android вредоносное приложение может перехватывать разрешения, уже полученные приложением Unity

Сценарии ущерба на платформе Windows

  1. Пользователь нажимает на вредоносную веб-ссылку
  2. Если на компьютере установлена затронутая игра Unity
  3. Злоумышленник может:
    • Удалённо инициировать загрузку вредоносного кода в игру
    • Выполнять произвольные действия с разрешениями игры
    • Похищать файлы и данные, доступные игре

Ключевой момент: на Windows, если игра зарегистрировала custom URI handler, переход по специально созданной ссылке может вызвать уязвимость

Конкретные примеры ущерба

Важные ограничения

Хорошая новость: злоумышленник не может выйти за пределы разрешений самого приложения

  • ❌ Не может получить root-права
  • ❌ Не может получить доступ к данным других приложений (защита песочницы Android)
  • ❌ Может действовать только от имени скомпрометированного приложения

Плохая новость: многие игры запрашивают множество разрешений (камера, микрофон, хранилище, геолокация и т.д.), и злоумышленник может полностью использовать эти разрешения

Влияние на игровые платформы

Как оператор Android-игровой платформы, худшие последствия:

  1. Утечка данных пользователей → ущерб репутации платформы
  2. Массовое хищение учётных записей → отток пользователей
  3. Юридическая ответственность → невыполнение обязательств по проверке безопасности
  4. Экономические потери → претензии пользователей, штрафы регуляторов

[Источник: официальное уведомление о безопасности Unity, технический анализ GMO Flatt Security]

Быстрый старт

Требования к окружению

root@kitploit:~
# Требуется только стандартная библиотека Python 3.7+, дополнительные зависимости не нужны
python3 --version  # Проверка версии Python

Начало работы за 5 минут

root@kitploit:~
# Шаг 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

Самый простой способ использования

root@kitploit:~
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}")

Пакетная проверка всех APK в каталоге

root@kitploit:~
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}")

Интеграция в существующую систему

root@kitploit:~
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

Пояснение результатов проверки

Инструмент возвращает три типа результатов:

  • positive - подтверждено, что затронуто (требуется обновление)
  • negative - безопасно (не Unity или исправлено)
  • inconclusive - невозможно определить (требуется ручная проверка)

Пример вывода (компактный однострочный формат):

root@kitploit:~
# Затронутое приложение
⚠️  Приложение затронуто CVE-2025-59489 (Unity 2019.2.6f1)

# Безопасное приложение (3 случая)
✅ Приложение безопасно - не приложение Unity
✅ Приложение безопасно - исправлено с помощью инструмента Unity patcher
✅ Приложение безопасно - исправленная версия (2019.4.41f1)

# Невозможно определить
❓ Невозможно определить - приложение Unity, но не удалось извлечь версию, возможно упаковано или обфусцировано, рекомендуется ручная проверка
⚠️  Файл слишком большой для обработки (1500.0MB, лимит 1024MB) - измените MAX_APK_SIZE_MB в строке 15 кода на большее значение

Список файлов проекта

root@kitploit:~
.
├── unity_vulnerability_checker.py  # Основной модуль
│   ├─ Класс UnityVulnerabilityChecker - основной движок обнаружения уязвимостей
│   ├─ check_unity_vulnerability() - упрощённая функция проверки
│   ├─ batch_check() - функция пакетной проверки
│   └─ Полная логика анализа и определения версий
│
├── usage_examples.py               # Примеры использования
│   ├─ Базовые примеры использования
│   ├─ Примеры пакетной проверки
│   ├─ Примеры интеграции в платформу
│   ├─ Примеры автоматического реагирования
│   └─ Примеры интеграции Flask API
│
├── test_demo.py                    # Тестовая демонстрация
│   ├─ Тесты анализа номеров версий
│   ├─ Тесты извлечения версий
│   ├─ Тесты определения исправлений
│   ├─ Моделирование сценариев сканирования APK
│   └─ Тесты производительности
│
├── test_version_detection.py       # Модульные тесты (33 тестовых случая)
│
├── README.md                       # Полная документация (включая руководство по быстрому старту)
│
└── CLAUDE.md                       # Правила разработки

Основные функции

Проверка APK

  • Автоматическое определение приложений Unity
  • Извлечение номера версии Unity
  • Определение, затронуто ли приложение CVE-2025-59489
  • Возврат трёх типов результатов: positive (затронуто), negative (безопасно), inconclusive (требуется ручная проверка)

Пакетная обработка

  • Поддержка пакетного сканирования каталогов
  • Формирование статистических отчётов
  • Подходит для проверки приложений в больших масштабах

Лёгкая интеграция

  • Простой API-интерфейс
  • Инструмент командной строки
  • Возможность встраивания в существующие системы

Руководство по использованию

Использование командной строки

root@kitploit:~
# Проверка одного файла
python unity_vulnerability_checker.py game.apk

# Режим подробного журнала
python unity_vulnerability_checker.py game.apk -v

# Пакетная проверка каталога
python unity_vulnerability_checker.py --batch /path/to/apk/folder

# Пакетная проверка (подробный режим)
python unity_vulnerability_checker.py --batch /path/to/apk/folder -v

Пакетное сканирование и формирование отчёта

root@kitploit:~
from unity_vulnerability_checker import batch_check

results = batch_check("/path/to/apk/directory", verbose=True)

# Фильтрация затронутых приложений
vulnerable = {name: result for name, result in results.items()
              if result.is_vulnerable}

print(f"Обнаружено {len(vulnerable)} затронутых приложений")

Интеграция в систему проверки

root@kitploit:~
from unity_vulnerability_checker import UnityVulnerabilityChecker

class AppReviewSystem:
    def __init__(self):
        self.checker = UnityVulnerabilityChecker(verbose=False)

    def review_upload(self, apk_path: str) -> str:
        result = self.checker.check_apk(apk_path)

        if result.is_vulnerable:
            return "REJECT"  # Отклонить публикацию
        elif result.is_safe:
            return "APPROVE"  # Одобрить
        else:
            return "MANUAL_REVIEW"  # Ручная проверка

reviewer = AppReviewSystem()
decision = reviewer.review_upload("new_game.apk")

Интеграция Flask API

root@kitploit:~
from flask import Flask, request, jsonify
from unity_vulnerability_checker import check_unity_vulnerability

app = Flask(__name__)

@app.route('/api/scan', methods=['POST'])
def scan_apk():
    file = request.files['file']
    temp_path = f"/tmp/{file.filename}"
    file.save(temp_path)

    result = check_unity_vulnerability(temp_path)

    # Использование метода to_dict() для прямого преобразования в JSON
    response = result.to_dict()
    response["filename"] = file.filename
    response["vulnerable"] = result.is_vulnerable
    
    return jsonify(response)

Принцип обнаружения

Блок-схема логики обнаружения

root@kitploit:~
          ┌─────────────────┐
          │  Чтение APK-файла │
          └────────┬─────────┘
                   │
                   ▼
          ┌─────────────────┐
          │ Приложение Unity? │──NO──> negative
          └────────┬─────────┘
                   │ YES
                   ▼
          ┌─────────────────────┐
          │ Обнаружен патч patcher? │──YES──> negative
          └────────┬─────────────┘
                   │ NO
                   ▼
          ┌─────────────────┐
          │ Извлечение версии Unity │──Ошибка──> inconclusive
          └────────┬─────────┘
                   │ Успех
                   ▼
          ┌─────────────────┐
          │ Версия < 2017.1 ?  │──YES──> negative
          └────────┬─────────┘
                   │ NO
                   ▼
          ┌─────────────────┐
          │  Версия исправлена? │──YES──> negative
          └────────┬─────────┘
                   │ NO
                   ▼
               positive

1. Определение приложения Unity

Проверка наличия следующих признаков в APK:

  • lib/*/libunity.so - библиотека времени выполнения Unity
  • assets/bin/Data/* - файлы ресурсов Unity

2. Извлечение версии

Извлечение номера версии Unity из следующих источников:

  • libunity.so - строка версии в бинарной библиотеке
  • globalgamemanagers - файл данных Unity
  • data.unity3d - упакованные файлы ресурсов

Поддерживаемые форматы номеров версий:

  • Стандартный формат: 2019.4.40f1, 2022.3.15f1
  • Новый формат: 6000.0.23f1, 6000.2.6f2
  • Без суффикса: 2019.4.40, 6000.0.23

3. Определение уязвимости

Правила на основе официального уведомления о безопасности Unity:

  1. До Unity 2017.1 → Безопасно
  2. Исправленные версии → Безопасно
  3. Unity 2017.1–2018.4 → Невозможно определить (Unity официально не предоставила патч)
  4. Unity 2019.1+ без исправления → Затронуто (доступен патч)

Таблица исправленных версий

Практические сценарии использования

Сценарий 1: Проверка в магазине приложений

Автоматическое сканирование перед публикацией приложения, отклонение затронутых приложений

root@kitploit:~
from unity_vulnerability_checker import check_unity_vulnerability

def pre_publish_check(apk_path):
    result = check_unity_vulnerability(apk_path)
    if result.is_vulnerable:
        return {
            "approved": False, 
            "reason": f"CVE-2025-59489 vulnerability detected ({result.version})",
            "recommendation": result.recommendation
        }
    return {"approved": True, "message": result.message}

Сценарий 2: Сканирование существующих приложений

Пакетное сканирование существующей библиотеки приложений, выявление приложений, требующих обновления

root@kitploit:~
python unity_vulnerability_checker.py --batch /data/published_apps > scan_report.txt

Сценарий 3: Автоматический мониторинг

Ежедневное плановое сканирование новых загруженных приложений, автоматическое уведомление разработчиков

root@kitploit:~
import schedule
from unity_vulnerability_checker import batch_check

def daily_scan():
    results = batch_check("/data/new_uploads")
    vulnerable = [(name, result) for name, result in results.items() if result.is_vulnerable]
    if vulnerable:
        # Отправка уведомления с подробной информацией
        for name, result in vulnerable:
            send_notification(name, result.version, result.message)

schedule.every().day.at("02:00").do(daily_scan)

Сценарий 4: Формирование отчёта о безопасности

Формирование отчёта о безопасности платформы, статистика распределения уязвимостей

root@kitploit:~
from unity_vulnerability_checker import batch_check
import json

results = batch_check("/data/all_apps")
report = {
    "total": len(results),
    "vulnerable": sum(1 for r in results.values() if r.is_vulnerable),
    "safe": sum(1 for r in results.values() if r.is_safe),
    "unclear": sum(1 for r in results.values() if r.is_uncertain),
    # Подробный список
    "vulnerable_apps": [
        {"name": name, "version": r.version, "message": r.message}
        for name, r in results.items() if r.is_vulnerable
    ]
}

with open("security_report.json", "w") as f:
    json.dump(report, f, indent=2)

Сценарий 5: Интеграция CI/CD

Интеграция в процесс непрерывной интеграции, автоматическая проверка безопасности

root@kitploit:~
#!/bin/bash
# Использование в CI pipeline

python unity_vulnerability_checker.py build/output.apk
result=$(python unity_vulnerability_checker.py build/output.apk | grep "检测结果")

if echo "$result" | grep -q "positive"; then
    echo "Security check failed: CVE-2025-59489 detected"
    exit 1
fi

echo "Security check passed"

Показатели производительности

  • Проверка одного файла: 0.5 - 2 секунды (зависит от размера APK)
  • Анализ версии: < 0.01 мс (операция в памяти)
  • Пакетное сканирование: поддержка параллельной обработки (настраиваемое количество процессов)
  • Использование памяти: < 100 МБ (одна проверка)

Примечания

Ложноположительные/ложноотрицательные результаты

Возможные случаи ошибочного определения как безопасного:

  • APK обфусцирован или упакован
  • Информация о версии изменена или удалена
  • Использован нестандартный процесс сборки

Возможные случаи ошибочного определения как затронутого:

  • Номер версии имеет необычный формат, но фактически исправлен
  • Извлечена неправильная строка версии

Рекомендации по использованию

  1. Ручная проверка: для результатов inconclusive рекомендуется ручная проверка
  2. Комбинированная проверка: использовать вместе с другими инструментами сканирования безопасности
  3. Постоянное обновление: следить за обновлённым списком исправленных версий от Unity
  4. Не заменяет ручной аудит безопасности: этот инструмент служит только средством автоматического первичного скрининга

Часто задаваемые вопросы

Почему возвращается "inconclusive"?

Возможные причины:

  • APK упакован или обфусцирован
  • Информация о версии удалена
  • Файл повреждён
  • Версия Unity 2017.1-2018.4 (нет официального патча)

Рекомендация: провести ручную проверку таких приложений

Почему версии Unity 2017/2018 возвращают "inconclusive"?

Unity официально не предоставила патчи безопасности для версий 2017.1-2018.4. Эти версии действительно содержат уязвимость, но поскольку:

  • Unity прекратила поддержку этих версий
  • Нет официальных исправленных версий для обновления
  • Разработчики не могут решить проблему простым обновлением

Поэтому возвращается "inconclusive", а не "positive". Рекомендации:

  1. Связаться с разработчиком для обновления до Unity 2019.1+ и пересборки
  2. Использовать инструмент смягчения, предоставленный Unity, как временное решение
  3. Оценить риски и решить, удалять ли приложение или предоставить льготный период

Насколько точна проверка?

На основе правил официального уведомления Unity точность для стандартно собранных APK составляет > 95%. Обфусцированные или упакованные APK могут потребовать дополнительной обработки.

Какова производительность?

Проверка одного APK обычно завершается за 0.5-2 секунды, поддерживается параллельная пакетная обработка для повышения эффективности. Подробные показатели производительности см. в разделе "Показатели производительности" этого документа.

Можно ли проверять приложения iOS?

Текущая версия сосредоточена на APK для Android. Проверка файлов .ipa для iOS требует дополнительной адаптации.

Как обновить список исправленных версий?

Измените словарь PATCHED_VERSIONS в unity_vulnerability_checker.py, следите за официальными уведомлениями Unity для получения актуальной информации.

Рекомендации по безопасности

Для платформы

  1. Немедленные действия

    • Удалить затронутые приложения или ограничить загрузку
    • Уведомить разработчиков о необходимости скорейшего обновления
  2. Постоянный мониторинг

    • Создать механизм ежедневного автоматического сканирования
    • Отслеживать новые загруженные приложения
  3. Уведомление пользователей

    • Отправлять уведомления об обновлении установленным пользователям
    • Предоставить описание уязвимости и инструкции по исправлению

Для разработчиков

  1. Обновление версии Unity

    • Обновить до последней исправленной версии
    • Перекомпилировать и опубликовать приложение
  2. Временное решение (если обновление невозможно)

    • Использовать Unity Application Patcher
    • Заменить затронутую библиотеку времени выполнения
  3. Проверка исправления

    • Использовать этот инструмент для проверки новой версии
    • Убедиться, что результат больше не positive

Связанные ссылки

  • Официальное уведомление Unity: https://unity.com/security/sept-2025-01
  • Загрузка инструмента исправления: https://unity.com/security/sept-2025-01/remediation
  • Подробности CVE: https://nvd.nist.gov/vuln/detail/CVE-2025-59489
  • Технический анализ (GMO Flatt Security): https://flatt.tech/research/posts/arbitrary-code-execution-in-unity-runtime/

Техническая поддержка

Возникли проблемы?

  1. Просмотрите подробные пояснения в этом документе
  2. Запустите test_demo.py для проверки корректной работы инструмента
  3. Просмотрите usage_examples.py для поиска похожих сценариев
  4. Свяжитесь с Unity официально для получения актуальной информации

Руководство по разработке

Настройка окружения

Проект настроен с полным набором инструментов проверки качества кода:

root@kitploit:~
# Установка зависимостей
pip install ruff pre-commit

# Установка pre-commit hooks
pre-commit install

# Ручной запуск всех проверок
pre-commit run --all-files

Стандарты качества кода

Перед каждым коммитом автоматически выполняются следующие проверки:

  1. Ruff Linter - статический анализ кода Python

    • Проверка стиля кода (PEP 8)
    • Выявление потенциальных ошибок
    • Автоматическое исправление распространённых проблем
  2. Ruff Formatter - форматирование кода Python

    • Единый формат кода
    • Ограничение длины строки 88 символами
  3. Общие проверки файлов

    • Удаление пробелов в конце строк
    • Перевод строки в конце файла
    • Проверка формата YAML/TOML
    • Выявление больших файлов (>1MB)
    • Выявление маркеров конфликтов слияния
  4. Проверка формата Markdown

    • Автоматическое исправление проблем форматирования
    • Проверка языковых идентификаторов блоков кода

Файлы конфигурации

  • ruff.toml - конфигурация Ruff
  • .pre-commit-config.yaml - конфигурация pre-commit hooks

Проверка перед коммитом

Весь код обязательно должен пройти проверку ruff перед коммитом. Если проверка не пройдена, коммит будет заблокирован.

root@kitploit:~
# Если pre-commit не сработал, часть проблем будет исправлена автоматически
# После исправления необходимо повторно выполнить git add и коммит
git add .
git commit -m "your message"

Ручной запуск проверок

root@kitploit:~
# Проверка только файлов Python
ruff check *.py

# Автоматическое исправление проблем
ruff check --fix *.py

# Форматирование кода
ruff format *.py

Журнал обновлений

v1.2.0 (2025-10-13)

  • Добавлена функция обнаружения патча Unity Patcher
  • Оптимизация вывода информации

v1.1.0 (2025-10-11)

  • Исправлена ошибка логики определения версии (major >= 2019 or major >= 6000)
  • Поддержка анализа и сравнения номеров версий beta/alpha
  • Более строгие правила определения приложений Unity
  • Добавлена проверка размера файла (лимит 500MB)
  • Реализована параллельная пакетная обработка
  • Переход на стандартный модуль logging
  • Переход на argparse для анализа аргументов командной строки
  • Вынесение магических чисел в константы
  • Настройка pre-commit hooks и ruff linter
  • Весь код прошёл проверку качества ruff

v1.0.0 (2025-10-11)

  • Выпуск начальной версии
  • Поддержка проверки версий Unity 2017.1 - 6000.x
  • Поддержка функции пакетного сканирования
  • Интерфейс командной строки
  • На основе официального уведомления Unity CVE-2025-59489

Лицензия

Этот инструмент предназначен только для аудита безопасности и проверки соответствия.

Скачать инструмент
Если игра имеет это разрешениеЗлоумышленник может
📸 КамераСкрытно фотографировать вас
🎤 МикрофонПодслушивать вас
📍 ГеолокацияОтслеживать вас
📱 КонтактыПохищать вашу адресную книгу
💾 ХранилищеЧитать/удалять ваши файлы
💰 ПлатежиСовершать мошеннические внутриигровые платежи
🔐 Учётная записьПохищать игровые учётные записи
Версия UnityМинимальная исправленная версияСтатус
6000.36000.3.0b4✅ Патч доступен
6000.26000.2.6f2✅ Патч доступен
6000.0 LTS6000.0.58f2✅ Патч доступен
2022.32022.3.62f2✅ Патч доступен
2021.32021.3.45f2✅ Патч доступен
2020.x2020.1.18f1+✅ Патч доступен
2019.x2019.1.15f1+✅ Патч доступен
2017-2018N/A⚠️ Нет официального патча, рекомендуется обновить версию