macOS Gatekeeper / Quarantine / XProtect
Gatekeeper
Το Gatekeeper είναι μια λειτουργία ασφαλείας που αναπτύχθηκε για τα λειτουργικά συστήματα Mac, σχεδιασμένη για να εξασφαλίζει ότι οι χρήστες εκτελούν μόνο αξιόπιστο λογισμικό στα συστήματά τους. Λειτουργεί με τον τρόπο της επικύρωσης του λογισμικού που ένας χρήστης κατεβάζει και προσπαθεί να ανοίξει από πηγές έξω από το App Store, όπως μια εφαρμογή, ένα πρόσθετο ή ένα πακέτο εγκατάστασης.
Η κύρια μηχανή του Gatekeeper βρίσκεται στη διαδικασία της επαλήθευσης. Ελέγχει αν το κατεβασμένο λογισμικό είναι υπογεγραμμένο από αναγνωρισμένο προγραμματιστή, εξασφαλίζοντας την αυθεντικότητα του λογισμικού. Επιπλέον, ελέγχει εάν το λογισμικό έχει επικυρωθεί από την Apple, επιβεβαιώνοντας ότι είναι απαλλαγμένο από γνωστό κακόβουλο περιεχόμενο και δεν έχει τροποποιηθεί μετά την επικύρωση.
Επιπλέον, το Gatekeeper ενισχύει τον έλεγχο και την ασφάλεια του χρήστη με το να ζητά από τους χρήστες να εγκρίνουν το άνοιγμα του κατεβασμένου λογισμικού για πρώτη φορά. Αυτός ο προστατευτικός μηχανισμός βοηθά στο να αποτραπεί οι χρήστες από το να εκτελέσουν κατά λάθος πιθανώς επικίνδυνο εκτελέσιμο κώδικα που θα μπορούσαν να έχουν παρεξηγήσει ως ακίνδυνο αρχείο δεδομένων.
Υπογραφές Εφαρμογών
Οι υπογραφές εφαρμογών, επίσης γνωστές ως υπογραφές κώδικα, είναι ένα κρίσιμο στοιχείο της υποδομής ασφαλείας της Apple. Χρησιμοποιούνται για το έλεγχο της ταυτότητας του συγγραφέα του λογισμικοϋ (του προγραμματιστή) και για να εξασφαλίσουν ότι ο κώδικας δεν έχει τροποποιηθεί από την τελευταία υπογραφή.
Έτσι λειτουργεί:
Υπογραφή της Εφαρμογής: Όταν ένας προγραμματιστής είναι έτοιμος να διανείμει την εφαρμογή του, υπογράφει την εφαρμογή χρησιμοποιώντας έναν ιδιωτικό κλειδί. Αυτό το ιδιωτικό κλειδί συσχετίζεται με ένα πιστοποιητικό που εκδίδει η Apple στον προγραμματιστή όταν εγγράφεται στο Apple Developer Program. Η διαδικασία υπογραφής περιλαμβάνει τη δημιουργία ενός κρυπτογραφικού κατακερματισμού όλων των τμημάτων της εφαρμογής και την κρυπτογράφηση αυτού του κατακερματισμού με το ιδιωτικό κλειδί του προγραμματιστή.
Διανομή της Εφαρμογής: Η υπογεγραμμένη εφαρμογή διανέμεται στους χρήστες μαζί με το πιστοποιητικό του προγραμματιστή, που περιέχει το αντίστοιχο δημόσιο κλειδί.
Επαλήθευση της Εφαρμογής: Όταν ένας χρήστης κατεβάζει και προσπαθεί να εκτελέσει την εφαρμογή, το λειτουργικό σύστημα Mac χρησιμοποιεί το δημόσιο κλειδί από το πιστοποιητικό του προγραμματιστή για να αποκρυπτογραφήσει τον κατακερματισμό. Στη συνέχεια, υπολογίζει ξανά τον κατακερματισμό με βάση την τρέχουσα κατάσταση της εφαρμογής και συγκρίνει αυτόν με τον αποκρυπτογραφημένο κατακερματισμό. Αν ταιριάζουν, σημαίνει ότι η εφαρμογή δεν έχει τροποποιηθεί από την υπογραφή του προγραμματιστή και το σύστημα επιτρέπει την εκτέλεση της εφαρμογής.
Οι υπογραφές εφαρμογών είναι ένα ουσιώδες μέρος της τεχνολογίας Gatekeeper της Apple. Όταν ένας χρήστης προσπαθεί να ανοίξει μια εφαρμογή που έχει κατεβάσει από το internet, το Gatekeeper επαληθεύει την υπογραφή της εφαρμογής. Αν είναι υπογεγραμμένη με ένα πιστοποιητικό που έχει εκδώσει η Apple σε έναν γνωστό προγραμματιστή και ο κώδικας δεν έχει τροποποιηθεί, το Gatekeeper επιτρέπει την εκτέλεση της εφαρμογής. Διαφορετικά, αποκλείει την εφαρμογή και ειδοποιεί τον χρήστη.
Από το macOS Catalina και μετά, το Gatekeeper ελέγχει επίσης εάν η εφαρμογή έχει υποβληθεί σε επικύρωση από την Apple, προσθέτοντας ένα επιπλέον επίπεδο ασφαλείας. Η διαδικασία επικύρωσης ελέγχει την εφαρμογή για γνωστά θέματα ασφαλείας και κακόβουλο κώδικα, και αν αυτοί οι έλεγχοι περάσουν, η Apple προσθέτει ένα εισιτήριο στην εφαρμογή που το Gatekeeper μπορεί να επαληθεύσει.
Έλεγχος Υπογραφών
Όταν ελέγχετε κάποιο δείγμα κακόβουλου λογισμικοϋ πρέπει πάντα να ελέγχετε την υπογραφή του δυαδικού καθώς ο προγραμματιστής που το υπέγραψε μπορεί να έχει ήδη σχέση με κακόβουλο λογισμικό.
Επισημοποίηση
Η διαδικασία επισημοποίησης της Apple λειτουργεί ως ένα επιπλέον μέτρο προστασίας για τους χρήστες από ενδεχόμενο επιβλαβές λογισμικό. Περιλαμβάνει τον προγραμματιστή να υποβάλει την εφαρμογή του για εξέταση από την Υπηρεσία Επισήμανσης της Apple, η οποία δεν πρέπει να μπερδευτεί με την Αναθεώρηση Εφαρμογών. Αυτή η υπηρεσία είναι ένα αυτοματοποιημένο σύστημα που ελέγχει προσεκτικά το υποβαλλόμενο λογισμικό για την παρουσία κακόβουλου περιεχομένου και οποιωνδήποτε πιθανών προβλημάτων με την υπογραφή κώδικα.
Αν το λογισμικό περάσει αυτόν τον έλεγχο χωρίς να προκαλέσει ανησυχίες, η Υπηρεσία Επισήμανσης δημιουργεί ένα εισιτήριο επισημοποίησης. Στη συνέχεια, ο προγραμματιστής πρέπει να επισυνάψει αυτό το εισιτήριο στο λογισμικό του, μια διαδικασία γνωστή ως 'συρραφή.' Επιπλέον, το εισιτήριο επισημοποίησης δημοσιεύεται επίσης στο διαδίκτυο όπου το Gatekeeper, η τεχνολογία ασφαλείας της Apple, μπορεί να το ανακτήσει. Κατά την πρώτη εγκατάσταση ή εκτέλεση του λογισμικού από τον χρήστη, η ύπαρξη του εισιτηρίου επικύρωσης - είτε ως συνδεδεμένο με το εκτελέσιμο είτε βρέθηκε online - ενημερώνει το Gatekeeper ότι το λογισμικό έχει επικυρωθεί από την Apple. Ως αποτέλεσμα, το Gatekeeper εμφανίζει ένα περιγραφικό μήνυμα στο διάλογο αρχικής εκκίνησης, υποδεικνύοντας ότι το λογισμικό έχει υποβληθεί σε ελέγχους για κακόβουλο περιεχόμενο από την Apple. Με αυτόν τον τρόπο, η διαδικασία αυτή ενισχύει την εμπιστοσύνη του χρήστη στην ασφάλεια του λογισμικοώ που εγκαθιστά ή εκτελεί στα συστήματά τους.
Απαρίθμηση του GateKeeper
Το GateKeeper αποτελεί τόσο, πολλαπλά στοιχεία ασφαλείας που εμποδίζουν την εκτέλεση μη αξιόπιστων εφαρμογών όσο και ένα από τα στοιχεία.
Είναι δυνατόν να δείτε την κατάσταση του GateKeeper με:
Σημειώστε ότι οι έλεγχοι υπογραφής του GateKeeper πραγματοποιούνται μόνο σε αρχεία με το χαρακτηριστικό Καραντίνας, όχι σε κάθε αρχείο.
Ο GateKeeper θα ελέγξει αν σύμφωνα με τις προτιμήσεις & την υπογραφή μια δυαδική μπορεί να εκτελεστεί:
Η βάση δεδομένων που διατηρεί αυτή τη διαμόρφωση βρίσκεται στο /var/db/SystemPolicy
. Μπορείτε να ελέγξετε αυτή τη βάση δεδομένων ως ριζοχρήστης με:
Σημειώστε πως ο πρώτος κανόνας τελείωσε σε "App Store" και ο δεύτερος σε "Developer ID" και ότι στην προηγούμενη εικόνα ήταν ενεργοποιημένη η εκτέλεση εφαρμογών από το App Store και από πιστοποιημένους προγραμματιστές. Αν τροποποιήσετε αυτή τη ρύθμιση σε App Store, οι κανόνες "Notarized Developer ID" θα εξαφανιστούν.
Υπάρχουν επίσης χιλιάδες κανόνες τύπου GKE:
Αυτά είναι τα hashes που προέρχονται από τα /var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth
, /var/db/gke.bundle/Contents/Resources/gk.db
και /var/db/gkopaque.bundle/Contents/Resources/gkopaque.db
Ή μπορείτε να καταχωρίσετε τις προηγούμενες πληροφορίες με:
Οι επιλογές --master-disable
και --global-disable
του spctl
θα απενεργοποιήσουν εντελώς αυτούς τους ελέγχους υπογραφής:
Όταν είναι πλήρως ενεργοποιημένο, θα εμφανιστεί μια νέα επιλογή:
Είναι δυνατόν να ελεγχθεί αν μια εφαρμογή θα επιτραπεί από το GateKeeper με:
Είναι δυνατόν να προστεθούν νέοι κανόνες στο GateKeeper για να επιτρέπεται η εκτέλεση συγκεκριμένων εφαρμογϽν.
Αρχεία Καραντίνας
Κατά την λήψη μιας εφαρμογής ή αρχείου, συγκεκριμένες εφαρμογές macOS όπως περιηγητές ιστού ή προγράμματα email επισυνάπτουν ένα επεκτεινόμενο χαρακτηριστικό αρχείου, γνωστό ως "σημαία καραντίνας," στο κατεβασμένο αρχείο. Αυτό το χαρακτηριστικό λειτουργεί ως μέτρο ασφαλείας για να επισημάνει το αρχείο ως προερχόμενο από μη έμπιστη πηγή (το διαδίκτυο) και πιθανώς να φέρει κινδύνους. Ωστόσο, όχι όλες οι εφαρμογές επισυνάπτουν αυτό το χαρακτηριστικό, για παράδειγμα, τα κοινά προγράμματα πελατών BitTorrent συνήθως παρακάμπτουν αυτήν τη διαδικασία.
Η παρουσία μιας σημαίας καραντίνας ειδοποιεί το χαρακτηριστικό ασφαλείας Gatekeeper του macOS όταν ο χρήστης προσπαθεί να εκτελέσει το αρχείο.
Στην περίπτωση όπου η σημαία καραντίνας δεν είναι παρούσα (όπως με αρχεία που λήφθηκαν μέσω ορισμένων πελατών BitTorrent), οι έλεγχοι του Gatekeeper ενδέχεται να μην πραγματοποιηθούν. Έτσι, οι χρήστες θα πρέπει να είναι προσεκτικοί όταν ανοίγουν αρχεία που έχουν ληφθεί από λιγότερο ασφαλείς ή άγνωστες πηγές.
Η επαλήθευση της εγκυρότητας των υπογραφών κώδικα είναι μια επεξεργασία μεγάλου όγκου πόρων που περιλαμβάνει τη δημιουργία κρυπτογραφικών κατακερματισμών του κώδικα και όλων των συσκευασμένων πόρων του. Επιπλέον, η επαλήθευση της εγκυρότητας του πιστοποιητικού περιλαμβάνει μια διαδικτυακή επαλήθευση στους διακομιστές της Apple για να δει αν έχει ανακληθεί μετά την έκδοσή του. Για αυτούς τους λόγους, ο πλήρης έλεγχος υπογραφής κώδικα και επικύρωσης δεν είναι εφικτός να εκτελείται κάθε φορά που μια εφαρμογή εκκινείται.
Γι' αυτό, αυτοί οι έλεγχοι εκτελούνται μόνο κατά την εκτέλεση εφαρμογών με το χαρακτηριστικό καραντίνας.
Αυτό το χαρακτηριστικό πρέπει να ορίζεται από την εφαρμογή που δημιουργεί/κατεβάζει το αρχείο.
Ωστόσο, τα αρχεία που είναι σε λειτουργία άμμου θα έχουν αυτό το χαρακτηριστικό ορισμένο σε κάθε αρχείο που δημιουργούν. Και οι μη αμμολογημένες εφαρμογές μπορούν να το ορίσουν μόνες τους, ή να καθορίσουν το LSFileQuarantineEnabled κλειδί στο Info.plist το οποίο θα κάνει το σύστημα να ορίσει το επεκτεινόμενο χαρακτηριστικό com.apple.quarantine
στα αρχεία που δημιουργούν,
Είναι δυνατόν να ελέγξετε την κατάστασή του και να ενεργοποιήσετε/απενεργοποιήσετε (απαιτείται root) με:
Μπορείτε επίσης να βρείτε αν ένα αρχείο έχει το επεκταμένο χαρακτηριστικό καραντίνας με:
Ελέγξτε τη τιμή των επεκταμένων χαρακτηριστικών και βρείτε την εφαρμογή που έγραψε το χαρακτηριστικό καραντίνα με:
Πράγματι, ένας διεργασία "μπορεί να ορίσει σημαίες καραντίνας στα αρχεία που δημιουργεί" (προσπάθησα να εφαρμόσω τη σημαία USER_APPROVED σε ένα δημιουργημένο αρχείο αλλά δεν την εφαρμόζει):
Last updated