mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
55 lines
5.9 KiB
Markdown
55 lines
5.9 KiB
Markdown
# 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}}
|