Apple Push Notification Service: Fehlverhalten

Auf einem neuen Test-iMac (mit Mavericks 10.9.2) entdeckte ich 2 wiederholte Fehler im Zusammenhang mit apsd(Apple Push Notification Service-Daemon).

Wiederholte fehlgeschlagene Verbindungen

Ein netstatBefehl zeigt eine große Anzahl nicht korrekt beendeter tcpVerbindungen an. Alle diese toten Verbindungen gehen zu einer Domain bei Apple und verwenden Port 5223/tcp. Tatsächlich habe ich 400 davon:

$ netstat -An 
Active Internet connections
Socket           Flowhash Proto Recv-Q Send-Q  Local Address      Foreign Address    (state)    
[...]
ffffff8024040d88 c23b1438 tcp4       0      0  •••.My_IP.••.50929 17.149.36.133.5223 ESTABLISHED
ffffff8022ef8d88 31793d40 tcp4       0    106  •••.My_IP.••.50604 17.149.32.8.5223   FIN_WAIT_1 
ffffff8022cc2d88 c977e8ee tcp4       0    143  •••.My_IP.••.50491 17.172.232.142.522 FIN_WAIT_1 
[...]

Wiederholt ungültige Zertifikate

Alle 90 Minuten apsdwird mitgeteilt, dass ein Zertifikat nicht erkannt werden kann. Ein großes grepProtokoll system.logzeigt diesen wiederholten Fehler an:

$ zgrep apsd /var/log/system.log.[0-6].gz
[...]
/var/log/system.log.0.gz:May 25 00:48:01 ••.My_name.My_domain.•• apsd[106]: Unrecognized leaf certificate
/var/log/system.log.0.gz:May 25 02:18:22 ••.My_name.My_domain.•• apsd[106]: Unrecognized leaf certificate
/var/log/system.log.0.gz:May 25 03:48:44 ••.My_name.My_domain.•• apsd[106]: Unrecognized leaf certificate
[...]

Dazugehörige Dokumentation

Ich habe hier den Weg gefunden, diesen Daemon zum Schweigen zu bringen:

Wie deaktiviere ich den Apple Push Notification Service (apsd) unter OS X 10.8?

Ich habe hier keine Erklärung gefunden, wie dieser Daemon funktioniert, wie er gestartet oder gestoppt wird:

man apsd

Ich habe hier eine korrekte Erklärung für das Verhalten beim apsdAnzeigen eines falschen Zertifikats gefunden:

Unerkanntes Blattzertifikat .

Fragen

Dieser Daemon verhält sich eindeutig schlecht und ist typisch für viele Sicherheitsprobleme (schlechte Verbindung, schlechte Zertifikatsvalidierung, Datenleck …).

Wie soll dieser Dämon funktionieren?
Für welchen Dienst ist es nützlich?
Funktioniert dieser Daemon mit diesen wiederholten Fehlverhalten?
Wie kann ich es überprüfen?
Wie könnte ich diesen sich schlecht benehmenden Daemon gefeuert haben?
Und schließlich, sollte ich es nicht endgültig stoppen?

→ George: Danke für deine Verbesserungen :). Können Sie mir sagen, warum etwas so Dummes wie <code>keine saubere Ausgabe von Befehlszeilen und Protokolldateien erzeugt?

Antworten (1)

Der Dienst wird verwendet, um Ihnen Push-Benachrichtigungen zuzustellen. Push-Benachrichtigungen werden normalerweise in der Benachrichtigungszentrale oben rechts auf Ihrem Desktop angezeigt. Lesen Sie hier mehr darüber:

http://support.apple.com/kb/ht5362

Wenn Sie den Dienst deaktivieren, verlieren Sie wahrscheinlich Benachrichtigungen für Ereignisse wie empfangene iMessage-Nachrichten, Facetime-Anrufe und Benachrichtigungen von Websites, von denen Sie Benachrichtigungen angefordert haben.

Nach dem, was Sie schreiben, scheint es keinen gewichtigen Grund zu geben, es zu deaktivieren. Es ist ein normaler Systemdienst, der kein Problem für Ihr System darstellen sollte.

Die Verbindungen im Zustand FIN_WAIT_1 stellen kein Problem für Ihr System dar. Sie können es getrost ignorieren (in diesen Zahlen).

Sie können die Protokollmeldung auch ignorieren. Die Protokollmeldung weist nicht darauf hin, dass es ein „Datenleck“ als solches gegeben hat.

Der Grund für die Protokollmeldung ist, dass Apple eine große Anzahl von Servern zum Senden Ihrer Push-Benachrichtigungen verwendet. Ihr Computer stellt eine Verbindung zu einem (etwas) zufälligen dieser Server her. Der Server präsentiert ein generisches Zertifikat für den Dienst und kein Zertifikat, das genau auf den „Sub-Server“ zugeschnitten ist, mit dem Sie sich verbunden haben. Das ist die Ursache der Log-Meldung. Dies ist etwas, das Apple auf seinen Servern beheben muss, aber es ist ein bekannter Fehler, gegen den Sie selbst nichts unternehmen können.

Dies bedeutet nicht, dass Sie die Verschlüsselung oder ähnliches verlieren, aber es könnte bedeuten, dass Ihr System anfällig für einen Man-in-the-Middle-Angriff sein könnte, bei dem Sie gefälschte Push-Benachrichtigungen erhalten könnten. Ob dies tatsächlich der Fall ist, würde weiterer Forschung bedürfen. Es ist sehr wahrscheinlich, dass Apple eine Art Zertifikat-Pinning oder ähnliches verwendet hat, um diese Art von Exploit zu vermeiden. Die Wahrscheinlichkeit, dass Sie auf diese Weise angegriffen werden, ist ohnehin ziemlich gering. Dh mach dir keine Sorgen.

Ich verstehe nicht, warum Sie sagen, der Dämon benimmt sich "schlecht". Es verhält sich auf Ihrem Computer nicht mehr schlecht als auf jedem anderen Computer. Man könnte sagen, dass es sich schlecht benimmt, aber es geschieht durch Apples Design. Erstellen Sie stattdessen Fehlerberichte mit Apple, um sie wissen zu lassen, dass Sie ein Problem sehen.

Wenn Sie Push-Benachrichtigungen für nichts verwenden, können Sie sie natürlich sicher deaktivieren.

apsderkennt ein ungültiges Zertifikat. Dann handelt dieser Daemon auf eine von zwei Arten: 1) er akzeptiert ein ungültiges Zertifikat (das ist schlecht und öffnet es für leichte Angriffe), 2) er akzeptiert kein ungültiges Zertifikat und sendet klare Daten (das ist schlecht : Datenleck). Das ist nicht nur ein Fehler .
Ich habe versucht, dies in meiner ursprünglichen Antwort zu schreiben, aber Ihre Annahme, dass das Programm auf eine dieser beiden Arten funktionieren muss, ist fehlerhaft. Es gibt einfach mehr Optionen als diese beiden, und deshalb habe ich geschrieben, dass Sie mehr darüber recherchieren müssen, wie das Programm tatsächlich funktioniert, weil Sie sagen können, dass es einen "einfachen Angriff" gibt. Die Idee, dass es die Daten im Klartext sendet, ist sehr unbegründet - das wäre äußerst unwahrscheinlich. Wenn Sie ein Programm haben, das sich über ein Zertifikat beschwert, und Sie die Verbindung trotzdem erzwingen, wird sie normalerweise immer noch verschlüsselt - Sie sind "nur" nicht sicher, mit wem Sie sprechen.
Wie ich in meiner ursprünglichen Antwort angedeutet habe, gibt es mehr Optionen als nur die beiden, die Sie auflisten. Eine davon könnte sein, dass das Programm Certificate Pinning verwendet (dh das Programm prüft aktiv, ob es sich bei dem vom Server vorgelegten Zertifikat um ein bestimmtes Zertifikat handelt). Eine andere Möglichkeit ist, dass das Setup eine längere Kette von Zertifikaten als gewöhnlich verwendet. Das heißt, Sie hätten eine CA, ein Zertifikat für den Dienst (was dort normalerweise halt ist) - und dieses Zertifikat hätte dann zum Signieren von Zertifikaten für die einzelnen Server verwendet werden können. Dieses Blattzertifikat würde nicht validieren, aber der Rest der Kette würde es tun.
Wie der Rest der Kette bestätigt, sind Sie sicher, dass Sie mit einem Apple-Server sprechen - Sie würden nur nicht sicher wissen, welcher. Das ist "gut genug" - aber noch einmal, ich nenne dies als Möglichkeiten - nicht wie es tatsächlich gemacht wird. Sie müssen das spezifische Programm recherchieren, um diese Informationen zu erhalten.