Perché i sistemi operativi non proteggono da tastiere USB non affidabili?

48

Ultimamente ho letto cose come BadUSB e RubberDucky che sono essenzialmente chiavette USB che dicono al computer che sono una tastiera. Una volta collegati, "digitano" i comandi che gli è stato richiesto di eseguire. La mia domanda è, perché le tastiere sono automaticamente attendibili in quasi tutti i sistemi operativi? Ad esempio, se un sistema operativo rileva una nuova tastiera collegata, perché non fa apparire una richiesta di password e non consente a quella tastiera di fare nulla finché non immette la password? Non sembra che questo creerebbe un sacco di problemi di usabilità. C'è una ragione per cui questa o un'altra misura di protezione non viene utilizzata?

    
posta trallgorm 04.02.2016 - 15:47
fonte

6 risposte

62

Il modello di affidabilità per un dispositivo che colleghi al tuo computer è solo intrinsecamente difficile. Lo standard USB è stato creato per consentire a chiunque di creare un dispositivo USB. La sicurezza non era un fattore. Anche se lo fosse, dove posizioni la fiducia? L'industria cinematografica ha provato questo modello con HDMI, ed è essenzialmente fallito miseramente. Non puoi contemporaneamente dare a qualcuno un dispositivo che fa qualcosa, e impedirgli di capire come fare la stessa cosa.

Il tuo esempio propone di mettere la fiducia nell'utente. Il problema più ovvio è che nessuno vuole digitare le password solo per usare una tastiera. Escludendo, risolverebbe davvero qualcosa?

L'utente già si fida del dispositivo, altrimenti non lo collegherebbe al proprio computer. Poiché la fiducia è già stata stabilita, perché non dovrebbero semplicemente fare tutto ciò che è necessario per farlo funzionare?

    
risposta data 04.02.2016 - 16:07
fonte
20

Per cominciare, le tastiere tendono ad essere attendibili molto prima nel processo di avvio rispetto al sistema operativo - se si dispone di una password del BIOS o di un codice Bitlocker, la si inserirà prima del caricamento del sistema operativo, utilizzando la tastiera . In effetti, una tastiera particolarmente dannosa potrebbe fare praticamente qualsiasi cosa per impedire al sistema operativo di caricare, fino a, e probabilmente includendo, fingere di essere un'unità avviabile e avviare un rootkit prima di far partire il sistema operativo.

Potresti anche estendere le stesse regole ai topi (potrebbero fare clic su un set predefinito di punti per aprire la tastiera virtuale, quindi digitare quello che preferiscono).

In alternativa, potresti decidere di utilizzare solo i dispositivi di cui ti fidi e accettare il rischio ridotto che accadano cose brutte.

    
risposta data 04.02.2016 - 16:02
fonte
7

La risposta è Usabilità

Come dovrebbe l'utente dare il consenso sul fatto che il mouse / la tastiera siano attendibili? Con la tastiera / il mouse potrebbe essere dannoso? Come gestisci il caso quando si deve sostituire / sostituire la tastiera? Specialmente nello scenario server hai più tastiere / mouse salvati da qualche altra parte e ottieni il meglio successivo quando hai bisogno di un accesso fisico al server. Non ricorderai quale tastiera apparteneva a quale server dopo mesi / anni e la tastiera potrebbe persino essere distrutta. Come usare la tastiera sostitutiva? Dai il tuo consenso con la tastiera sconosciuta? Come fare questo con la prima tastiera? Diciamo che provi un nuovo PC di un amico e usi la tua tastiera e poi la dai al tuo amico. Come dovrebbe dare il consenso alla sua tastiera? Modifica: potresti chiedere una password prima del primo utilizzo, ma guarda il mio ma ultimo paragrafo.

Quindi fondamentalmente la domanda non risolta è: Come può il computer stabilire una connessione affidabile / sicura all'utente che non può essere simulato / aggirato da altro hardware / software / cattivo ragazzo / ... in un modo facile modo utilizzabile?

La regola 3 delle 10 leggi immutabili sulla sicurezza informatica è la seguente: "Se un ragazzo cattivo ha accesso fisico illimitato al tuo computer, non è più il tuo computer". Se metti una BadUSB da un cattivo, sei il servitore del cattivo e gli dai l'accesso fisico per delega. Si noti che ci sono simili attacchi peggiori rispetto a una cattiva USB. Ad esempio, l'inserimento di un dispositivo da un cattivo in una FireWire o altra interfaccia DMA gli consente di leggere / scrivere qualsiasi memoria e di eseguire qualsiasi codice e persino di bloccare schermate di Windows / Linux / Mac. Quindi meglio non mettere mai un dispositivo non affidabile nel tuo computer.

Modifica: a causa di questa regola e di tali attacchi non si pensava a quando si pensava allo standard (la sicurezza fisica era meno importante in quel momento, tranne nei casi in cui l'accesso fisico era limitato comunque), qualcosa come non veniva mai parte dello standard . C'erano già molti attacchi più facili con accesso fisico, quindi non valeva la pena di considerare un caso così piccolo. Avrebbe notevolmente aumentato la complessità del sistema, specialmente se l'autorizzazione deve essere condivisa tra più sistemi operativi e il BIOS ( "Premere F10 per BIOS") e quanti da memorizzare. Il problema successivo si pone quando si decide dove visualizzare la password, soprattutto se vengono rilevati più monitor come uno schermo di un laptop difettoso. Tutto ciò avrebbe anche avuto un impatto negativo sull'accettazione da parte degli utenti e uno standard più semplice da utilizzare potrebbe invece diventare lo standard. Dal momento che i dispositivi sono prodotti da aziende economiche che lavorano con maggiore complessità (= costo) e minore accettazione (meno pezzi venduti), questa custodia sottile non sarebbe stata importante in quel momento.

Sul mercato esiste un software specializzato che consente di definire dispositivi USB affidabili per ambienti aziendali ad alta sicurezza, ma a causa dei punti che ho citato non è di ampio utilizzo.

    
risposta data 04.02.2016 - 18:25
fonte
1

La domanda sembra sempre essere tra sicurezza e convenienza. Con gli attacchi HID, l'equilibrio sembra essere favorevole a causa dell'accesso fisico necessario per questi attacchi. Ovviamente questo potrebbe essere implementato ma non sembra esserci la necessità di farlo al momento, perché aggiungere codice aggiuntivo e problemi se la minaccia è minima al momento.

    
risposta data 04.02.2016 - 15:56
fonte
1

Il sistema operativo non sa nulla del mondo al di fuori di se stesso. È naturalmente progettato per fidarsi dell'hardware, perché non ha modo di verificare se l'hardware esiste realmente. Infatti, se dovessi confrontare il concetto di un sistema operativo in esecuzione su hardware per il film The Matrix , dovresti praticamente essere perfetto. Il sistema operativo è semplicemente una raccolta di byte che vengono eventualmente elaborati dall'hardware. Può essere eseguito su un pezzo di hardware reale, virtualizzato con altri sistemi operativi che sono ugualmente inconsapevoli l'uno dell'altro o addirittura distribuiti fisicamente su più unità hardware che agiscono come un insieme coeso. L'unico vero requisito è che l'hardware funzioni in modo coerente con il modo in cui il sistema operativo ritiene che dovrebbe comportarsi.

Alla fine della giornata, il sistema operativo non può esistere senza l'hardware ed è totalmente dipendente dall'hardware per dire la verità. Mentre alcuni progressi sono stati fatti verso la realizzazione di sistemi più sicuri (ad es. Quando hanno iniziato a limitare il modo in cui i bus PCI possono usare DMA), questi sono ancora in gran parte soluzioni hardware per la sicurezza. Il sistema operativo può rifiutare l'input da dispositivi USB, ma non può determinare in modo affidabile cosa sia un dispositivo USB esaminandolo, perché il dispositivo può mentire. Può identificarsi come qualsiasi cosa voglia e il sistema operativo non può fare nulla al riguardo. Qualsiasi verifica dell'hardware dovrebbe provenire da più hardware. Tutto il sistema operativo sa che sta ricevendo un segnale su un bus noto conforme a un protocollo noto. Ad esempio, potresti facilmente emulare quello usando qualsiasi altro tipo di software in esecuzione su un hypervisor; il sistema operativo non può dire la differenza.

Possiamo certamente fare cose per rendere le cose più difficili per software dannoso, come richiedere un certo tipo di chip di crittografia con chiavi asincrone, magari usando un sistema di chiavi nere / lista bianca, che proteggerebbe da azioni casuali di malizia, ma sarebbe solo ostacolare lo sviluppo e aumentare il costo del nuovo hardware, frustrare i consumatori e bloccare la concorrenza che non è in grado di accedere alla whitelist o è addirittura bloccato attivamente da una lista nera. Non esiste una soluzione perfetta al problema e qualsiasi soluzione ragionevole dovrebbe essere eseguita a livello hardware, dal momento che il sistema operativo non può determinare facilmente se l'hardware è quello che dice di essere.

    
risposta data 06.02.2016 - 07:48
fonte
-14

Il mio motto del software è 3-D:

  • apertura
  • Divisione
  • Dominio

Ogni componente DEVE fare ciò che deve fare e niente extra / else , perché non ti aspetti che il tuo frigorifero apra la tua birra. Il sistema operativo deve fornire un ambiente unificato e la coerenza dell'API. Inclusa per la protezione effettiva da cattiva usb , ma la protezione stessa deve essere un modulo, un'estensione basata su API comunemente accettate. Questo è tutto - è una domanda architettonica.

    
risposta data 04.02.2016 - 22:38
fonte

Leggi altre domande sui tag