# iOS App Extensions {{#include ../../banners/hacktricks-training.md}} ऐप एक्सटेंशन ऐप्स की कार्यक्षमता को बढ़ाते हैं, जिससे उन्हें अन्य ऐप्स या सिस्टम के साथ इंटरैक्ट करने की अनुमति मिलती है, कस्टम सुविधाएँ या सामग्री प्रदान करते हैं। इन एक्सटेंशनों में शामिल हैं: - **कस्टम कीबोर्ड**: सभी ऐप्स में एक अद्वितीय कीबोर्ड प्रदान करता है, जो डिफ़ॉल्ट iOS कीबोर्ड को बदलता है। - **शेयर**: सामाजिक नेटवर्क या दूसरों के साथ सीधे साझा करने की अनुमति देता है। - **आज (विजेट)**: सूचना केंद्र के आज दृश्य से जल्दी से सामग्री प्रदान करता है या कार्य करता है। जब एक उपयोगकर्ता इन एक्सटेंशनों के साथ संलग्न होता है, जैसे कि एक होस्ट ऐप से पाठ साझा करना, तो एक्सटेंशन इस इनपुट को अपने संदर्भ में संसाधित करता है, साझा की गई जानकारी का उपयोग करके अपना कार्य करता है, जैसा कि एप्पल के दस्तावेज़ में विस्तृत किया गया है। ### **सुरक्षा विचार** मुख्य सुरक्षा पहलुओं में शामिल हैं: - एक्सटेंशन और उनके समाहित ऐप्स इंटर-प्रोसेस संचार के माध्यम से संवाद करते हैं, सीधे नहीं। - **आज विजेट** अद्वितीय है क्योंकि यह एक विशिष्ट विधि के माध्यम से अपने ऐप को खोलने का अनुरोध कर सकता है। - साझा डेटा तक पहुँच एक निजी कंटेनर के भीतर अनुमति है, लेकिन सीधे पहुँच प्रतिबंधित है। - कुछ APIs, जैसे कि HealthKit, ऐप एक्सटेंशनों के लिए प्रतिबंधित हैं, जो लंबे समय तक चलने वाले कार्यों को शुरू नहीं कर सकते, कैमरा या माइक्रोफोन तक पहुँच नहीं कर सकते, सिवाय iMessage एक्सटेंशनों के। ### स्थैतिक विश्लेषण #### **ऐप एक्सटेंशनों की पहचान करना** स्रोत कोड में ऐप एक्सटेंशनों को खोजने के लिए, Xcode में `NSExtensionPointIdentifier` के लिए खोजें या एक्सटेंशन को इंगित करने वाले `.appex` फ़ाइलों के लिए ऐप बंडल का निरीक्षण करें। बिना स्रोत कोड के, इन पहचानकर्ताओं को ऐप बंडल के भीतर खोजने के लिए grep या SSH का उपयोग करें। #### **समर्थित डेटा प्रकार** समर्थित डेटा प्रकारों की पहचान के लिए एक्सटेंशन के `Info.plist` फ़ाइल में `NSExtensionActivationRule` की जाँच करें। यह सेटअप सुनिश्चित करता है कि केवल संगत डेटा प्रकार होस्ट ऐप्स में एक्सटेंशन को सक्रिय करते हैं। #### **डेटा साझा करना** एक ऐप और उसके एक्सटेंशन के बीच डेटा साझा करने के लिए एक साझा कंटेनर की आवश्यकता होती है, जिसे "ऐप समूहों" के माध्यम से सेटअप किया जाता है और `NSUserDefaults` के माध्यम से पहुँचा जाता है। यह साझा स्थान एक्सटेंशनों द्वारा शुरू किए गए बैकग्राउंड ट्रांसफर के लिए आवश्यक है। #### **एक्सटेंशनों को प्रतिबंधित करना** ऐप्स कुछ एक्सटेंशन प्रकारों, विशेष रूप से कस्टम कीबोर्ड, को प्रतिबंधित कर सकते हैं, यह सुनिश्चित करते हुए कि संवेदनशील डेटा हैंडलिंग सुरक्षा प्रोटोकॉल के साथ मेल खाती है। ### गतिशील विश्लेषण गतिशील विश्लेषण में शामिल हैं: - **साझा आइटम का निरीक्षण करना**: साझा डेटा प्रकारों और उत्पत्ति को देखने के लिए `NSExtensionContext - inputItems` में हुक करें। - **एक्सटेंशनों की पहचान करना**: आंतरिक तंत्र, जैसे `NSXPCConnection` को देख कर यह पता करें कि कौन से एक्सटेंशन आपके डेटा को संसाधित करते हैं। `frida-trace` जैसे उपकरण अंतर्निहित प्रक्रियाओं को समझने में मदद कर सकते हैं, विशेष रूप से उन लोगों के लिए जो इंटर-प्रोसेस संचार के तकनीकी विवरण में रुचि रखते हैं। ## संदर्भ - [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/) - [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/) {{#include ../../banners/hacktricks-training.md}}