4 votes

Vérifier la signature du code d'un programme d'installation de paquet

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 :

  1. pkgutil --expand 1Password-7.8.pkg Unsigned.unpkg
  2. pkgutil --flatten Unsigned.unpkg Unsigned.pkg
  3. 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 : saisir la description de l'image ici 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 !

8voto

Graham Miln Points 39606

Il n'y a actuellement aucun moyen de vérifier la signature à l'aide de Installer.app avant d'accepter le script pré-vol. C'est une négligence de longue date des ingénieurs d'Apple.

Veuillez fournir des commentaires ou, si vous êtes un développeur, signaler ce problème à Apple de manière formelle.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X