Recentemente ( maggiori informazioni ) ho notato uno strano messaggio in i log della mia installazione recente e recente di OS X Mavericks 10.9.2
Apr 27 15:26:47 Ivans-MacBook-Pro.local apsd[194]: Unrecognized leaf certificate
Appare ogni 15 minuti circa. L'ho cercato su google e ci sono molti altri utenti che hanno incollato i loro log (molte volte non correlati a quel problema) sulla rete che conteneva quel messaggio. Sembra che appaia da almeno sei mesi.
apsd è un demone del servizio di notifica push Apple di sempre in esecuzione
e si connette casualmente a uno dei seguenti server:
1-courier.push.apple.com
2-courier.push.apple.com
3-courier.push.apple.com
4-courier.push.apple.com
.
.
.
200-courier.push.apple.com
sulla porta 5223 (personalizzato, ma SSL )
ogni tanto (per verificare se ci sono aggiornamenti credo)
Cercando: collegamento nel browser indica tuttavia che esiste un problema correlato al certificato del server. Vale a dire "Questo certificato non è valido (mancata corrispondenza del nome host)" . Quale suppongo è perché Apple non ha creato un certificato compreso un carattere jolly nel nome comune. Tuttavia usando Wireshark vedo che la comunicazione tra apsd e il server di Apple continua. Io però, non può essere giusto. apsd ignora il controllo di validità?!
Poi ho provato a eseguire un attacco uomo nel mezzo utilizzando un certificato autofirmato. E questo è quello che ho ottenuto nei log:
Apr 27 15:42:07 Ivans-MacBook-Pro.local apsd[194]: CFNetwork SSLHandshake failed (-9807)
Apr 27 15:42:07 Ivans-MacBook-Pro.local apsd[194]: Failed to evaluate trust: No error. (0), result=5; retrying with revocation checking optional
Apr 27 15:42:07 Ivans-MacBook-Pro.local apsd[194]: failed to evaluate trust: No error. (0), result=5; retrying with system roots
Apr 27 15:42:07 Ivans-MacBook-Pro.local apsd[194]: Failed to evaluate trust: No error. (0), result=5
Apr 27 15:42:07 Ivans-MacBook-Pro.local apsd[194]: Untrusted peer, closing connection immediately
Vale anche la pena notare che ho notato (osservando il traffico reale con Wireshark) che il server richiede al client di inviare il suo certificato. E apsd invia:
Nome soggetto
Nome comune XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX (UUID)
Nome emittente
Paese Stati Uniti
Organizzazione Apple Inc.
Unità organizzativa Apple iPhone
Nome comune Dispositivo CA Apple iPhone
.
.
.
È strano che Mac OS X stia inviando quella che sembra una chiave pubblica presentandola come iPhone? Ho installato Xcode, se è in qualche modo collegato all'installazione di simulatori iPhone. Ma sto ricevendo il messaggio di registro menzionato tutte le volte, indipendentemente dal fatto che Xcode sia in esecuzione o meno. E evidentemente lo sono anche gli altri, a giudicare dai log su internet.
Quindi cosa sta succedendo?
In che modo apsd è in grado di capire il mio certificato falso e passare il loro?
C'è qualcosa di sbagliato qui?
Nota: l'implementazione del mio MitM è abbastanza semplice, con lo spoofing del DNS do a apsd una risposta che X-courier.push.apple.com è 127.0.0.1. Quindi ascolto con un certificato autofirmato che riproduce il certificato del server Apple (paese, organizzazione, nome comune ...). MA non ho implementato richiedendo il certificato client da apsd . Quindi non so ancora se questo è in qualche modo correlato al mio MitM fallito. Potrebbe essere?
Siete qui su Mac OS X ottenendo lo stesso messaggio di log nella vostra console (appare in "Tutti i messaggi" solo quando lo si avvia, ma in realtà è in system.log), digita "leaf" nella casella di ricerca ...
UPDATE:
Ho implementato la richiesta del client per il suo certificato. È lo stesso (errore SSLHandshake / Impossibile valutare la fiducia). Quindi apsd sta controllando qualcosa, non sono sicuro che sia implementato nel modo giusto. Speriamo che qualcuno con molta più esperienza esaminerà questo ...