
ماسح آلي يكتشف ثغرة حقن وقت تشغيل Unity CVE-2025-59489 في ملفات APK الخاصة بنظام Android من خلال استخراج إصدار Unity والتحقق منه مقابل الإصدارات المُصححة، مع معالجة دفعات وتكامل مع CI/CD.
أداة اكتشاف تلقائي لثغرة حقن Unity Runtime مخصصة لمنصات ألعاب Android.
ملخص في جملة واحدة: يمكن للمهاجم السيطرة الكاملة على لعبة/تطبيق Unity المتأثر، والحصول على جميع صلاحيات هذا التطبيق.
نقطة أساسية: على Android، يمكن للتطبيق الضار اختطاف الصلاحيات التي حصل عليها تطبيق Unity
نقطة أساسية: على Windows، إذا كانت اللعبة مسجلة بمعالج URI مخصص، فإن النقر على رابط مخصص يمكن أن يؤدي إلى تشغيل الثغرة
| إذا كانت اللعبة لديها هذه الصلاحية | يمكن للمهاجم |
|---|---|
| 📸 الكاميرا | التصوير بكاميرتك |
| 🎤 الميكروفون | التنصت عليك |
| 📍 الموقع | تتبعك |
| 📱 جهات الاتصال | سرقة دفتر عناوينك |
| 💾 التخزين | قراءة/حذف ملفاتك |
| 💰 الدفع | سرقة مدفوعات داخل اللعبة |
| 🔐 الحساب | سرقة حساب اللعبة |
خبر جيد: لا يمكن للمهاجم تجاوز حدود صلاحيات التطبيق نفسه
خبر سيئ: العديد من الألعاب تطلب صلاحيات واسعة (الكاميرا، الميكروفون، التخزين، الموقع، إلخ)، ويمكن للمهاجم استغلال هذه الصلاحيات بالكامل
كمنصة ألعاب 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: استخدام حقل الحالة
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 من الكود إلى قيمة أكبر
.
├── 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 # معايير التطوير
# فحص ملف واحد
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
from unity_vulnerability_checker import batch_check