macOS Sandbox
Βασικές Πληροφορίες
Το Ammosdoxeío MacOS (αρχικά ονομαζόταν Seatbelt) περιορίζει τις εφαρμογές που εκτελούνται μέσα στο ammosdoxeío στις επιτρεπόμενες ενέργειες που καθορίζονται στο προφίλ του ammosdoxeίου με το οποίο εκτελείται η εφαρμογή. Αυτό βοηθά να διασφαλιστεί ότι η εφαρμογή θα έχει πρόσβαση μόνο σε αναμενόμενους πόρους.
Οποιαδήποτε εφαρμογή με το δικαίωμα com.apple.security.app-sandbox
θα εκτελείται μέσα στο ammosdoxeío. Τα δυαδικά αρχεία της Apple συνήθως εκτελούνται μέσα σε ένα ammosdoxeío και για να δημοσιευτούν στο App Store, αυτό το δικαίωμα είναι υποχρεωτικό. Έτσι, οι περισσότερες εφαρμογές θα εκτελούνται μέσα στο ammosdoxeío.
Για να ελέγξετε τι μπορεί ή δεν μπορεί να κάνει ένας διεργασία, το ammosdoxeío έχει hooks σε όλες τις κλήσεις συστήματος στον πυρήνα. Ανάλογα με τα δικαιώματα της εφαρμογής, το ammosdoxeío θα επιτρέπει ορισμένες ενέργειες.
Ορισμένα σημαντικά στοιχεία του ammosdoxeίου είναι:
Η επέκταση πυρήνα
/System/Library/Extensions/Sandbox.kext
Το ιδιωτικό πλαίσιο
/System/Library/PrivateFrameworks/AppSandbox.framework
Ένα daemon που εκτελείται στον χώρο χρήστη
/usr/libexec/sandboxd
Οι κάδοι
~/Library/Containers
Μέσα στον φάκελο των κάδων μπορείτε να βρείτε έναν φάκελο για κάθε εφαρμογή που εκτελείται μέσα στο ammosdoxeío με το όνομα του αναγνωριστικού δέσμης:
Μέσα σε κάθε φάκελο με το αναγνωριστικό της εφαρμογής (bundle id), μπορείτε να βρείτε το αρχείο plist και τον φάκελο Data της εφαρμογής:
Να σημειωθεί ότι ακόμα κι αν τα συμβολικά συνδέσμοι υπάρχουν για να "δραπετεύσουν" από το Sandbox και να έχουν πρόσβαση σε άλλους φακέλους, η εφαρμογή πρέπει ακόμα να έχει δικαιώματα για να τους προσεγγίσει. Αυτά τα δικαιώματα βρίσκονται μέσα στο .plist
.
Όλα τα δημιουργημένα/τροποποιημένα από μια εφαρμογή που εκτελείται σε άμμο θα λάβουν το χαρακτηριστικό καραντίνας. Αυτό θα εμποδίσει τον χώρο άμμου να ενεργοποιήσει τον Gatekeeper αν η εφαρμογή άμμου προσπαθήσει να εκτελέσει κάτι με την εντολή open
.
Προφίλ άμμου
Τα προφίλ άμμου είναι αρχεία ρυθμίσεων που υποδεικνύουν τι επιτρέπεται/απαγορεύεται σε αυτήν την άμμο. Χρησιμοποιεί την γλώσσα προφίλ άμμου (SBPL), η οποία χρησιμοποιεί την Scheme γλώσσα προγραμματισμού.
Εδώ μπορείτε να βρείτε ένα παράδειγμα:
Ελέγξτε αυτήν την έρευνα για να ελέγξετε περισσότερες ενέργειες που μπορεί να επιτρέπονται ή να απαγορεύονται.
Σημαντικές υπηρεσίες συστήματος τρέχουν επίσης μέσα στο δικό τους προσαρμοσμένο sandbox όπως η υπηρεσία mdnsresponder
. Μπορείτε να δείτε αυτά τα προσαρμοσμένα προφίλ sandbox μέσα στα:
/usr/share/sandbox
/System/Library/Sandbox/Profiles
Άλλα προφίλ sandbox μπορούν να ελεγχθούν στο https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles.
Οι εφαρμογές App Store χρησιμοποιούν το προφίλ /System/Library/Sandbox/Profiles/application.sb
. Μπορείτε να ελέγξετε σε αυτό το προφίλ πώς οι εξουσιοδοτήσεις όπως com.apple.security.network.server
επιτρέπουν σε ένα διεργασία να χρησιμοποιεί το δίκτυο.
Το SIP είναι ένα προφίλ Sandbox που ονομάζεται platform_profile στο /System/Library/Sandbox/rootless.conf
Παραδείγματα προφίλ Sandbox
Για να ξεκινήσετε μια εφαρμογή με ένα συγκεκριμένο προφίλ sandbox μπορείτε να χρησιμοποιήσετε:
Ο ακόλουθος κώδικας είναι ένα παράδειγμα ενός αρχείου sandbox για το macOS. Το αρχείο αυτό ονομάζεται touch2.sb και χρησιμοποιείται για να περιορίσει τις δυνατότητες ενός προγράμματος που εκτελείται στο sandbox του macOS.
Αυτός ο κώδικας ορίζει τις επιτρεπόμενες ενέργειες για το πρόγραμμα που εκτελείται στο sandbox. Επιτρέπει την εγγραφή και ανάγνωση αρχείων στον φάκελο "/private/var/tmp/" με την κατάληξη ".txt". Επιτρέπει επίσης την πρόσβαση στα μεταδεδομένα των αρχείων και την εκτέλεση των προγραμμάτων "/bin/echo" και "/usr/bin/echo". Επιπλέον, επιτρέπει την πρόσβαση στο keychain του macOS και την ανάγνωση των πληροφοριών των διεργασιών. Τέλος, επιτρέπει τη χρήση των IPC POSIX shared memory.
Σημειώστε ότι το λογισμικό που έχει αναπτύξει η Apple και τρέχει σε Windows δεν έχει επιπλέον μέτρα ασφαλείας, όπως η εφαρμογή sandboxing.
Παραδείγματα παράκαμψης:
https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c (μπορούν να γράψουν αρχεία έξω από το sandbox με όνομα που ξεκινά με
~$
).
Προφίλ Sandbox του MacOS
Το macOS αποθηκεύει τα προφίλ του συστήματος sandbox σε δύο τοποθεσίες: /usr/share/sandbox/ και /System/Library/Sandbox/Profiles.
Και αν μια εφαρμογή τρίτου μέρους έχει το δικαίωμα com.apple.security.app-sandbox, το σύστημα εφαρμόζει το προφίλ /System/Library/Sandbox/Profiles/application.sb σε αυτήν τη διεργασία.
Προφίλ Sandbox του iOS
Το προεπιλεγμένο προφίλ ονομάζεται container και δεν έχουμε την αναπαράσταση SBPL σε κείμενο. Στη μνήμη, αυτό το sandbox αναπαρίσταται ως δυαδικό δέντρο Allow/Deny για κάθε άδεια από το sandbox.
Αποσφαλμάτωση και Παράκαμψη Sandbox
Στο macOS, αντίθετα από το iOS όπου οι διεργασίες είναι sandboxed από την αρχή από τον πυρήνα, οι διεργασίες πρέπει να επιλέξουν ενεργά να εισέλθουν στο sandbox. Αυτό σημαίνει ότι στο macOS, μια διεργασία δεν περιορίζεται από το sandbox μέχρι να αποφασίσει ενεργά να εισέλθει σε αυτό.
Οι διεργασίες αυτόματα εισέρχονται στο Sandbox από τον χρήστη όταν ξεκινούν αν έχουν το δικαίωμα: com.apple.security.app-sandbox
. Για μια λεπτομερή εξήγηση αυτής της διαδικασίας, ελέγξτε:
Έλεγχος Προνομίων PID
Σύμφωνα με αυτό, το sandbox_check
(είναι ένα __mac_syscall
), μπορεί να ελέγξει αν μια λειτουργία επιτρέπεται ή όχι από το sandbox σε ένα συγκεκριμένο PID.
Το εργαλείο sbtool μπορεί να ελέγξει αν ένα PID μπορεί να εκτελέσει μια συγκεκριμένη ενέργεια:
Προσαρμοσμένα SBPL σε εφαρμογές App Store
Είναι δυνατό για τις εταιρείες να κάνουν τις εφαρμογές τους να τρέχουν με προσαρμοσμένα προφίλ Sandbox (αντί για το προεπιλεγμένο). Πρέπει να χρησιμοποιήσουν το entitlement com.apple.security.temporary-exception.sbpl
το οποίο πρέπει να εξουσιοδοτηθεί από την Apple.
Είναι δυνατό να ελεγχθεί ο ορισμός αυτού του entitlement στο /System/Library/Sandbox/Profiles/application.sb:
Αυτό θα αξιολογήσει το συμβολοσειρά μετά από αυτήν την εξουσιοδότηση ως ένα προφίλ Sandbox.
Last updated