- कई ऐप्स AI मॉडल को सीधे डिवाइस में इंटीग्रेट कर रहे हैं। यह तब फ़ायदेमंद होता है जब तेज़ inference और offline access महत्वपूर्ण हों
- लेकिन डिवाइस के अंदर मॉडल फ़ाइल मौजूद होने का मतलब यह भी है कि उपयोगकर्ता उस फ़ाइल को निकालकर उसका विश्लेषण कर सकता है
लक्ष्य
- Microsoft की Seeing AI ऐप दृष्टिबाधित लोगों के लिए एक "बोलने वाला कैमरा" है, जो वस्तुओं, दस्तावेज़ों, मुद्रा आदि को पहचानकर आवाज़ में उनका वर्णन करती है
- खास तौर पर इसका currency recognition फ़ीचर 17 से अधिक मुद्राओं को सपोर्ट करता है और 225 अलग-अलग बैंकनोट्स को पहचानता है
- ऐप के distribution format APK फ़ाइल के अंदर मॉडल शामिल है, लेकिन यह encrypted फ़ाइल (
currency) के रूप में मौजूद है
- अगर फ़ाइल केवल साधारण रूप से encrypted है, तो ऐप चलने के दौरान memory या decryption process को trace करके फ़ाइल निकाली जा सकती है
शुरुआती जाँच
- Android ऐप्स APK फ़ाइलों के रूप में वितरित होती हैं, जो ऐप चलाने के लिए ज़रूरी सब कुछ रखने वाला archive होता है
- AI मॉडल आम तौर पर इन्हीं assets के साथ स्टोर किए जाते हैं
apktool का उपयोग करके APK को decompile किया जा सकता है और उसकी संरचना का विश्लेषण किया जा सकता है
assets फ़ोल्डर में currency नाम की फ़ाइल मिली, लेकिन वह encrypted थी
आगे बढ़ना
- ऐप
currency फ़ाइल को कैसे decrypt करती है, इसका reverse engineering किया जा सकता है
- पुष्टि हुई कि
com.microsoft.seeingai में TensorFlow Lite का उपयोग होता है
org.tensorflow.lite.NativeInterpreterWrapper का उपयोग करके *.tflite मॉडल लोड किए जा सकते हैं
Frida का उपयोग
- Frida एक dynamic instrumentation tool है जो लगभग किसी भी operating system पर चल सकता है और running process से जुड़कर उसके व्यवहार को बदल सकता है
- process के चलने के दौरान उससे जुड़कर method calls को trace किया जा सकता है, arguments और return values देखी जा सकती हैं, या method की सामग्री को मनचाहे logic से overwrite किया जा सकता है
- उदाहरण:
checkKey(key) को बदलकर हमेशा true लौटाने के लिए मजबूर किया जा सकता है
- Objection, Frida scripts का एक CLI tool है, जो mobile app research में उपयोगी है
org.tensorflow.lite.NativeInterpreterWrapper के function calls को trace करके मॉडल को disk पर dump किया गया
- ऐप चलने पर
.createModelWithBuffer(java.nio.ByteBuffer, long) कॉल होता है, और उस समय पास किया गया ByteBuffer decrypt किया गया .tflite मॉडल होने की बहुत संभावना है
- hooking के ज़रिए इस method को dump करने वाले कोड से बदल दिया जाए, तो उस मॉडल को disk पर सेव किया जा सकता है
adb pull कमांड से निकाले गए .tflite मॉडल (currency.tflite) को लोकल डिवाइस पर लाया गया
- Netron जैसे टूल में लोड करके यह सत्यापित किया गया कि यह वास्तव में TensorFlow Lite मॉडल है या नहीं (layers, weights, bias आदि)
- currency recognition मॉडल का पूरा dump सफलतापूर्वक किया गया
CTRL + C; CTRL + V
- TensorFlow Lite का उपयोग करने वाले ऐप्स पर यह हमला लागू किया जा सकता है
- उदाहरण के लिए Adobe Scan एक शानदार ऐप है, जिसे मैं वास्तव में अक्सर इस्तेमाल करता हूँ, और फ़ोन कैमरा से दस्तावेज़ स्कैन करना इसका सबसे अच्छा फ़ीचर है
सावधानियाँ
- निकाले गए मॉडल copyright के अंतर्गत आते हैं, इसलिए वैध अनुमति के बिना उनका अनधिकृत उपयोग/संशोधन नहीं करना चाहिए
- इस पोस्ट में बताई गई विधि शोध उद्देश्य के लिए है, और वास्तविक उपयोग में संबंधित क़ानूनों तथा intellectual property से जुड़े मुद्दों पर विचार करना ज़रूरी है
3 टिप्पणियां
वाह, मॉडल को भी reverse engineering,,
वाह, apk फ़ाइल से weight फ़ाइल निकालना??
भले ही यह किसी खास लाइब्रेरी तक सीमित हो, फिर भी कमाल है..
Hacker News की राय
tfliteपर विचार कर रहे हैं, उनके लिए model को Firebase पर host करना और काम पूरा होने के बाद उसे delete कर देना अधिक सुरक्षित तरीका है