Verlangsamt sich Mac OS? - Catalina überprüft beim Start nicht signierten Code über das Internet

Viele Benutzer beschwerten sich nach dem Wechsel zu Catalina über die Bremsen. Westliche Kollegen haben den Grund herausgefunden: MacOS sendet einen Hash von nicht signiertem Code an Apple-Server.

Dies führt zu schwerwiegenden Verzögerungen bei der Ausführung, die leicht überprüft werden können:

echo $'#!/bin/sh\necho Hello' > /tmp/test.sh && chmod a+x /tmp/test.sh
time /tmp/test.sh && time /tmp/test.sh

Die Ergebnisse sind überraschend:

$ time /tmp/test.sh && time /tmp/test.sh
Hello

real    0m1.417s
user    0m0.001s
sys 0m0.003s
Hello

real    0m0.003s
user    0m0.001s
sys 0m0.002s

Warum passiert es? Apple verwendet den Notarisierungsmechanismus bereits seit einiger Zeit. Damit können Benutzer sicher sein, dass ein von einer gültigen Entwickler-ID signiertes Programm keine schädlichen Komponenten enthält. Das heißt, zusätzlich zur Tatsache, dass die Anwendung signiert ist, überprüft Apple sie automatisch auf Malware-Elemente.
Interessanterweise plant Apple in Zukunft generell, den Start nicht notariell beglaubigter Programme zu verbieten. Zitat:
Wichtig

Ab macOS 10.14.5 muss Software, die mit einem neuen Entwickler-ID-Zertifikat und allen neuen oder aktualisierten Kernel-Erweiterungen signiert ist, notariell beglaubigt werden, damit sie ausgeführt werden kann. Ab macOS 10.15 muss die gesamte Software, die nach dem 1. Juni 2019 erstellt und mit der Entwickler-ID verteilt wurde, notariell beglaubigt werden.

Anscheinend wird jetzt, um einzubrechen, jeder neue Code ohne Vorzeichen, den Sie ausführen, an den AAPL-Server gesendet. Dies kann leicht überprüft werden, indem ein beliebiger Netzwerkanalysator ausgeführt und Anrufe an die Domäne api.apple-cloudkit.com angezeigt werden. Es ist zu beachten, dass nicht der Code selbst übertragen wird, sondern die Hash-Menge. Sie können dies auf zwei Arten überprüfen: Vergleichen Sie die über das Netzwerk übertragene Datenmenge für Skripte unterschiedlicher Größe. sowie einen Blick auf den Inhalt des Daemons, der für das Senden von Daten verantwortlich ist ( otool -tV / usr / libexec / syspolicyd ). Bei einer langsamen Internetverbindung können Verzögerungen jedoch Sekunden betragen - ein Benutzer aus China schreibt über eine Verzögerung von 5,47 Sekunden.

Einerseits kann Apple verstehen - es kümmert sich um die Sicherheit der Benutzer, macht aber gleichzeitig den Prozess jeder Entwicklung auf ihrer Plattform zur Hölle.

Ich möchte jedoch den Entwickler zitieren, der zuerst auf das Problem aufmerksam gemacht hat:
Dieses Verhalten des Betriebssystems weist auf schwerwiegende Probleme im Design hin, wenn zwei Methoden der Low-Level-System-API (z. B. exec und getxattr) synchrone Netzwerkaufrufe ausführen, bevor das Ergebnis zurückgegeben wird.

Links:

lapcatsoftware.com/articles/catalina-executables.html
news.ycombinator.com/item?id=23275922
sigpipe.macromates.com/2020/macos-catalina-slow-by-design

All Articles