macOS XPC Connecting Process Check
Έλεγχος Σύνδεσης Διεργασίας XPC
Όταν γίνεται μια σύνδεση σε ένα XPC service, ο διακομιστής θα ελέγξει αν η σύνδεση επιτρέπεται. Αυτοί είναι οι έλεγχοι που συνήθως πραγματοποιούνται:
Έλεγχος αν η συνδεόμενη διεργασία έχει υπογραφεί με ένα Apple-signed πιστοποιητικό (που δίνεται μόνο από την Apple).
Εάν αυτό δεν επαληθευτεί, ένας επιτιθέμενος μπορεί να δημιουργήσει ένα ψεύτικο πιστοποιητικό για να ταιριάξει με οποιονδήποτε άλλο έλεγχο.
Έλεγχος αν η συνδεόμενη διεργασία έχει υπογραφεί με το πιστοποιητικό του οργανισμού (έλεγχος ταυτότητας του ομάδας).
Εάν αυτό δεν επαληθευτεί, μπορεί να χρησιμοποιηθεί οποιοδήποτε πιστοποιητικό ανάπτυξης από την Apple για την υπογραφή και τη σύνδεση με την υπηρεσία.
Έλεγχος αν η συνδεόμενη διεργασία περιέχει έναν κατάλληλο αναγνωριστικό πακέτου.
Εάν αυτό δεν επαληθευτεί, οποιοδήποτε εργαλείο που έχει υπογραφεί από τον ίδιο οργανισμό μπορεί να χρησιμοποιηθεί για την αλληλεπίδραση με την XPC υπηρεσία.
(4 ή 5) Έλεγχος αν η συνδεόμενη διεργασία έχει έναν κατάλληλο αριθμό έκδοσης λογισμικού.
Εάν αυτό δεν επαληθευτεί, μπορεί να χρησιμοποιηθεί μια παλιά, ευάλωτη πελάτης που είναι ευάλωτη στην ενέργεια εισαγωγής διεργασίας για να συνδεθεί με την XPC υπηρεσία, ακόμα και με τους άλλους ελέγχους που έχουν γίνει.
(4 ή 5) Έλεγχος αν η συνδεόμενη διεργασία έχει ενεργοποιημένο το hardened runtime χωρίς επικίνδυνα entitlements (όπως αυτά που επιτρέπουν τη φόρτωση αυθαίρετων βιβλιοθηκών ή τη χρήση μεταβλητών περιβάλλοντος DYLD)
Εάν αυτό δεν επαληθευτεί, ο πελάτης μπορεί να είναι ευάλωτος σε εισαγωγή κώδικα
Έλεγχος αν η συνδεόμενη διεργασία έχει ένα entitlement που της επιτρέπει να συνδεθεί στην υπηρεσία. Αυτό ισχύει για τα δυαδικά αρχεία της Apple.
Η επαλήθευση πρέπει να γίνεται βάσει του αναγνωριστικού ελέγχου του πελάτη αντί για το αναγνωριστικό διεργασίας (PID), καθώς το πρώτο αποτρέπει τις επιθέσεις επαναχρησιμοποίησης του PID.
Οι προγραμματιστές σπάνια χρησιμοποιούν την κλήση API του αναγνωριστικού ελέγχου καθώς είναι ιδιωτική, οπότε η Apple μπορεί να την αλλάξει ανά πάσα στιγμή. Επιπλέον, η χρήση ιδιωτικής API δεν επιτρέπεται σε εφαρμογές του Mac App Store.
Εάν χρησιμοποιηθεί η μέθοδος
processIdentifier
, μπορεί να είναι ευάλωτηΠρέπει να χρησιμοποιηθεί η μέθοδος
xpc_dictionary_get_audit_token
αντί τηςxpc_connection_get_audit_token
, καθώς η τελευταία μπορεί επίσης να είναι ευάλωτη σε συγκεκριμένες καταστάσεις.
Επιθέσεις Επικοινωνίας
Για περισσότερες πληροφορίες σχετικά με την επίθεση επαναχρησιμοποίησης του PID, ελέγξτε:
Για περισσότερες πληροφορ
Το αντικείμενο NSXPCConnection έχει μια ιδιωτική ιδιότητα auditToken
(αυτή που πρέπει να χρησιμοποιηθεί αλλά μπορεί να αλλάξει) και μια δημόσια ιδιότητα processIdentifier
(αυτή που δεν πρέπει να χρησιμοποιηθεί).
Η διαδικασία σύνδεσης μπορεί να επαληθευτεί με κάτι όπως:
Αν ένας προγραμματιστής δεν θέλει να ελέγξει την έκδοση του πελάτη, μπορεί τουλάχιστον να ελέγξει ότι ο πελάτης δεν είναι ευάλωτος στην ενέργεια εισαγωγής διεργασίας:
Last updated