Was kann daran scheitern, wenn die Mac-Codesignierung manipuliert wird?

8451
Arjan

Welche Belästigungen oder realen Probleme können auftreten, wenn die digitale Signatur einer Mac-Anwendung beschädigt wird?

Anwendungen auf einem Mac können digital signiert werden. Wenn die Signatur irgendwie beschädigt ist, weiß ich, dass einige Anwendungen dies bemerken. Aber ich weiß nicht, in welchem ​​Detail dies nur Ärgernis sein wird oder Dinge wirklich zerbrechen wird:

  • Die OS X-Firewall ist möglicherweise nicht in der Lage, eine Ad-hoc-Signatur korrekt festzulegen. Eine wiederholte Aufforderung wird angezeigt, ob die Anwendung "[..]" eingehende Netzwerkverbindungen akzeptieren soll.

  • Anwendungen, die von der Kindersicherung zugelassen werden, werden möglicherweise nicht mehr ausgeführt?

  • Schlüsselbund Zugang könnte defekt sein?

  • Einige sagen, Apple-Software-Updates könnten fehlschlagen. Wenn dies zutrifft, frage ich mich, ob dies tatsächlich von der Signatur der Codesignatur abhängt oder von einem nicht übereinstimmenden Hash für die gesamte Anwendung oder von Informationen aus Stücklistendateien verursacht wird .

Weitere Hintergrundinformationen finden Sie weiter unten.


Details zur Codesignatur können angezeigt werden mit:

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

... was so etwas wie das Folgende ergeben würde (aber nicht vor Änderungen warnen würde ):

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

Die Signatur kann mit folgendem geprüft werden:

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

Was würde ergeben:

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

... oder (auch wenn Sie einfach eine zusätzliche Datei in den Ordner ./Contents/Resources einer Anwendung einfügen):

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

... oder (möglicherweise schlechter als die obige Meldung):

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

Die Codesignierung geht auf OS 9 oder früher zurück, die aktuelle Implementierung wurde jedoch in 10.5 Leopard eingeführt. Ars Technica schreibt :

Die Codesignatur bindet eine kryptographisch überprüfbare Identität an eine Sammlung von Code und stellt sicher, dass Änderungen an diesem Code erkannt werden. Es werden keine Garantien über die beteiligten Parteien gegeben. Wenn Sie beispielsweise eine von Acme Inc. signierte Anwendung herunterladen, können Sie nichts beweisen, es sei denn, sie stammte von derselben Entität, die behauptete, Acme Inc. zu sein, als Sie das letzte Mal etwas von ihrer Website heruntergeladen hatten.

Dieses Beispiel zeigt die nützlichste Anwendung der Technologie aus Sicht des Verbrauchers. Beim heutigen Upgrade einer Mac OS X-Anwendung [in 10.4 Tiger, AvB] wird der Benutzer häufig aufgefordert, erneut zu überprüfen, ob diese Anwendung auf den Schlüsselbund zugreifen darf, um Benutzernamen und Kennwörter abzurufen. Dies scheint eine gute Sicherheitsfunktion zu sein, aber es ist wirklich alles, was Mac-Benutzer dazu bringt, jedes Mal blind auf "Always Allow" zu klicken. Und was ist der durchschnittliche Benutzer? Führen Sie die ausführbare Datei über einen Disassembler aus und überprüfen Sie manuell, ob der Code sicher ist.

Eine signierte Anwendung kann dagegen mathematisch nachweisen, dass es sich tatsächlich um eine neue Version derselben Anwendung desselben Herstellers handelt, für die Sie in der Vergangenheit Ihr Vertrauen ausgesprochen haben. Das Ergebnis ist ein Ende der Dialogfelder, in dem Sie aufgefordert werden, eine Auswahl zu bestätigen, deren Sicherheit Sie nicht in angemessener Weise überprüfen können.

Für die Firewall in 10.5 Leopard erklärt Apple :

Wenn Sie dieser Liste eine Anwendung hinzufügen, signiert Mac OS X die Anwendung digital (sofern noch nicht unterzeichnet). Wenn die Anwendung später geändert wird, werden Sie aufgefordert, eingehende Netzwerkverbindungen zuzulassen oder zu verbieten. Die meisten Anwendungen ändern sich nicht selbst. Dies ist eine Sicherheitsfunktion, die Sie über die Änderung informiert.

[..]

Alle Anwendungen, die nicht in der Liste enthalten sind und von einer zertifizierten Zertifizierungsstelle (zum Zweck der Codesignierung) digital signiert wurden, dürfen eingehende Verbindungen empfangen. Jede Apple-Anwendung in Leopard wurde von Apple signiert und darf eingehende Verbindungen empfangen. Wenn Sie eine digital signierte Anwendung ablehnen möchten, müssen Sie diese zunächst der Liste hinzufügen und diese dann explizit ablehnen.

In 10.6 Snow Leopard wird letzterer expliziter gemacht (und kann deaktiviert werden), als "Signierte Software den Empfang eingehender Verbindungen automatisch zulassen. Erlaubt Software, die von einer gültigen Zertifizierungsstelle signiert ist, Dienste bereitzustellen, auf die vom Netzwerk aus zugegriffen wird".

Mac OS X 10.6 Firewall: Zulassen, dass signierte Software eingehende Verbindungen automatisch empfängt

(In 10.6 wurden die 10.5.1-Optionen "Alle eingehenden Verbindungen zulassen", "Nur wesentliche Dienste zulassen" und "Zugriff für bestimmte Dienste und Anwendungen festlegen") in eine Auswahlmöglichkeit für "Alle eingehenden Verbindungen blockieren" oder eine Liste umgestaltet zulässige Anwendungen und Optionen "Signierte Software automatisch den Empfang eingehender Verbindungen zulassen" und "Stealth-Modus aktivieren ". Vor dem Update 10.5.1 wurde "Nur wichtige Dienste zulassen" eigentlich als "Alle eingehenden Verbindungen blockieren " bezeichnet.)

Für (Apple-) Anwendungen, bei denen die ursprüngliche Signatur irgendwie beschädigt wurde, kann diese Ad-hoc-Signatur irgendwie nicht beibehalten werden, und es ist bekannt , dass sie Probleme mit configd, mDNSResponder und racoon verursacht hat.

11
Ich denke, die Antwort des Tentakels sagt alles (und egal wie sehr ich es auch versuche: Signaturen zu brechen hat mir noch nicht einmal eine Warnung für Keychain Access gezeigt). Trotzdem frage ich mich, ob jemand Probleme hatte. Hoffe die Frage ist nicht zu lange zu lesen ... ;-) Arjan vor 15 Jahren 0
Zertifikat-Tag hinzugefügt quack quixote vor 15 Jahren 0
Schön: Jemand hat die Safari 4-Betaversion (mit den Registerkarten oben) neu signiert, damit sie mit Keychain kompatibel ist: siehe die Kommentare von "petersconsult" unter http://www.macosxhints.com/article.php?story=20090925131057394 Arjan vor 15 Jahren 0

5 Antworten auf die Frage

3
The Tentacle

Was ich Ihnen sagen kann, ist Candybar, die von vielen Benutzern verwendete Symbolanpassungs-App. Sie bricht mindestens die digitale Signatur von Finder und Dock (und möglicherweise einiger anderer Kernsystemanwendungen), da sie Ressourcendateien ändert, und bisher nichts wurde deshalb als Problem gemeldet. Ein In-the-Wild-Sampling mit Kernkomponenten des Betriebssystems würde also sagen - nicht viel!

BEARBEITEN: Hier ist das Ergebnis der Überprüfung meiner Codesignatur für mein Dock in 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, ich werde das ein bisschen untersuchen! Einige * manuell * geänderte Symbole brachen die Codesignierung für andere Anwendungen nicht. Die Macher selbst haben 2008 geschrieben: * Wenn Sie Ihre Anwendungssymbole von Hand ändern möchten, können Sie dies gerne tun! Eine Warnung: Wenn Apple die integrierte Code-Signatur in einem zukünftigen Update für Mac OS X Minor aktiviert, werden Ihre Anwendungen einfach nicht mehr gestartet. Dies ist, was wir sicher vermeiden wollen, indem wir diese Funktion deaktivieren, bis Apple von ihren Plänen erfahren kann. * - http://www.macupdate.com/info.php/id/8948?rord=mod Arjan vor 15 Jahren 0
Ich habe das Ergebnis hinzugefügt, nachdem ich mein Dock in Snow Leopard von Hand modifiziert hatte ... The Tentacle vor 15 Jahren 0
Ah, dumm. Das einzige, was ich getestet habe, war * das Programmsymbol * (durch Einfügen eines neuen Symbols in Finder's Get Info), nicht irgendein Symbol, wie es vom Programm selbst verwendet wird. Ok, Code-Signierung ist sicher gebrochen. Der Candybar-Entwickler-Kommentar ist für mich immer noch ein wenig unheimlich, aber Apple würde eine Menge Leute in Schwierigkeiten bringen, wenn plötzlich die aktuellen (Nicht-) Effekte geändert werden. Arjan vor 15 Jahren 0
Nun, der Test besteht darin, die Ressourcen in einer mit dem Netzwerk verbundenen App zu ändern und zu sehen, ob durch das Abbrechen der Signatur das automatische Passthrough von der Anwendungsfirewall unterbrochen wird. The Tentacle vor 15 Jahren 0
(Hmmm, der CandyBar-Entwickler hat den Kommentar vom 10. Januar 2008 aus MacUpdate entfernt. Der Google-Cache zeigt es immer noch an, aber anscheinend gibt es eine neue Version für OS X 6.1. Entweder wurde das Problem gelöst oder CandyBar möchte schlafende Hunde liegen lassen.) Nehmen wir an, es gibt dann keine Probleme!) Arjan vor 15 Jahren 0
1
Chealion

Ein Beispiel dafür, wo die Codesignierung eine Anwendung "unterbricht":

  • Keychain Access.app erlaubt keine Anzeige von Kennwörtern, wenn festgestellt wird, dass das Kennwort manipuliert wurde.

Quelle: Apple Mailing List und Jaharmis Irreality

Natürlich, jetzt, da Sie es erwähnen, ist dies die Anwendung, die ich für meine ersten Tests * hätte verwenden sollen! :-) Arjan vor 15 Jahren 0
0
Peter Wagenet

Eine etwas ausführlichere Erklärung zum Code-Signieren in Snow Leopard finden Sie im Snow Leopard-Test von ars technica . Soweit ich das beurteilen kann, wird das Brechen von Codesignalen nichts wirklich brechen. Apps werden jedoch nicht vertrauenswürdig, was bedeutet, dass mehr Aktionen überprüft werden müssen.

Es ist eigentlich der 10.5 Leopard Test. Ein schönes Zitat aus dem 10.6 Testbericht: * "Und vergessen wir nicht die" Mac OS X "-Technologien, die wir später für das iPhone entwickelt haben und die zufällig für den Mac angekündigt wurden (weil das iPhone immer noch ein Geheimnis war). wie Core-Animation und Code-Signierung. "* - http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars Arjan vor 15 Jahren 0
0
wfaulk

Ich habe neulich meine Festplattenberechtigungen repariert (vom Festplatten-Dienstprogramm) und diese Warnung erhalten:

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

Es wird also etwas passieren. Ich weiß nicht, wie wichtig das ist.

Interessant, vor allem, weil Apple dies in "Mac OS X 10.5: Meldungen zum Reparieren der Datenträgerberechtigungen, die Sie problemlos ignorieren können" unter http://support.apple.com/kb/TS1448 aufführt. Kein Wort von Apple zu * wie * das war geändert und * warum * es spielt keine Rolle ... Zeigt tatsächlich "codesign --verify" eine gebrochene Signatur? Arjan vor 15 Jahren 0
0
Hasaan Chop

Die derzeitige Implementierung von Code-Signing ist ziemlich zahnlos und wurde wahrscheinlich zum Vorteil der iPhone-Entwickler aus dem Haus gestürzt. Hoffentlich wird es irgendwann in der Zukunft obligatorisch sein, und es wird hoffentlich auch viel einfacher und billiger werden.