
स्वचालित स्कैनर जो Android APK में Unity रनटाइम इंजेक्शन भेद्यता CVE-2025-59489 का पता लगाता है, Unity संस्करण निकालकर और पैच किए गए संस्करणों के विरुद्ध जाँच करके, बैच प्रोसेसिंग और CI/CD एकीकरण के साथ।
Android गेम प्लेटफ़ॉर्म के लिए विशेष Unity Runtime इंजेक्शन भेद्यता स्वचालित जांच उपकरण।
एक पंक्ति में सारांश: हमलावर प्रभावित 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) - कोड की पंक्ति 15 में MAX_APK_SIZE_MB को बड़ा मान बदलें
.
├── 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
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)} प्रभावित ऐप्स मिले")
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")
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)
┌─────────────────┐
│ APK फ़ाइल पढ़ें │
└────────┬─────────┘
│
▼
┌─────────────────┐
│ क्या यह Unity ऐप है? │──NO──> negative
└────────┬─────────┘
│ YES
▼
┌─────────────────────┐
│ patcher पैच मिला? │──YES──> negative
└────────┬─────────────┘
│ NO
▼
┌─────────────────┐
│ Unity संस्करण निकालें │──विफल──> inconclusive
└────────┬─────────┘
│ सफल
▼
┌─────────────────┐
│ संस्करण < 2017.1 ? │──YES──> negative
└────────┬─────────┘
│ NO
▼
┌─────────────────┐
│ संस्करण ठीक किया गया? │──YES──> negative
└────────┬─────────┘
│ NO
▼
positive
APK में निम्नलिखित विशेषताओं की उपस्थिति की जाँच करें:
lib/*/libunity.so - Unity रनटाइम लाइब्रेरीassets/bin/Data/* - Unity संसाधन फ़ाइलेंनिम्नलिखित स्थानों से Unity संस्करण संख्या निकालें:
समर्थित संस्करण संख्या प्रारूप:
2019.4.40f1, 2022.3.15f16000.0.23f1, 6000.2.6f22019.4.40, 6000.0.23Unity आधिकारिक सुरक्षा घोषणा के नियमों पर आधारित:
ऐप प्रकाशन से पहले स्वचालित स्कैन, प्रभावित ऐप्स के प्रकाशन को अस्वीकार करें
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}
मौजूदा ऐप लाइब्रेरी को बैच स्कैन करें, अद्यतन की आवश्यकता वाले ऐप्स की पहचान करें
python unity_vulnerability_checker.py --batch /data/published_apps > scan_report.txt
प्रतिदिन निर्धारित समय पर नए अपलोड किए गए ऐप्स को स्कैन करें, डेवलपर्स को स्वचालित रूप से सूचित करें
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)
प्लेटफ़ॉर्म सुरक्षा रिपोर्ट उत्पन्न करें, भेद्यता वितरण की सांख्यिकी
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)
निरंतर एकीकरण प्रक्रिया में एकीकृत करें, स्वचालित सुरक्षा जांच
#!/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"
सुरक्षित के रूप में गलत निर्णय की संभावित स्थितियाँ:
प्रभावित के रूप में गलत निर्णय की संभावित स्थितियाँ:
inconclusive परिणामों के लिए, मैन्युअल समीक्षा की सलाह दी जाती हैसंभावित कारण:
सुझाव: ऐसे ऐप्स के लिए मैन्युअल समीक्षा करें
Unity आधिकारिक रूप से 2017.1-2018.4 संस्करणों के लिए सुरक्षा पैच प्रदान नहीं करता। ये संस्करण वास्तव में भेद्यता रखते हैं, लेकिन:
इसलिए "positive" के बजाय "inconclusive" लौटाया जाता है, सुझाव:
Unity आधिकारिक घोषणा के नियमों पर आधारित, मानक निर्माण वाले APK के लिए सटीकता > 95%। अस्पष्ट या पैक किए गए APK को अतिरिक्त प्रोसेसिंग की आवश्यकता हो सकती है।
एकल APK जांच आमतौर पर 0.5-2 सेकंड में पूरी होती है, दक्षता बढ़ाने के लिए समानांतर बैच प्रोसेसिंग समर्थित है। विस्तृत प्रदर्शन मेट्रिक्स इस दस्तावेज़ के "प्रदर्शन मेट्रिक्स" अनुभाग में देखें।
वर्तमान संस्करण Android APK पर केंद्रित है। iOS .ipa फ़ाइल जांच के लिए अतिरिक्त अनुकूलन की आवश्यकता है।
unity_vulnerability_checker.py में PATCHED_VERSIONS शब्दकोश को संशोधित करें, नवीनतम जानकारी के लिए Unity आधिकारिक घोषणा पर ध्यान दें।
तुरंत कार्रवाई करें
निरंतर निगरानी
उपयोगकर्ता सूचना
Unity संस्करण अपग्रेड करें
अस्थायी समाधान (अपग्रेड नहीं कर सकते)
| यदि गेम के पास यह अनुमति है | हमलावर यह कर सकता है |
|---|
| 📸 कैमरा | आपकी गुप्त तस्वीरें ले सकता है |
| 🎤 माइक्रोफ़ोन | आपकी बातें सुन सकता है |
| 📍 स्थान | आपको ट्रैक कर सकता है |
| 📱 संपर्क | आपकी संपर्क सूची चुरा सकता है |
| 💾 स्टोरेज | आपकी फ़ाइलें पढ़/हटा सकता है |
| 💰 भुगतान | गेम के भीतर भुगतान धोखाधड़ी कर सकता है |
| 🔐 खाता | गेम खाता चुरा सकता है |
| Unity संस्करण | न्यूनतम ठीक किया गया संस्करण | स्थिति |
|---|
| 6000.3 | 6000.3.0b4 | ✅ पैच उपलब्ध |
| 6000.2 | 6000.2.6f2 | ✅ पैच उपलब्ध |
| 6000.0 LTS | 6000.0.58f2 | ✅ पैच उपलब्ध |
| 2022.3 | 2022.3.62f2 | ✅ पैच उपलब्ध |
| 2021.3 | 2021.3.45f2 | ✅ पैच उपलब्ध |
| 2020.x | 2020.1.18f1+ | ✅ पैच उपलब्ध |
| 2019.x | 2019.1.15f1+ | ✅ पैच उपलब्ध |
| 2017-2018 | N/A | ⚠️ कोई आधिकारिक पैच नहीं, संस्करण अपग्रेड करने की सलाह |