Si la signature de code Mac est altérée, qu'est-ce qui pourrait échouer?


11

Quels ennuis ou problèmes réels peuvent survenir lorsque la signature numérique d'une application Mac est rompue?

Les applications sur un Mac peuvent être signées numériquement. Lorsque la signature est en quelque sorte cassée, je sais que quelques applications peuvent le remarquer. Mais je ne sais pas dans quel détail ce ne seront que des ennuis ou ça cassera vraiment les choses:

  • Le pare-feu OS X n'est peut-être pas en mesure de définir correctement une signature ad hoc, ce qui provoque l'invitation répétée de "Voulez-vous que l'application" [..] "accepte les connexions réseau entrantes?"

  • Les applications autorisées par le contrôle parental pourraient ne plus fonctionner?

  • L'accès au trousseau est peut-être interrompu?

  • Certains disent que la mise à jour du logiciel Apple pourrait échouer. Si cela est vrai, je me demande si cela dépend en effet de la signature de signature de code, ou s'il serait provoqué par un hachage non correspondant à l'ensemble de l'application, ou des informations provenant des fichiers de nomenclature .

Plus d'informations générales ci-dessous.


Les détails de signature du code peuvent être affichés en utilisant:

codesign --display -vv /Applications/iTunes.app/

... qui donnerait quelque chose comme ce qui suit (mais ne mettrait pas en garde contre les modifications):

[..]
CDHash=86828a2d631dbfd417600c458b740cdcd12b13e7
Signature size=4064
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
[..]

La signature peut être validée en utilisant:

codesign --verify -vv /Applications/iTunes.app/

Ce qui donnerait:

/Applications/iTunes.app/: valid on disk
/Applications/iTunes.app/: satisfies its Designated Requirement

... ou (même en plaçant simplement un fichier supplémentaire dans le dossier ./Contents/Resources d'une application):

/Applications/iTunes.app/: a sealed resource is missing or invalid

... ou (peut-être pire que le message ci-dessus):

/Applications/iTunes.app/: code or signature modified

La signature de code remonte à OS 9 ou antérieur, mais l'implémentation actuelle a été introduite dans 10.5 Leopard. Ars Technica écrit :

La signature de code lie une identité cryptographiquement vérifiable à une collection de code et garantit que toute modification de ce code est détectée. Aucune garantie n'est donnée sur les parties impliquées. Par exemple, si vous téléchargez une application signée par Acme Inc., vous ne pouvez rien prouver, sauf qu'elle provenait de la même entité prétendant être Acme Inc. la dernière fois que vous avez téléchargé quelque chose à partir de leur site Web.

Cet exemple met en évidence l'application la plus utile de la technologie du point de vue du consommateur. Lors de la mise à niveau d'une application Mac OS X aujourd'hui [dans 10.4 Tiger, AvB], l'utilisateur est souvent invité à revérifier que cette application est autorisée à accéder au trousseau pour récupérer les noms d'utilisateur et les mots de passe. Cela semble être une bonne fonctionnalité de sécurité, mais tout ce qu'il fait, c'est former les utilisateurs Mac à cliquer aveuglément sur "Toujours autoriser" chaque fois qu'il apparaît. Et vraiment, que va faire l'utilisateur moyen, exécuter l'exécutable via un désassembleur et vérifier manuellement que le code est sûr?

Une application signée, d'autre part, peut prouver mathématiquement qu'il s'agit bien d'une nouvelle version de la même application du même fournisseur pour laquelle vous avez fait confiance dans le passé. Le résultat est la fin des boîtes de dialogue vous demandant de confirmer un choix dont vous n'avez aucun moyen raisonnable de vérifier la sécurité.

Pour le pare-feu dans 10.5 Leopard, Apple explique :

Lorsque vous ajoutez une application à cette liste, Mac OS X signe numériquement l'application (si elle n'a pas déjà été signée). Si l'application est modifiée ultérieurement, vous serez invité à autoriser ou à refuser les connexions réseau entrantes. La plupart des applications ne se modifient pas elles-mêmes, et c'est une fonction de sécurité qui vous informe du changement.

[..]

Toutes les applications ne figurant pas dans la liste qui ont été signées numériquement par une autorité de certification approuvée par le système (à des fins de signature de code) sont autorisées à recevoir les connexions entrantes. Chaque application Apple dans Leopard a été signée par Apple et est autorisée à recevoir les connexions entrantes. Si vous souhaitez refuser une demande signée numériquement, vous devez d'abord l'ajouter à la liste, puis la refuser explicitement.

Dans 10.6 Snow Leopard, ce dernier est rendu plus explicite (et peut être désactivé) car "Autoriser automatiquement les logiciels signés à recevoir les connexions entrantes. Permet aux logiciels signés par une autorité de certification valide de fournir des services accessibles à partir du réseau".

Pare-feu Mac OS X 10.6: autorise automatiquement les logiciels signés à recevoir les connexions entrantes

(Dans 10.6, les options 10.5.1 «Autoriser toutes les connexions entrantes», «Autoriser uniquement les services essentiels» et «Définir l'accès pour des services et applications spécifiques» ont été remodelées en un choix pour «Bloquer toutes les connexions entrantes» ou une liste des applications et options autorisées "Autoriser automatiquement les logiciels signés à recevoir les connexions entrantes" et "Activer le mode furtif". Avant la mise à jour 10.5.1 , "Autoriser uniquement les services essentiels" était en fait appelé "Bloquer toutes les connexions entrantes".)

Pour les applications (Apple) dont la signature d'origine est en quelque sorte cassée, cette signature ad hoc peut ne pas être persistante et est connue pour avoir causé des problèmes pour configd, mDNSResponder et racoon.


Je suppose que la réponse de The Tentacle dit tout (et peu importe mes efforts: briser les signatures ne m'a même pas encore montré d'avertissement pour l'accès au trousseau). Je me demande quand même si quelqu'un a rencontré des problèmes. J'espère que la question n'est pas trop longue à lire ... ;-)
Arjan

étiquette de certificat ajoutée
quack quixote

Nice: quelqu'un a re-signé la version bêta de Safari 4 (avec ses onglets en haut) pour la rendre compatible avec le trousseau: voir les commentaires de "petersconsult" sur macosxhints.com/article.php?story=20090925131057394
Arjan

Réponses:


1

Un exemple de cas où la signature de code «cassera» une application:

  • Keychain Access.app ne vous permettra pas d'afficher les mots de passe s'il détecte qu'il a été falsifié.

Source: liste de diffusion Apple et Irréalité de Jaharmi


Bien sûr, maintenant que vous en parlez, c'est l'application que j'aurais dû utiliser pour mes tout premiers tests! :-)
Arjan

3

Ce que je peux vous dire, c'est Candybar, l'application de personnalisation d'icônes utilisée par un grand nombre de personnes, brise la signature numérique d'au moins Finder et Dock (et probablement d'autres applications système de base) car elle modifie les fichiers de ressources, et pourtant jusqu'à présent rien a été signalé comme un problème à cause de cela. Donc, un échantillonnage dans la nature utilisant des composants OS principaux dirait - pas grand-chose!

EDIT: voici le résultat de la vérification de ma signature de code pour mon Dock dans Snow Leopard:

⚛$ codesign --verify --verbose /System/Library/CoreServices/Dock.app/
/System/Library/CoreServices/Dock.app/: a sealed resource is missing or invalid
/System/Library/CoreServices/Dock.app/Contents/Resources/expose-window-selection-big.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/expose-window-selection-small.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/finder.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/frontline.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/indicator_large.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/indicator_medium.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/indicator_small.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-l.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-m.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-sm.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-xl.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/trashempty.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/trashfull.png: resource modified

Aha, je vais enquêter un peu là-dessus! Certaines icônes modifiées manuellement n'ont pas interrompu la signature de code pour certaines autres applications. Les créateurs eux-mêmes ont écrit en 2008: Quant à changer vos icônes d'application à la main, vous êtes les bienvenus! À titre d'avertissement: si Apple active la signature de code intégrée dans une future mise à jour mineure de Mac OS X, vos applications ne seront tout simplement plus lancées. C'est ce que nous essayons d'éviter en toute sécurité en désactivant cette fonctionnalité jusqu'à ce que nous ayons une idée d'Apple de leurs plans. - macupdate.com/info.php/id/8948?rord=mod
Arjan

J'ai ajouté le résultat après avoir modifié à la main mon dock dans Snow Leopard ...
The Tentacle

Ah, stupide. Jusqu'à présent, la seule chose que j'ai testée était l'icône du programme (en collant une nouvelle icône via Finder Get Info), pas n'importe quelle icône utilisée par le programme lui-même. Ok, la signature du code est cassée à coup sûr. Le commentaire du développeur Candybar me fait encore un peu peur, mais Apple causerait beaucoup de problèmes à Apple en changeant soudainement les effets (non) actuels.
Arjan

Eh bien, le test consiste à modifier les ressources dans une application réseau et à voir si la rupture de la signature arrête le passage automatique du pare-feu de l'application ...
The Tentacle

(Hmmm, le développeur CandyBar a supprimé ce commentaire du 10 janvier 2008 de MacUpdate. Le cache Google le montre toujours, mais apparemment il y a une nouvelle version pour OS X 6.1, donc soit le problème a été résolu, soit CandyBar veut laisser les chiens endormis mentir .. Supposons qu'il n'y ait pas de problème alors!)
Arjan

0

Une explication quelque peu détaillée de la signature de code dans Snow Leopard est fournie dans la revue Snow Leopard d'ars technica . Pour autant que je sache, rompre la signature de code ne cassera rien. Cependant, cela rendra les applications non fiables, ce qui signifie que vous devrez vérifier davantage de leurs actions.


Il s'agit en fait de la revue 10.5 Leopard. Une belle citation de la revue 10.6 cependant: "Et n'oublions pas que les technologies" Mac OS X "que nous avons apprises plus tard ont été développées pour l'iPhone et ont juste été annoncées pour le Mac en premier (parce que l'iPhone était encore un secret), comme Core Animation et la signature de code. " - arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars
Arjan

0

Je réparais mes autorisations de disque l'autre jour (à partir de l'Utilitaire de disque) et j'ai reçu cet avertissement:

Warning: SUID file "System/.../ARDAgent" has been modified and will not be repaired.

Il y a donc quelque chose qui va arriver. Je ne sais pas à quel point c'est important.


Intéressant, d'autant plus qu'Apple répertorie cela dans "Mac OS X 10.5: Messages de réparation des autorisations de disque de l'utilitaire de disque que vous pouvez ignorer en toute sécurité" sur support.apple.com/kb/TS1448 Aucun mot d'Apple sur la façon dont cela a été modifié et pourquoi il ne le fait pas ' t importe si ... Montre en codesign --verifyeffet une signature cassée?
Arjan

0

L'implémentation actuelle de la signature de code est assez édentée et a probablement été précipitée au profit des développeurs d'iPhone. J'espère que cela deviendra obligatoire à un moment donné dans le futur, et j'espère que cela deviendra également beaucoup plus facile et moins cher à ce moment-là.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.