Il file di scambio potrebbe contenere dati sensibili

12

È possibile che il file di scambio conterrà blocchi di dati da un file a cui hai avuto accesso e potrebbe essere rilevato durante un'analisi forense?

Come hai potuto evitare questa situazione?

L'uso di deep-freeze o software simile è una soluzione valida?

    
posta opc0de 19.01.2013 - 19:37
fonte

6 risposte

8

Sì, i file di scambio possono contenere dati sensibili.

Attivo Windows puoi configurare il file di paging (file di scambio) da cancellare allo spegnimento in questo modo:

  1. Inizia regedit32.exe
  2. Vai a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
  3. Imposta il valore dei dati di ClearPageFileAtShutdown in 1
  4. Se il valore non esiste, crealo con il tipo REG_DWORD e impostalo su 1
  5. Riavvia

Non so con certezza se si tratta di una cancellazione sicura dei dati di scambio, ma dal fatto che aggiunge minuti al processo di spegnimento e da testo nella pagina Microsoft su ClearPageFileAtShutdown :

Some third-party programs can temporarily store unencrypted (plain-text) passwords or other sensitive information in memory. Although clearing the paging file is not a suitable substitute for physical security of a computer, you might want to do this to increase the security of data on a computer while Windows is not running. "

Penso che i dati vengano cancellati in modo sicuro.

Su Linux puoi cancellare manualmente la partizione di swap:

  1. Visualizza dettagli dello scambio: swapon -s
  2. Smonta la partizione di swap: swapoff -a
  3. Sovrascrivi con zeri: dd if=/dev/zero of=/dev/sdaX bs=1024
  4. Ottieni l'UUID della vecchia partizione di scambio da /etc/fstab
  5. Crea una nuova partizione di swap con quel UUID: mkswap /dev/sdaX -U <old_uuid> 1024
  6. Montalo per l'utilizzo: swapon -a

Strumenti di pulizia migliori sono forniti dal pacchetto Secure-Delete fornito con i seguenti comandi:

  • srm (rimozione sicura) - utilizzato per eliminare file o directory attualmente sul disco rigido.
  • smem (Wiper memoria sicura) - usato per cancellare tracce di dati dalla memoria del tuo computer (RAM).
  • sfill (Wiper spazio libero sicuro): utilizzato per cancellare tutte le tracce di dati dallo spazio libero sul disco.
  • sswap (Secure swap wiper) - utilizzato per cancellare tutte le tracce di dati dalla partizione di swap.

Sswap è progettato per eliminare i dati che potrebbero giace ancora sul tuo swappace in modo sicuro che non può essere recuperato da ladri, forze dell'ordine o altre minacce.L'algoritmo di cancellazione si basa sul documento " Cancellazione sicura dei dati dalla memoria magnetica e allo stato solido "presentata al 6 ° Simposio sulla sicurezza di Usenix da Peter Gutmann, uno dei principali crittografi civili.

    
risposta data 19.01.2013 - 19:59
fonte
7

Is it possible that the swap file will contain chunks of data by a file you have accessed, and could this be detected during a forensics analysis?

Sì, lo è. Inoltre, potresti essere in grado di leggere alcune password, chiavi di crittografia e altri dati sensibili / privati.

How could you prevent this situation ?

È possibile disabilitare lo scambio di memoria per un particolare spazio di indirizzi virtuali in un processo utilizzando alcune chiamate specifiche del sistema operativo:

Altri sistemi operativi moderni forniranno funzionalità simili. Tuttavia, i dati non vengono generalmente rimossi dalla memoria fisica (come la RAM) quando si spegne il PC, e possono ancora essere recuperati utilizzando un freddo -staccare l'attacco .

    
risposta data 19.01.2013 - 21:56
fonte
2

Usando Linux, puoi garantire che strumenti sensibili come PGP non vengano scambiati, usando la memoria protetta.

Ma devi configurare lo script di pre-ibernazione per eliminare tutti gli strumenti sensibili e smontare tutti i filesystem criptati!

    
risposta data 19.01.2013 - 19:49
fonte
2

Se si sta codificando, molte lingue "non gestite" supportano (richiedono) la possibilità di eliminare la memoria allocata dinamicamente. Se vuoi essere veramente sicuro, di solito puoi anche impostare il valore di detta memoria su tutti gli zeri, o su qualcosa che non è utile per un utente malintenzionato (dati casuali, "Tutto lavoro e niente gioco ...", ecc.)

Nei runtime della memoria gestita come JVM o CLR, non hai questo controllo; il garbage collector controlla se il codice in esecuzione ha ancora riferimenti all'oggetto e, in caso contrario, lo pianifica per la raccolta. Il processo di marcatura e la risultante liberazione della memoria e la riorganizzazione dell'heap si verificano quando il runtime pensa che potrebbe essere un buon momento per ripulire, non quando si sa che qualcosa dovrebbe essere ripulito. In questi ambienti, di solito c'è una struttura fornita appositamente per gestire i dati sensibili.

In .NET, il tipo principale per queste cose è chiamato SecureString e ha diversi vantaggi rispetto al System.String di base:

  • SecureString è mutabile, diversamente da String che, sebbene sia un tipo di riferimento, è considerato immutabile; ogni volta che viene assegnata una variabile stringa, viene creato un nuovo oggetto String nell'heap, il che significa che quando si lavora con dati sensibili, molte copie dfferenti di tali dati possono esistere nello heap contemporaneamente. SecureString gestisce tutte le manipolazioni di se stesso all'interno di un singolo spazio di memoria nell'heap.
  • I dati conservati in SecureString vengono crittografati in ogni momento, quindi anche se viene lasciato in giro, l'utente malintenzionato dovrebbe anche accedere al contenitore di chiavi memorizzato nella memoria non gestita protetta.
  • L'oggetto è derivato da una famiglia di classi base che lo identifica come "finalizzatore critico"; fino a quando il CLR ha voce in capitolo, il finalizzatore, che nel caso di SecureString rimuove tutti i dati sensibili dalla memoria, sarà eseguito quando l'oggetto esce dall'ambito.

  • L'utente può cancellare in modo sincrono lo stato dei dati di SecureString chiamando Clear (). Questo accade anche se l'utente utilizza l'interfaccia incorporata IDisposable, o se non viene ripulito dall'utente, quando l'oggetto è finalizzato dal garbage collector, ma l'utente è incoraggiato a usare Clear () o Dispose () per ripulire memoria esattamente nel momento in cui l'utente è sicuro che non ne avrà più bisogno.

In tutti i casi, i dati sensibili devono essere conservati come testo normale nella memoria per il minimo tempo possibile prima della rimozione. Se può essere mantenuto crittografato per la maggior parte del tempo, e solo decrittografato in testo normale quando necessario (come consente SecureString), è grandioso.

    
risposta data 22.01.2013 - 00:50
fonte
1

Quasi tutto ciò che passa attraverso la RAM può finire nello spazio di swap. (L'eccezione principale è la memoria del kernel, che non può essere scambiata sulla maggior parte dei sistemi operativi.Alcuni sistemi operativi consentono alle applicazioni di richiedere memoria non riscrivibile, ma questo è di per sé un problema di sicurezza, in quanto un'applicazione potrebbe immagazzinare la memoria fisica.)

Pertanto, se il tuo sistema manipola dati riservati e c'è il rischio che un utente malintenzionato possa accedere al suo spazio di archiviazione (ad esempio rubando il computer), devi proteggere lo spazio di swap crittografandolo (e non con una chiave memorizzata) sul sistema, ovviamente).

Un modo sicuro per crittografare il tuo swap è usare una chiave casuale. Alcuni sistemi operativi hanno un'opzione per impostarlo automaticamente al momento dell'installazione (ad es. Debian). Questo ha il rovescio della medaglia che non è possibile utilizzare lo spazio di swap per ibernare.

Se vuoi che sia possibile ibernare e mantenere la riservatezza contro gli aggressori che potrebbero rubare il tuo supporto di memorizzazione, crittografare lo spazio di swap con una chiave derivata da una password complessa o con una chiave memorizzata in un dispositivo esterno (come una smart card) che non lasci sul sistema. Dovrai essere presente fisicamente per inserire la chiave all'avvio del sistema.

    
risposta data 21.01.2013 - 01:03
fonte
0

È a mia conoscenza che la crittografia della sola partizione di swap può causare problemi se si sospende / si iberna il laptop. Questo ha a che fare con il fatto che la chiave di crittografia non è disponibile per sbloccare la partizione di swap quando si riprende il portatile.

Poiché ho un vecchio portatile con solo due gigabyte di memoria e un processore Intel Centrino Duo eseguo Lubuntu 16.04.1 e non criptico l'installazione sull'HDD. Tuttavia, ho impostato una password HDD all'avvio nel BIOS. Qualsiasi informazione sensibile che tengo su questo laptop è in un volume veracrypt che ha una passphrase molto lunga.

Io uso la seguente procedura per cancellare la mia partizione di swap su questo portatile quando lo porto fuori di casa nel caso in cui venga rubato. Non probabile considerando la sua età, ma meglio prevenire che curare.

Per determinare il nome del file di scambio:

  1. da fstab:

    swapon -a
    eg.  /dev/hda5
    
  2. Se disponi di un volume LVM (ho configurato il mio disco rigido utilizzando LVM):

    swapon --show
    

    Ad esempio:

    NAME      TYPE      SIZE USED PRIO
    /dev/dm-1 partition   2G   0B   -1
    

Per cancellare la partizione di swap:

  1. sudo swapoff /dev/dm-1
  2. sudo dd if=/dev/zero of=/dev/dm-1 o sudo dd if=/dev/urandom of=/dev/dm-1
  3. sudo mkswap /dev/dm-1
  4. sudo swapon /dev/dm-1
risposta data 21.10.2016 - 10:57
fonte

Leggi altre domande sui tag