Cosa succede se il Local Cert Store di Windows è compromesso?

1

Il diagramma di seguito illustra il concatenamento di certificati digitali fino a un certificato di root pubblicamente attendibile:

Ho svolto ricerche su come le autorità di root di fiducia (come GlobalSign o Verisign) sono utilizzate per autenticare le chiavi pubbliche di qualcuno per identificare quella persona come un editore affidabile. Penso che mi manchi qualcosa, per favore fatemi sapere se sto fraintendendo qualcosa qui.

Quindi la firma digitale implica l'hashing di alcuni dati (digest di messaggi) con la chiave privata di un editore attendibile. I consumatori di tali dati possono utilizzare la chiave pubblica corrispondente del publisher di fiducia per verificare i dati con hash. La verifica della chiave pubblica del publisher attendibile (certificato) fino a un'autorità di radice attendibile stabilisce la fiducia che l'editore fidato è chi dicono di essere, corretto?

Affinché questa catena di fiducia funzioni, capisco l'importanza di mantenere private le chiavi private. Ma non riesco a vedere come questo offre fiducia o sicurezza su una macchina compromessa.

Supponiamo che io sia un malintenzionato che sta tentando di falsificare un utente su una macchina di cui sono già al comando. Come ogni buon malware, voglio che l'utente pensi che ciò che stanno facendo sia affidabile. Quindi sembra che tutto ciò che devo fare sia eliminare tutti i certificati validi rilevanti nell'archivio certificati di Windows di CA di fiducia e sostituirli con certificati autofirmati falsi che sembrano essere validi. Potrei anche ricreare una catena di certificati affidabili, come nell'immagine sopra.

Questo non sembra ancora troppo per me. Quindi, per completare lo spoof, avrei dovuto intercettare i dati validi e firmarlo di nuovo con il mio falso certificato dell'editore, "fidato" fino alla "CA radice". Questo sembra molto più semplice del furto della chiave privata di un editore.

EDIT: C'è un modo per proteggersi da un attacco così mirato? Per la mia applicazione molto specifica, ho bisogno di sapere con certezza che un certificato è affidabile, ma potrebbe non essere possibile su una macchina compromessa.

    
posta miesch1 16.07.2015 - 18:47
fonte

2 risposte

3

Questo compromette seriamente la sicurezza. Non ci sono ifs, ands o buts a riguardo: se hai CA di cui il tuo computer si fida ma non sono quelle reali, tutto ciò che si basa sullo store del sistema operativo non funzionerà (credo che Firefox abbia un proprio archivio di certificati, ma poi che deve rimanere sicuro). Vedere: la debacle di Superfish, in cui il problema era che un produttore di hardware ha aggiunto un certificato nell'archivio di certificati di Windows e ha incluso anche la chiave privata sul software di annunci fornito con il computer.

Il motivo per cui questo non è un problema in pratica non è che sia facile mitigarlo; è che in realtà non permette a un aggressore di fare qualcosa che non potrebbero fare comunque. La modifica dell'archivio certificati per un utente richiede l'accesso all'account dell'utente o a un account amministrativo. La modifica dell'archivio dei certificati a livello di sistema richiede l'accesso a un account amministrativo. Su una macchina in cui un utente malintenzionato ha questo livello di privilegio, può già accedere a qualsiasi cosa stia facendo il tuo account utente. Un utente malintenzionato con un compromesso a livello di amministratore può semplicemente installare un keylogger e un visualizzatore di schermate.

Qualunque sistema di sicurezza ha un modello di minaccia, che è lo scenario di attacco per cui è stato progettato per difendersi. Un client compromesso non fa parte del modello di minaccia TLS: il modello pone solo un utente malintenzionato in grado di manipolare il traffico di rete (incluso il reindirizzamento verso le proprie macchine per offrire contenuti non validi). TLS non è destinato a proteggere contro una macchina compromessa alle due estremità, né è in grado di farlo.

In generale, è estremamente difficile (o forse teoricamente impossibile) raggiungere la sicurezza su una macchina compromessa. L'approccio corretto è quello di prevenire un compromesso o rilevarlo e gestirlo, non tentare di raggiungere la sicurezza nonostante ciò.

    
risposta data 16.07.2015 - 22:21
fonte
0

Usa RCC

Su Windows, c'è un piccolo strumento di scansione del certificato di root chiamato RCC che puoi usare per rilevare se il tuo root store è stato compromesso. Ciò non impedirà l'inserimento di un certificato dannoso, ma a fini di rilevamento va bene.

risposta data 22.07.2015 - 21:30
fonte

Leggi altre domande sui tag