Utilizzo di una macchina virtuale come buffer tra il supporto USB e il sistema operativo

2

Sono stato indirizzato qui da Unix & Sito Linux. Ho esaminato alcune delle domande correlate, ma sembrano essere più preoccupate se un SO guest possa accedere al SO host in qualche modo. Dal momento che non sembra molto probabile, ti parlerò delle mie esigenze.

Quando l'utente mette una chiavetta USB in una porta USB, il sistema dovrebbe scaricare automaticamente i dati su una macchina virtuale, eseguire alcune analisi, scansione antivirus, cosa no. Dopodiché, il carico utile dovrebbe essere reso disponibile per il sistema operativo host.

In anticipo il SO guest dovrebbe essere completamente isolato dall'host, quindi nessun accesso dalla rete, nessun drive mappato, niente. Ma dopo che l'elaborazione è avvenuta con successo, l'host dovrebbe trovare un modo per ottenere l'accesso al payload. Oltre a distruggere la VM.

Hai idee su come implementare questo tipo di cose, sapere eventuali soluzioni esistenti o altri approfondimenti?

Aggiornamento: Quindi questa sembra una soluzione fattibile (e non del tutto folle), ma c'è un altro problema. Come implementare effettivamente la comunicazione tra il sistema operativo guest e il sistema operativo host.

La soluzione più ovvia è un approccio basato sulla rete, ma a causa dei requisiti di isolamento questo non può essere considerato realmente. Quindi quali altri approcci ci sono?

    
posta Kayaman 25.09.2013 - 10:48
fonte

2 risposte

1

Penso che questa soluzione di sicurezza potrebbe funzionare se implementata correttamente.

Chiaramente il sistema operativo host potrebbe ignorare l'ospite in qualsiasi momento, ma in questo caso stanno lavorando insieme. Il caso generale è che il demone auto-mount deve funzionare con il SO guest per controllare il dispositivo. Ogni gestore di finestre avrà il proprio modo di montare automaticamente i dispositivi. È possibile disabilitare questa funzione e sostituirla con un daemon di montaggio automatico che puoi agganciare. In questo gancio si desidera eseguire un'azione prima di montare il dispositivo. (Penso che Halevt potrebbe essere la scelta migliore, ma dovresti guardare gli altri demoni auto-mount elencati)

    
risposta data 25.09.2013 - 18:34
fonte
1

È necessario garantire le seguenti proprietà:

  • il software della macchina virtuale e tutto ciò su cui si basa (sistema operativo host, hardware) è privo di errori;
  • la macchina virtuale è configurata per l'isolamento: nessuna condivisione di unità, nessuna condivisione di appunti, nessuna connessione di rete, ...;
  • non vi è alcun processo sull'host che possa collaborare con software dannoso nel guest;
  • non vi è alcuno snooping fisico ostile sull'host.

Assumendo queste condizioni, il software sul guest è isolato. Può ficcare il naso sull'host attraverso il canale laterale (principalmente tramite misurazioni temporali), ma non sarà in grado di segnalarlo.

Per mantenere l'isolamento, fornire una nuova VM in cui il contenuto della memory stick è reso disponibile all'ospite. Non è necessario l'accesso diretto alla memory stick, è possibile effettuare una copia nella memoria interna (ma è anche possibile rendere disponibile la memory stick all'ospite, se lo si desidera).

Si noti che ciò che sembra una memory stick potrebbe non essere una memory stick. Ad esempio ci sono dispositivi che assomigliano a una memory stick USB, ma in realtà contengono un hub e non solo una memory stick ma un dispositivo che si dichiara come una tastiera, o come USB al bridge Firewire.

Dalla descrizione non è chiaro se il carico utile che si desidera rendere disponibile all'ospite siano i dati memorizzati sulla memory stick o i dati calcolati nell'ospite. In quest'ultimo caso, è possibile organizzare l'host per leggere i dati dall'ospite senza passare attraverso il software guest. Organizzare l'ospite per scrivere su un disco non elaborato o utilizzare il supporto del file system ospite come quello fornito da libguestfs . Si noti che l'elaborazione eseguita dall'ospite potrebbe essere stata influenzata dall'esecuzione in una macchina virtuale, ad esempio un malware sofisticato tende a rilevare che è in esecuzione in una VM e quindi non si rivela.

    
risposta data 26.09.2013 - 17:37
fonte

Leggi altre domande sui tag