Il server può rilevare quando un client ha disabilitato il blocco dei certificati?

2

Molte applicazioni mobili impongono il blocco dei certificati per rendere difficile un attacco man-in-the-middle. Tuttavia, con un dispositivo jailbroken / rooted, è possibile disabilitare il pinning del certificato sul client. Ad esempio, utilizzando SSL Kill Switch su iOS.

Una domanda precedente ha chiesto come " impedire bypassare il blocco dei certificati". Capisco quanto la prevenzione sia effettivamente impossibile, dal momento che finché il client si radica sul dispositivo client, qualsiasi prevenzione è limitata a "sicurezza per oscurità" e ridotta a giocare a un gioco di gatto e topo.

Tuttavia, mi interessa sapere se è possibile rilevare , dal lato server, quando un client ha disabilitato il blocco dei certificati.

In particolare:

1) È possibile, utilizzando solo la funzionalità SSL di basso livello, rilevare quando il blocco del certificato è stato disabilitato dal client?

2) Se non è possibile con funzionalità SSL di basso livello, ci sono alcune informazioni che il server potrebbe richiedere al client per dimostrare che il blocco dei certificati rimane abilitato?

    
posta pandemic 17.05.2016 - 19:05
fonte

1 risposta

4

No, non è possibile determinare lo stato del pinning SSL sul client. Il blocco SSL fa parte della convalida del certificato eseguita esclusivamente all'interno del client e l'unico feedback ricevuto dal server è se la convalida è riuscita (la connessione continua) o meno (connessione chiusa, forse avviso TLS).
Inoltre non c'è nulla di completamente affidabile che il server possa "chiedere" al cliente sullo stato del pinning perché non ci si può aspettare una risposta vera da un'applicazione che gira su un dispositivo completamente controllato dall'attaccante.

Ma si può rendere più difficile disabilitare il pinning non rilevato. Se si sta creando un'applicazione e si desidera rilevare se il blocco è disattivato, è possibile che si effettuino connessioni a due host diversi. Per uno degli host si prevede un certificato valido e bloccato e per l'altro un certificato valido ma non appuntato. Se entrambe le connessioni riescono, è possibile concludere che qualcuno ha manomesso il blocco. Ovviamente se l '"attaccante" conosce questo comportamento dell'applicazione, può aggirare il rilevamento ma senza la consapevolezza diventa più difficile. E schemi più complessi (e forse anche dinamici) come questo dovrebbero essere possibili per renderlo ancora più difficile.

Ma la domanda rimane ciò che ottieni sapendo se il blocco è disabilitato o meno. Se ti assicuri che il blocco non sia possibile, potresti scoraggiare l'uomo nel mezzo di annusare. Ciò lascia ancora l'opzione per annusare i dati all'interno dell'applicazione, vale a dire prima che vengano crittografati e dopo che sono stati decifrati. Ciò significa analizzare e persino modificare i dati è ancora possibile da parte di un utente malintenzionato nel controllo del dispositivo.

    
risposta data 17.05.2016 - 19:15
fonte