# iOS App Extensions {{#include ../../banners/hacktricks-training.md}} Οι επεκτάσεις εφαρμογών ενισχύουν τη λειτουργικότητα των εφαρμογών επιτρέποντάς τους να αλληλεπιδρούν με άλλες εφαρμογές ή το σύστημα, παρέχοντας προσαρμοσμένες δυνατότητες ή περιεχόμενο. Αυτές οι επεκτάσεις περιλαμβάνουν: - **Custom Keyboard**: Προσφέρει ένα μοναδικό πληκτρολόγιο σε όλες τις εφαρμογές, αντικαθιστώντας το προεπιλεγμένο πληκτρολόγιο iOS. - **Share**: Ενεργοποιεί την κοινή χρήση σε κοινωνικά δίκτυα ή με άλλους απευθείας. - **Today (Widgets)**: Παρέχει περιεχόμενο ή εκτελεί εργασίες γρήγορα από την προβολή Σήμερα του Κέντρου Ειδοποιήσεων. Όταν ένας χρήστης αλληλεπιδρά με αυτές τις επεκτάσεις, όπως η κοινή χρήση κειμένου από μια εφαρμογή φιλοξενίας, η επέκταση επεξεργάζεται αυτή την είσοδο εντός του πλαισίου της, αξιοποιώντας τις κοινές πληροφορίες για να εκτελέσει την εργασία της, όπως αναφέρεται στην τεκμηρίωση της Apple. ### **Security Considerations** Βασικές πτυχές ασφαλείας περιλαμβάνουν: - Οι επεκτάσεις και οι εφαρμογές που τις περιέχουν επικοινωνούν μέσω δια-διαδικασιακής επικοινωνίας, όχι άμεσα. - Το **Today widget** είναι μοναδικό καθώς μπορεί να ζητήσει από την εφαρμογή του να ανοίξει μέσω μιας συγκεκριμένης μεθόδου. - Η πρόσβαση σε κοινά δεδομένα επιτρέπεται εντός ενός ιδιωτικού κοντέινερ, αλλά η άμεση πρόσβαση περιορίζεται. - Ορισμένα APIs, συμπεριλαμβανομένου του HealthKit, είναι εκτός ορίων για τις επεκτάσεις εφαρμογών, οι οποίες επίσης δεν μπορούν να ξεκινήσουν μακροχρόνιες εργασίες, να αποκτήσουν πρόσβαση στην κάμερα ή το μικρόφωνο, εκτός από τις επεκτάσεις iMessage. ### Static Analysis #### **Identifying App Extensions** Για να βρείτε επεκτάσεις εφαρμογών στον πηγαίο κώδικα, αναζητήστε το `NSExtensionPointIdentifier` στο Xcode ή ελέγξτε το πακέτο της εφαρμογής για αρχεία `.appex` που υποδεικνύουν επεκτάσεις. Χωρίς πηγαίο κώδικα, χρησιμοποιήστε grep ή SSH για να εντοπίσετε αυτούς τους αναγνωριστές εντός του πακέτου της εφαρμογής. #### **Supported Data Types** Ελέγξτε το αρχείο `Info.plist` μιας επέκτασης για το `NSExtensionActivationRule` για να προσδιορίσετε τους υποστηριζόμενους τύπους δεδομένων. Αυτή η ρύθμιση διασφαλίζει ότι μόνο οι συμβατοί τύποι δεδομένων ενεργοποιούν την επέκταση σε εφαρμογές φιλοξενίας. #### **Data Sharing** Η κοινή χρήση δεδομένων μεταξύ μιας εφαρμογής και της επέκτασής της απαιτεί ένα κοινό κοντέινερ, που ρυθμίζεται μέσω "App Groups" και προσπελάζεται μέσω `NSUserDefaults`. Αυτός ο κοινός χώρος είναι απαραίτητος για τις μεταφορές στο παρασκήνιο που ξεκινούν οι επεκτάσεις. #### **Restricting Extensions** Οι εφαρμογές μπορούν να περιορίσουν ορισμένους τύπους επεκτάσεων, ιδιαίτερα τα προσαρμοσμένα πληκτρολόγια, διασφαλίζοντας ότι η διαχείριση ευαίσθητων δεδομένων ευθυγραμμίζεται με τα πρωτόκολλα ασφαλείας. ### Dynamic Analysis Η δυναμική ανάλυση περιλαμβάνει: - **Inspecting Shared Items**: Hook into `NSExtensionContext - inputItems` για να δείτε τους τύπους και τις προελεύσεις των κοινών δεδομένων. - **Identifying Extensions**: Ανακαλύψτε ποιες επεκτάσεις επεξεργάζονται τα δεδομένα σας παρακολουθώντας τους εσωτερικούς μηχανισμούς, όπως το `NSXPCConnection`. Εργαλεία όπως το `frida-trace` μπορούν να βοηθήσουν στην κατανόηση των υποκείμενων διαδικασιών, ειδικά για εκείνους που ενδιαφέρονται για τις τεχνικές λεπτομέρειες της δια-διαδικασιακής επικοινωνίας. ## References - [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}}