Sur macOS, lorsque vous ouvrez une application téléchargée depuis internet, Gatekeeper vérifie automatiquement la signature du code et, en cas de problème, vous avertit et bloque l'application. Autant que je sache, cela se produit uniquement pour les applications (.app extension) et Gatekeeper ne fera pas la même chose pour les installateurs de packages (.pkg extension).
J'ai décidé de faire une expérience pour vérifier cela. J'ai utilisé un installateur de package (1Password-7.8.pkg
) avec une signature valide et j'ai enlevé complètement la signature, essentiellement j'ai fait ce qui suit :
pkgutil --expand 1Password-7.8.pkg Unsigned.unpkg
pkgutil --flatten Unsigned.unpkg Unsigned.pkg
pkgutil --check-signature Unsigned.pkg
La sortie des 3 étapes est :
Package "Unsigned.pkg":
Status: no signature
Ensuite, j'ai double-cliqué sur le Unsigned.pkg
et j'ai pu effectuer l'installation sans aucun avertissement ou blocage de la part de Gatekeeper. Cette expérience prouve que Gatekeeper ne vérifie pas automatiquement la signature du code d'un installateur de package (.pkg extension), ai-je raison ?
Si l'hypothèse ci-dessus est correcte, cela mène à la deuxième question. Comment puis-je vérifier la signature d'un installateur de package manuellement avant de l'exécuter ?
Apple a un excellent article sur la vérification de la signature d'un installateur de package : https://support.apple.com/fr-fr/HT202369 : vous avez simplement besoin d'ouvrir l'installateur et de cliquer sur le cadenas en haut à droite. Cela fonctionne généralement sans problème dans la plupart des cas. Mais si un installateur contient le script pre-install, lorsque vous ouvrez l'installateur, vous voyez une fenêtre contextuelle avec le texte "Ce package exécutera un programme pour déterminer si le logiciel peut être installé." la fenêtre contextuelle ressemble à ceci : Dans ce cas, le cadenas est grisé et vous ne pouvez pas cliquer dessus avant de cliquer sur "Autoriser". Le problème survient lorsque vous cliquez sur "Autoriser", le script pre-install s'exécutera et cela signifie que vous exécuterez une sorte de script avant de vérifier son authenticité. Habituellement, le script pre-install vérifie uniquement les exigences et la compatibilité comme indiqué dans le titre de la fenêtre contextuelle. Mais potentiellement, il peut faire des choses arbitraires comme dans le cas de l'installateur zoom : https://twitter.com/c1truz_/status/1244737672930824193
Y a-t-il une option pour vérifier la signature du code d'un installateur de package depuis l'interface graphique avant de l'exécuter ou est-ce qu'Apple a simplement manqué ce cas et que je dois soumettre une demande de fonctionnalité à leur intention ?
Bien sûr, vous pouvez toujours vérifier la signature depuis le terminal comme ceci : `pkgutil --check-signature`, mais exécuter cette commande pour n'importe quel installateur de package téléchargé depuis internet ne semble pas correct et il devrait y avoir un moyen natif et plus pratique de le faire.
Merci !