
Scanner automatizado que detecta a vulnerabilidade de injeção em runtime Unity CVE-2025-59489 em APKs Android, extraindo a versão do Unity e verificando-a em relação às versões corrigidas, com processamento em lote e integração CI/CD.
Ferramenta automatizada de detecção da vulnerabilidade de injeção no Unity Runtime, específica para plataformas de jogos Android.
Resumo em uma frase: Um atacante pode obter controle total do jogo/aplicativo Unity afetado, obtendo todas as permissões desse aplicativo.
Ponto-chave: No Android, um aplicativo malicioso pode sequestrar as permissões já obtidas pelo aplicativo Unity
Ponto-chave: No Windows, se o jogo registrou um manipulador de URI personalizado, clicar em um link especialmente criado pode acionar a vulnerabilidade
| Se o jogo tiver esta permissão | O atacante pode |
|---|---|
| 📸 Câmera | Espionar você |
| 🎤 Microfone | Ouvir você |
| 📍 Localização | Rastrear você |
| 📱 Contatos | Roubar sua agenda |
| 💾 Armazenamento | Ler/excluir seus arquivos |
| 💰 Pagamento | Fazer cobranças no jogo |
| 🔐 Conta | Roubar a conta do jogo |
Boas notícias: O atacante não consegue ultrapassar os limites de permissão do próprio aplicativo
Más notícias: Muitos jogos exigem muitas permissões (câmera, microfone, armazenamento, localização, etc.), e o atacante pode explorar totalmente essas permissões
Como operador de uma plataforma de jogos Android, as piores consequências:
[Fonte: Aviso oficial de segurança da Unity, análise técnica da GMO Flatt Security]
# Apenas a biblioteca padrão do Python 3.7+ é necessária, sem dependências adicionais
python3 --version # Confirme a versão do Python
# Passo 1: Execute o teste
python test_demo.py
# Passo 2: Detecte um único APK
python unity_vulnerability_checker.py your_game.apk
# Passo 3: Detecção em lote
python unity_vulnerability_checker.py --batch /path/to/apks
# Passo 4: Veja exemplos de uso
python usage_examples.py
from unity_vulnerability_checker import check_unity_vulnerability
# Detecta um único arquivo APK
result = check_unity_vulnerability("your_game.apk")
# Forma 1: Use propriedades convenientes
if result.is_vulnerable:
print(f"⚠️ Aplicativo afetado! ({result.version})")
print(f"Recomendação: {result.recommendation}")
elif result.is_safe:
print(f"✅ Aplicativo seguro")
print(f"Motivo: {result.message}")
else:
print(f"❓ Requer revisão manual")
print(f"Motivo: {result.message}")
# Forma 2: Use o campo status
if result.status == "positive":
print(f"Afetado: {result.version}")
from unity_vulnerability_checker import batch_check
# Escaneia um diretório em lote
results = batch_check("/path/to/apk/folder")
# Filtra aplicativos afetados
vulnerable_apps = [
(name, result)
for name, result in results.items()
if result.is_vulnerable
]
print(f"Encontrados {len(vulnerable_apps)} aplicativos afetados")
for name, result in vulnerable_apps:
print(f" - {name}: {result.version}")
from unity_vulnerability_checker import UnityVulnerabilityChecker
class MyPlatform:
"""Seu sistema de plataforma de jogos"""
def __init__(self):
self.checker = UnityVulnerabilityChecker()
def check_new_upload(self, apk_path: str) -> bool:
"""Verifica um APK recém-enviado, retorna se pode ser publicado"""
result = self.checker.check_apk(apk_path)
if result.is_vulnerable:
# Afetado - recusar publicação
self.notify_developer(
f"Seu aplicativo é afetado pela vulnerabilidade Unity\n"
f"Versão: {result.version}\n"
f"Recomendação: {result.recommendation}"
)
return False
elif result.is_safe:
# Seguro - aprovar publicação
return True
else:
# Indeterminado - revisão manual
self.queue_manual_review(apk_path, result.message)
return False
def notify_developer(self, message: str):
"""Notifica o desenvolvedor (implemente sua lógica de notificação)"""
pass
def queue_manual_review(self, apk_path: str):
"""Adiciona à fila de revisão manual (implemente sua lógica)"""
pass
A ferramenta retorna três tipos de resultados:
Exemplo de saída (formato conciso de linha única):
# Aplicativo afetado
⚠️ Este aplicativo é afetado pela CVE-2025-59489 (Unity 2019.2.6f1)
# Aplicativo seguro (3 casos)
✅ Este aplicativo é seguro - não é um aplicativo Unity
✅ Este aplicativo é seguro - já corrigido com a ferramenta Unity patcher
✅ Este aplicativo é seguro - versão corrigida (2019.4.41f1)
# Indeterminado
❓ Indeterminado - é um aplicativo Unity, mas não foi possível extrair a versão, pode estar empacotado ou ofuscado, recomendamos revisão manual
⚠️ Arquivo grande demais para processar (1500.0MB, limite 1024MB) - altere MAX_APK_SIZE_MB na linha 15 do código para um valor maior