55 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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}}