macOS Gatekeeper / Quarantine / XProtect
Gatekeeper
Gatekeeper est une fonctionnalité de sécurité développée pour les systèmes d'exploitation Mac, conçue pour garantir que les utilisateurs exécutent uniquement des logiciels de confiance sur leurs systèmes. Il fonctionne en validant le logiciel qu'un utilisateur télécharge et tente d'ouvrir à partir de sources extérieures à l'App Store, telles qu'une application, un plug-in ou un package d'installation.
Le mécanisme clé de Gatekeeper réside dans son processus de vérification. Il vérifie si le logiciel téléchargé est signé par un développeur reconnu, garantissant l'authenticité du logiciel. De plus, il vérifie si le logiciel est notarié par Apple, confirmant qu'il est exempt de contenu malveillant connu et n'a pas été altéré après la notarisation.
De plus, Gatekeeper renforce le contrôle et la sécurité de l'utilisateur en demandant aux utilisateurs d'approuver l'ouverture du logiciel téléchargé pour la première fois. Cette mesure de sécurité aide à empêcher les utilisateurs d'exécuter involontairement un code exécutable potentiellement nocif qu'ils auraient pu confondre avec un fichier de données inoffensif.
Signatures d'application
Les signatures d'application, également appelées signatures de code, sont un élément essentiel de l'infrastructure de sécurité d'Apple. Elles sont utilisées pour vérifier l'identité de l'auteur du logiciel (le développeur) et pour s'assurer que le code n'a pas été altéré depuis sa dernière signature.
Voici comment cela fonctionne :
Signature de l'application : Lorsqu'un développeur est prêt à distribuer son application, il signe l'application à l'aide d'une clé privée. Cette clé privée est associée à un certificat qu'Apple délivre au développeur lors de son inscription au programme Apple Developer. Le processus de signature consiste à créer un hachage cryptographique de toutes les parties de l'application et à chiffrer ce hachage avec la clé privée du développeur.
Distribution de l'application : L'application signée est ensuite distribuée aux utilisateurs avec le certificat du développeur, qui contient la clé publique correspondante.
Vérification de l'application : Lorsqu'un utilisateur télécharge et tente d'exécuter l'application, son système d'exploitation Mac utilise la clé publique du certificat du développeur pour déchiffrer le hachage. Il recalcule ensuite le hachage en fonction de l'état actuel de l'application et le compare avec le hachage déchiffré. S'ils correspondent, cela signifie que l'application n'a pas été modifiée depuis que le développeur l'a signée, et le système autorise l'exécution de l'application.
Les signatures d'application sont une partie essentielle de la technologie Gatekeeper d'Apple. Lorsqu'un utilisateur tente d'ouvrir une application téléchargée depuis Internet, Gatekeeper vérifie la signature de l'application. Si elle est signée avec un certificat délivré par Apple à un développeur connu et que le code n'a pas été altéré, Gatekeeper autorise l'exécution de l'application. Sinon, il bloque l'application et alerte l'utilisateur.
À partir de macOS Catalina, Gatekeeper vérifie également si l'application a été notariée par Apple, ajoutant une couche de sécurité supplémentaire. Le processus de notarisation vérifie l'application pour des problèmes de sécurité connus et du code malveillant, et si ces vérifications sont réussies, Apple ajoute un ticket à l'application que Gatekeeper peut vérifier.
Vérification des signatures
Lors de la vérification d'un échantillon de logiciel malveillant, vous devriez toujours vérifier la signature du binaire car le développeur qui l'a signé pourrait déjà être lié à du logiciel malveillant.
Notarisation
Le processus de notarisation d'Apple sert de sauvegarde supplémentaire pour protéger les utilisateurs des logiciels potentiellement nuisibles. Il implique que le développeur soumette son application à l'examen du Service de notarisation d'Apple, qui ne doit pas être confondu avec l'App Review. Ce service est un système automatisé qui examine le logiciel soumis à la recherche de contenu malveillant et de tout problème potentiel lié à la signature de code.
Si le logiciel passe cette inspection sans soulever de préoccupations, le Service de notarisation génère un ticket de notarisation. Le développeur est alors tenu de joindre ce ticket à son logiciel, un processus appelé 'agrafage'. De plus, le ticket de notarisation est également publié en ligne où Gatekeeper, la technologie de sécurité d'Apple, peut y accéder.
Lors de la première installation ou exécution du logiciel par l'utilisateur, l'existence du ticket de notarisation - qu'il soit agrafé à l'exécutable ou trouvé en ligne - informe Gatekeeper que le logiciel a été notarisé par Apple. En conséquence, Gatekeeper affiche un message descriptif dans la boîte de dialogue de lancement initial, indiquant que le logiciel a été vérifié pour son contenu malveillant par Apple. Ce processus renforce ainsi la confiance des utilisateurs dans la sécurité des logiciels qu'ils installent ou exécutent sur leurs systèmes.
Énumération de GateKeeper
GateKeeper est à la fois plusieurs composants de sécurité qui empêchent l'exécution d'applications non fiables et également l'un des composants.
Il est possible de voir le statut de GateKeeper avec :
Notez que les vérifications de signature de GateKeeper ne sont effectuées que sur les fichiers avec l'attribut Quarantaine, pas sur chaque fichier.
GateKeeper vérifiera si, selon les préférences et la signature, un binaire peut être exécuté :
La base de données qui conserve cette configuration est située dans /var/db/SystemPolicy
. Vous pouvez vérifier cette base de données en tant que root avec :
Notez comment la première règle s'est terminée par "App Store" et la deuxième par "Developer ID" et que dans l'image précédente, il était activé pour exécuter des applications de l'App Store et des développeurs identifiés. Si vous modifiez ce paramètre en App Store, les règles "Notarized Developer ID" disparaîtront.
Il y a aussi des milliers de règles de type GKE:
Ce sont des hachages provenant de /var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth
, /var/db/gke.bundle/Contents/Resources/gk.db
et /var/db/gkopaque.bundle/Contents/Resources/gkopaque.db
Ou vous pouvez lister les informations précédentes avec:
Les options --master-disable
et --global-disable
de spctl
vont complètement désactiver ces vérifications de signature :
Lorsqu'il est complètement activé, une nouvelle option apparaîtra :
Il est possible de vérifier si une application sera autorisée par GateKeeper avec :
Il est possible d'ajouter de nouvelles règles dans GateKeeper pour autoriser l'exécution de certaines applications avec:
Fichiers en quarantaine
Lors du téléchargement d'une application ou d'un fichier, des applications macOS spécifiques telles que les navigateurs web ou les clients de messagerie attachent un attribut de fichier étendu, communément appelé le "drapeau de quarantaine," au fichier téléchargé. Cet attribut agit comme une mesure de sécurité pour marquer le fichier comme provenant d'une source non fiable (Internet) et potentiellement risqué. Cependant, toutes les applications n'attachent pas cet attribut, par exemple, les logiciels clients BitTorrent courants contournent généralement ce processus.
La présence d'un drapeau de quarantaine signale la fonction de sécurité Gatekeeper de macOS lorsque l'utilisateur tente d'exécuter le fichier.
Dans le cas où le drapeau de quarantaine n'est pas présent (comme pour les fichiers téléchargés via certains clients BitTorrent), les vérifications de Gatekeeper peuvent ne pas être effectuées. Ainsi, les utilisateurs doivent faire preuve de prudence lors de l'ouverture de fichiers téléchargés à partir de sources moins sécurisées ou inconnues.
Vérifier la validité des signatures de code est un processus gourmand en ressources qui inclut la génération de hachages cryptographiques du code et de toutes ses ressources groupées. De plus, vérifier la validité du certificat implique de faire une vérification en ligne auprès des serveurs d'Apple pour voir s'il a été révoqué après son émission. Pour ces raisons, une vérification complète de la signature de code et de la notarisation est impraticable à exécuter à chaque fois qu'une application est lancée.
Par conséquent, ces vérifications ne sont exécutées que lors de l'exécution d'applications avec l'attribut en quarantaine.
Cet attribut doit être défini par l'application créant/téléchargeant le fichier.
Cependant, les fichiers qui sont sandboxés auront cet attribut défini pour chaque fichier qu'ils créent. Et les applications non sandboxées peuvent le définir elles-mêmes, ou spécifier la clé LSFileQuarantineEnabled dans le fichier Info.plist qui fera que le système définira l'attribut étendu com.apple.quarantine
sur les fichiers créés.
Il est possible de vérifier son statut et d'activer/désactiver (nécessite les droits d'administrateur) avec :
Vous pouvez également vérifier si un fichier possède l'attribut étendu de quarantaine avec :
Vérifiez la valeur des attributs étendus et découvrez l'application qui a écrit l'attribut de quarantaine avec :
En fait, un processus "pourrait définir des drapeaux de quarantaine pour les fichiers qu'il crée" (j'ai essayé d'appliquer le drapeau USER_APPROVED à un fichier créé mais il ne l'applique pas) :
Last updated